block: Fix crash (oops) in blkdev_get() on failed exclusive open (Closes: #631574)
svn path=/dists/sid/linux-2.6/; revision=17722
This commit is contained in:
parent
33318598c4
commit
a9df42df45
|
@ -3,6 +3,8 @@ linux-2.6 (2.6.39-3) UNRELEASED; urgency=low
|
|||
[ Ben Hutchings ]
|
||||
* [x86] i915: Revert "drm/i915: Enable GMBUS for post-gen2 chipsets"
|
||||
(Closes: #627575)
|
||||
* block: Fix crash (oops) in blkdev_get() on failed exclusive open
|
||||
(Closes: #631574)
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Tue, 21 Jun 2011 05:27:43 +0100
|
||||
|
||||
|
|
41
debian/patches/bugfix/all/block-blkdev_get-should-access-bd_disk-only-after-su.patch
vendored
Normal file
41
debian/patches/bugfix/all/block-blkdev_get-should-access-bd_disk-only-after-su.patch
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
From: Tejun Heo <tj@kernel.org>
|
||||
Date: Wed, 1 Jun 2011 08:27:41 +0200
|
||||
Subject: [PATCH] block: blkdev_get() should access ->bd_disk only after
|
||||
success
|
||||
|
||||
commit 4c49ff3fe128ca68dabd07537415c419ad7f82f9 upstream.
|
||||
|
||||
d4dc210f69 (block: don't block events on excl write for non-optical
|
||||
devices) added dereferencing of bdev->bd_disk to test
|
||||
GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE; however, bdev->bd_disk can be
|
||||
%NULL if open failed which can lead to an oops.
|
||||
|
||||
Test the flag after testing open was successful, not before.
|
||||
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
Reported-by: David Miller <davem@davemloft.net>
|
||||
Tested-by: David Miller <davem@davemloft.net>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
|
||||
---
|
||||
fs/block_dev.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/block_dev.c b/fs/block_dev.c
|
||||
index 1f2b199..1a2421f 100644
|
||||
--- a/fs/block_dev.c
|
||||
+++ b/fs/block_dev.c
|
||||
@@ -1272,8 +1272,8 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
|
||||
* individual writeable reference is too fragile given the
|
||||
* way @mode is used in blkdev_get/put().
|
||||
*/
|
||||
- if ((disk->flags & GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE) &&
|
||||
- !res && (mode & FMODE_WRITE) && !bdev->bd_write_holder) {
|
||||
+ if (!res && (mode & FMODE_WRITE) && !bdev->bd_write_holder &&
|
||||
+ (disk->flags & GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE)) {
|
||||
bdev->bd_write_holder = true;
|
||||
disk_block_events(disk);
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
|
@ -1 +1,2 @@
|
|||
+ bugfix/x86/Revert-drm-i915-Enable-GMBUS-for-post-gen2-chipsets.patch
|
||||
+ bugfix/all/block-blkdev_get-should-access-bd_disk-only-after-su.patch
|
||||
|
|
Loading…
Reference in New Issue