projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5bbbfdf
)
dm: do not reuse dm_blk_ioctl block_device input as local variable
author
Mike Snitzer
<snitzer@redhat.com>
Tue, 17 Nov 2015 19:11:34 +0000
(14:11 -0500)
committer
Mike Snitzer
<snitzer@redhat.com>
Tue, 17 Nov 2015 19:18:49 +0000
(14:18 -0500)
(Ab)using the @bdev passed to dm_blk_ioctl() opens the potential for
targets' .prepare_ioctl to fail if they go on to check the bdev for
!NULL.
Fixes: e56f81e0b01e ("dm: refactor ioctl handling")
Reported-by: Junichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm.c
patch
|
blob
|
history
diff --git
a/drivers/md/dm.c
b/drivers/md/dm.c
index fabd5d8fd5594403eef204e18e8b791581676ac3..5df40480228b7a26e3c73ac78e963ce47ed25448 100644
(file)
--- a/
drivers/md/dm.c
+++ b/
drivers/md/dm.c
@@
-603,9
+603,10
@@
static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
{
struct mapped_device *md = bdev->bd_disk->private_data;
struct dm_target *tgt;
+ struct block_device *tgt_bdev = NULL;
int srcu_idx, r;
- r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx);
+ r = dm_get_live_table_for_ioctl(md, &tgt, &
tgt_
bdev, &mode, &srcu_idx);
if (r < 0)
return r;
@@
-620,7
+621,7
@@
static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
goto out;
}
- r = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
+ r = __blkdev_driver_ioctl(
tgt_
bdev, mode, cmd, arg);
out:
dm_put_live_table(md, srcu_idx);
return r;