summaryrefslogtreecommitdiffstats
path: root/block/blk-rq-qos.c
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2021-11-11 03:03:43 +0100
committerJens Axboe <axboe@kernel.dk>2021-11-23 02:35:37 +0100
commitefcf5932230b9472cfdbe01c858726f29ac5ec7d (patch)
tree81ebb94de5787993097f25294aa62fb3f426e22d /block/blk-rq-qos.c
parentblk-mq: don't insert FUA request with data into scheduler queue (diff)
downloadlinux-efcf5932230b9472cfdbe01c858726f29ac5ec7d.tar.xz
linux-efcf5932230b9472cfdbe01c858726f29ac5ec7d.zip
block: avoid to touch unloaded module instance when opening bdev
disk->fops->owner is grabbed in blkdev_get_no_open() after the disk kobject refcount is increased. This way can't make sure that disk->fops->owner is still alive since del_gendisk() still can move on if the kobject refcount of disk is grabbed by open() and disk->fops->open() isn't called yet. Fixes the issue by moving try_module_get() into blkdev_get_by_dev() with ->open_mutex() held, then we can drain the in-progress open() in del_gendisk(). Meantime new open() won't succeed because disk becomes not alive. This way is reasonable because blkdev_get_no_open() needn't to touch disk->fops or defined callbacks. Cc: Christoph Hellwig <hch@lst.de> Cc: czhong@redhat.com Signed-off-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20211111020343.316126-1-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-rq-qos.c')
0 files changed, 0 insertions, 0 deletions