[ 3.8.y.z extended stable ] Patch "Revert "zram: use zram->lock to protect zram_free_page() in swap free" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Wed Sep 18 20:01:15 UTC 2013

This is a note to let you know that I have just added a patch titled

    Revert "zram: use zram->lock to protect zram_free_page() in swap free

to the linux-3.8.y-queue branch of the 3.8.y.z extended stable tree 
which can be found at:


This patch is scheduled to be released in version

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.8.y.z tree, see



>From 97b6ac7b130b018610e263f6ed776eabf48bdc37 Mon Sep 17 00:00:00 2001
From: Kamal Mostafa <kamal at canonical.com>
Date: Wed, 18 Sep 2013 11:33:27 -0700
Subject: Revert "zram: use zram->lock to protect zram_free_page() in swap free
 notify path"

This reverts commit f56c0e44628257f97063089eb865d5eb2dfdd642.

BugLink: https://bugs.launchpad.net/bugs/1215513

f56c0e4 was identified as provoking the lockup bug noted above.

Cc: Jiang Liu <jiang.liu at huawei.com>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Luis Henriques <luis.henriques at canonical.com>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
 drivers/staging/zram/zram_drv.c | 2 --
 drivers/staging/zram/zram_drv.h | 5 ++---
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c
index 62f8276..dd915ce 100644
--- a/drivers/staging/zram/zram_drv.c
+++ b/drivers/staging/zram/zram_drv.c
@@ -622,9 +622,7 @@ static void zram_slot_free_notify(struct block_device *bdev,
 	struct zram *zram;

 	zram = bdev->bd_disk->private_data;
-	down_write(&zram->lock);
 	zram_free_page(zram, index);
-	up_write(&zram->lock);
 	zram_stat64_inc(zram, &zram->stats.notify_free);

diff --git a/drivers/staging/zram/zram_drv.h b/drivers/staging/zram/zram_drv.h
index 4265ab4..df2eec4 100644
--- a/drivers/staging/zram/zram_drv.h
+++ b/drivers/staging/zram/zram_drv.h
@@ -92,9 +92,8 @@ struct zram {
 	void *compress_buffer;
 	struct table *table;
 	spinlock_t stat64_lock;	/* protect 64-bit stats */
-	struct rw_semaphore lock; /* protect compression buffers, table,
-				   * 32bit stat counters against concurrent
-				   * notifications, reads and writes */
+	struct rw_semaphore lock; /* protect compression buffers and table
+				   * against concurrent read and writes */
 	struct request_queue *queue;
 	struct gendisk *disk;
 	int init_done;

More information about the kernel-team mailing list