]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
dm fixes from Jun'ichi Nomura at NEC, fwd from akpm
authorChris Wright <chrisw@sous-sol.org>
Sat, 25 Feb 2006 01:12:03 +0000 (17:12 -0800)
committerChris Wright <chrisw@sous-sol.org>
Sat, 25 Feb 2006 01:12:03 +0000 (17:12 -0800)
queue/dm-free-minor-after-unlink-gendisk.patch [new file with mode: 0644]
queue/dm-missing-bdput-thaw_bdev-at-removal.patch [new file with mode: 0644]
queue/series

diff --git a/queue/dm-free-minor-after-unlink-gendisk.patch b/queue/dm-free-minor-after-unlink-gendisk.patch
new file mode 100644 (file)
index 0000000..9be66a3
--- /dev/null
@@ -0,0 +1,43 @@
+From stable-bounces@linux.kernel.org  Fri Feb 24 13:09:13 2006
+Date: Fri, 24 Feb 2006 13:04:25 -0800
+From: akpm@osdl.org
+To: torvalds@osdl.org
+Cc: j-nomura@ce.jp.nec.com, stable@kernel.org, agk@redhat.com
+Subject: [PATCH] dm: free minor after unlink gendisk
+
+
+From: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
+
+Minor number should be freed after del_gendisk().  Otherwise, there could
+be a window where 2 registered gendisk has same minor number.
+
+Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
+Acked-by: Alasdair G Kergon <agk@redhat.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/md/dm.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletion(-)
+
+--- linux-2.6.15.4.orig/drivers/md/dm.c
++++ linux-2.6.15.4/drivers/md/dm.c
+@@ -812,14 +812,16 @@ static struct mapped_device *alloc_dev(u
+ static void free_dev(struct mapped_device *md)
+ {
++      unsigned int minor = md->disk->first_minor;
++
+       if (md->suspended_bdev) {
+               thaw_bdev(md->suspended_bdev, NULL);
+               bdput(md->suspended_bdev);
+       }
+-      free_minor(md->disk->first_minor);
+       mempool_destroy(md->tio_pool);
+       mempool_destroy(md->io_pool);
+       del_gendisk(md->disk);
++      free_minor(minor);
+       put_disk(md->disk);
+       blk_put_queue(md->queue);
+       kfree(md);
diff --git a/queue/dm-missing-bdput-thaw_bdev-at-removal.patch b/queue/dm-missing-bdput-thaw_bdev-at-removal.patch
new file mode 100644 (file)
index 0000000..ba852ae
--- /dev/null
@@ -0,0 +1,36 @@
+From stable-bounces@linux.kernel.org  Fri Feb 24 13:09:14 2006
+Date: Fri, 24 Feb 2006 13:04:24 -0800
+From: akpm@osdl.org
+To: torvalds@osdl.org
+Cc: j-nomura@ce.jp.nec.com, stable@kernel.org, agk@redhat.com
+Subject: [PATCH] dm: missing bdput/thaw_bdev at removal
+
+
+From: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
+
+Need to unfreeze and release bdev otherwise the bdev inode with
+inconsistent state is reused later and cause problem.
+
+Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
+Acked-by: Alasdair G Kergon <agk@redhat.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/md/dm.c |    4 ++++
+ 1 files changed, 4 insertions(+)
+
+--- linux-2.6.15.4.orig/drivers/md/dm.c
++++ linux-2.6.15.4/drivers/md/dm.c
+@@ -812,6 +812,10 @@ static struct mapped_device *alloc_dev(u
+ static void free_dev(struct mapped_device *md)
+ {
++      if (md->suspended_bdev) {
++              thaw_bdev(md->suspended_bdev, NULL);
++              bdput(md->suspended_bdev);
++      }
+       free_minor(md->disk->first_minor);
+       mempool_destroy(md->tio_pool);
+       mempool_destroy(md->io_pool);
index 95321ba9fad90e98d32c80d322f782fbd2a5c9f7..96672a0b67442f8ba622cdc6e2a47aff5f5cc11a 100644 (file)
@@ -22,3 +22,5 @@ fix-snd-usb-audio-in-32-bit-compat-environment.patch
 alsa-fix-bogus-snd_device_free-in-opl3-oss.c.patch
 cfi-init-wait-queue-in-chip-struct.patch
 gbefb-set-default-of-fb_gbe_mem-to-4-mb.patch
+dm-missing-bdput-thaw_bdev-at-removal.patch
+dm-free-minor-after-unlink-gendisk.patch