Ye Bin
654870789c
blk-mq: fix possible memleak when register 'hctx' failed
[ Upstream commit 4b7a21c57b14fbcd0e1729150189e5933f5088e9 ]
There's issue as follows when do fault injection test:
unreferenced object 0xffff888132a9f400 (size 512):
comm "insmod", pid 308021, jiffies 4324277909 (age 509.733s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 08 f4 a9 32 81 88 ff ff ...........2....
08 f4 a9 32 81 88 ff ff 00 00 00 00 00 00 00 00 ...2............
backtrace:
[<00000000e8952bb4>] kmalloc_node_trace+0x22/0xa0
[<00000000f9980e0f>] blk_mq_alloc_and_init_hctx+0x3f1/0x7e0
[<000000002e719efa>] blk_mq_realloc_hw_ctxs+0x1e6/0x230
[<000000004f1fda40>] blk_mq_init_allocated_queue+0x27e/0x910
[<00000000287123ec>] __blk_mq_alloc_disk+0x67/0xf0
[<00000000a2a34657>] 0xffffffffa2ad310f
[<00000000b173f718>] 0xffffffffa2af824a
[<0000000095a1dabb>] do_one_initcall+0x87/0x2a0
[<00000000f32fdf93>] do_init_module+0xdf/0x320
[<00000000cbe8541e>] load_module+0x3006/0x3390
[<0000000069ed1bdb>] __do_sys_finit_module+0x113/0x1b0
[<00000000a1a29ae8>] do_syscall_64+0x35/0x80
[<000000009cd878b0>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
Fault injection context as follows:
kobject_add
blk_mq_register_hctx
blk_mq_sysfs_register
blk_register_queue
device_add_disk
null_add_dev.part.0 [null_blk]
As 'blk_mq_register_hctx' may already add some objects when failed halfway,
but there isn't do fallback, caller don't know which objects add failed.
To solve above issue just do fallback when add objects failed halfway in
'blk_mq_register_hctx'.
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20221117022940.873959-1-yebin@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
2023-01-07 12:07:33 +01:00 |
| .. |
|
partitions
|
partitions/aix: fix usage of uninitialized lv_info and lvname structures
|
2018-09-19 22:47:15 +02:00 |
|
badblocks.c
|
badblocks: fix wrong return value in badblocks_set if badblocks are disabled
|
2017-12-20 10:07:29 +01:00 |
|
bio-integrity.c
|
bio-integrity: Do not allocate integrity context for bio w/o data
|
2018-04-13 19:48:18 +02:00 |
|
bio.c
|
block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern
|
2022-06-06 08:19:46 +02:00 |
|
blk-cgroup.c
|
block,blkcg: use __GFP_NOWARN for best-effort allocations in blkcg
|
2018-09-19 22:47:11 +02:00 |
|
blk-core.c
|
blktrace: Fix potential deadlock between delete & sysfs ops
|
2020-05-20 08:15:30 +02:00 |
|
blk-exec.c
|
block: Fix spelling in a source code comment
|
2016-07-20 21:28:22 -06:00 |
|
blk-flush.c
|
block: flush: fix IO hang in case of flood fua req
|
2016-10-26 07:49:27 -06:00 |
|
blk-integrity.c
|
block: fix blk_integrity_register to use template's interval_exp if not 0
|
2017-05-20 14:28:36 +02:00 |
|
blk-ioc.c
|
mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd
|
2015-11-06 17:50:42 -08:00 |
|
blk-lib.c
|
block: fix infinite loop if the device loses discard capability
|
2018-12-29 13:40:14 +01:00 |
|
blk-map.c
|
block: fix memleak when __blk_rq_map_user_iov() is failed
|
2020-01-12 11:24:24 +01:00 |
|
blk-merge.c
|
block: don't use bio->bi_vcnt to figure out segment number
|
2020-01-29 10:24:15 +01:00 |
|
blk-mq-cpumap.c
|
blk-mq: allow the driver to pass in a queue mapping
|
2016-09-15 08:42:03 -06:00 |
|
blk-mq-pci.c
|
blk-mq-pci: add a fallback when pci_irq_get_affinity returns NULL
|
2017-08-24 17:12:20 -07:00 |
|
blk-mq-sysfs.c
|
blk-mq: fix possible memleak when register 'hctx' failed
|
2023-01-07 12:07:33 +01:00 |
|
blk-mq-tag.c
|
blk-mq: Allow blocking queue tag iter callbacks
|
2020-04-13 10:32:52 +02:00 |
|
blk-mq-tag.h
|
Merge branch 'for-4.9/block-irq' of git://git.kernel.dk/linux-block
|
2016-10-09 17:29:33 -07:00 |
|
blk-mq.c
|
blk-mq: move blk_mq_update_nr_hw_queues synchronize_rcu call
|
2020-06-20 10:24:19 +02:00 |
|
blk-mq.h
|
blk-mq: initialize mq kobjects in blk_mq_init_allocated_queue()
|
2017-12-14 09:28:21 +01:00 |
|
blk-settings.c
|
blk-settings: align max_sectors on "logical_block_size" boundary
|
2021-03-03 17:44:41 +01:00 |
|
blk-softirq.c
|
This adds a new gcc plugin named "latent_entropy". It is designed to
|
2016-10-15 10:03:15 -07:00 |
|
blk-sysfs.c
|
blk-mq: register device instead of disk
|
2016-09-21 07:56:16 -06:00 |
|
blk-tag.c
|
block: support different tag allocation policy
|
2015-01-23 14:15:46 -07:00 |
|
blk-throttle.c
|
blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
|
2021-09-26 13:36:19 +02:00 |
|
blk-timeout.c
|
block: Fix a race between blk_cleanup_queue() and timeout handling
|
2017-11-30 08:39:06 +00:00 |
|
blk.h
|
blk-mq: remove ->map_queue
|
2016-09-15 08:42:03 -06:00 |
|
bounce.c
|
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
|
2015-09-19 18:57:09 -07:00 |
|
bsg-lib.c
|
Revert "bsg-lib: don't free job in bsg_prepare_job"
|
2017-10-21 17:21:33 +02:00 |
|
bsg.c
|
sg_write()/bsg_write() is not fit to be called under KERNEL_DS
|
2017-01-09 08:32:25 +01:00 |
|
cfq-iosched.c
|
block,blkcg: use __GFP_NOWARN for best-effort allocations in blkcg
|
2018-09-19 22:47:11 +02:00 |
|
cmdline-parser.c
|
block: remove unrelated header files and export symbol
|
2014-01-21 20:18:26 -08:00 |
|
compat_ioctl.c
|
block/compat_ioctl: fix range check in BLKGETSIZE
|
2022-04-27 13:14:12 +02:00 |
|
deadline-iosched.c
|
block: do not merge requests without consulting with io scheduler
|
2016-07-20 21:35:12 -06:00 |
|
elevator.c
|
block: Fix secure erase
|
2016-08-16 09:16:51 -06:00 |
|
genhd.c
|
block: fix use-after-free in disk_part_iter_next
|
2021-01-17 13:57:55 +01:00 |
|
ioctl.c
|
block: invalidate the page cache when issuing BLKZEROOUT
|
2016-10-11 15:06:30 -07:00 |
|
ioprio.c
|
block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
|
2021-12-14 10:04:48 +01:00 |
|
Kconfig
|
Merge branch 'for-4.9/block-irq' of git://git.kernel.dk/linux-block
|
2016-10-09 17:29:33 -07:00 |
|
Kconfig.iosched
|
|
|
|
Makefile
|
Merge branch 'for-4.9/block-smp' of git://git.kernel.dk/linux-block
|
2016-10-09 17:32:20 -07:00 |
|
noop-iosched.c
|
elevator: use list_{first,prev,next}_entry
|
2015-11-16 15:21:48 -07:00 |
|
partition-generic.c
|
block: unhash blkdev part inode when the part is deleted
|
2023-01-07 12:07:10 +01:00 |
|
scsi_ioctl.c
|
block: allow WRITE_SAME commands with the SG_IO ioctl
|
2017-03-22 12:43:38 +01:00 |
|
t10-pi.c
|
block: Consolidate static integrity profile properties
|
2015-10-21 14:42:38 -06:00 |