summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorJohannes Thumshirn <johannes.thumshirn@wdc.com>2024-04-25 15:02:39 +0300
committerJens Axboe <axboe@kernel.dk>2024-04-25 16:47:46 +0300
commit57787fa42f9fc12fe18938eefc2acb2dc2bde9ae (patch)
tree491241599c948e3399446cabc01f844596d9cbac /block
parenta8f59e5a5deaf3e99a8b7252e96cee9af67858a9 (diff)
downloadlinux-57787fa42f9fc12fe18938eefc2acb2dc2bde9ae.tar.xz
block: check if zone_wplugs_hash exists in queue_zone_wplugs_show
Changhui reported a kernel crash when running this simple shell reproducer: # cd /sys/kernel/debug/block && find . -type f -exec grep -aH . {} \; The above results in a NULL pointer dereference if a device does not have a zone_wplugs_hash allocated. To fix this, return early if we don't have a zone_wplugs_hash. Reported-by: Changhui Zhong <czhong@redhat.com> Fixes: a98b05b02f0f ("block: Replace zone_wlock debugfs entry with zone_wplugs entry") Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Link: https://lore.kernel.org/r/e5fec079dfca448cc21c425cfa5d7b291f5faa67.1714046443.git.johannes.thumshirn@wdc.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r--block/blk-zoned.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/block/blk-zoned.c b/block/blk-zoned.c
index 3a796420f240..bad68277c0b2 100644
--- a/block/blk-zoned.c
+++ b/block/blk-zoned.c
@@ -1774,6 +1774,9 @@ int queue_zone_wplugs_show(void *data, struct seq_file *m)
unsigned int zwp_bio_list_size, i;
unsigned long flags;
+ if (!disk->zone_wplugs_hash)
+ return 0;
+
rcu_read_lock();
for (i = 0; i < disk_zone_wplugs_hash_size(disk); i++) {
hlist_for_each_entry_rcu(zwplug,