From: Chris Wright Date: Sat, 25 Feb 2006 01:12:03 +0000 (-0800) Subject: dm fixes from Jun'ichi Nomura at NEC, fwd from akpm X-Git-Tag: v2.6.15.5~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39464dd6305e59add17a999798aa31577a4b2cfb;p=thirdparty%2Fkernel%2Fstable-queue.git dm fixes from Jun'ichi Nomura at NEC, fwd from akpm --- diff --git a/queue/dm-free-minor-after-unlink-gendisk.patch b/queue/dm-free-minor-after-unlink-gendisk.patch new file mode 100644 index 00000000000..9be66a33c82 --- /dev/null +++ b/queue/dm-free-minor-after-unlink-gendisk.patch @@ -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" + +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 +Acked-by: Alasdair G Kergon +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..ba852ae164c --- /dev/null +++ b/queue/dm-missing-bdput-thaw_bdev-at-removal.patch @@ -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" + +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 +Acked-by: Alasdair G Kergon +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + + 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); diff --git a/queue/series b/queue/series index 95321ba9fad..96672a0b674 100644 --- a/queue/series +++ b/queue/series @@ -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