Skip to content

Commit

Permalink
block: check if zone_wplugs_hash exists in queue_zone_wplugs_show
Browse files Browse the repository at this point in the history
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 <[email protected]>
Fixes: a98b05b ("block: Replace zone_wlock debugfs entry with zone_wplugs entry")
Signed-off-by: Johannes Thumshirn <[email protected]>
Reviewed-by: Damien Le Moal <[email protected]>
Link: https://lore.kernel.org/r/e5fec079dfca448cc21c425cfa5d7b291f5faa67.1714046443.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
morbidrsa authored and axboe committed Apr 25, 2024
1 parent a8f59e5 commit 57787fa
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions block/blk-zoned.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 57787fa

Please sign in to comment.