Message ID | e5fec079dfca448cc21c425cfa5d7b291f5faa67.1714046443.git.johannes.thumshirn@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: check if zone_wplugs_hash exists in queue_zone_wplugs_show | expand |
On 2024/04/25 22:02, Johannes Thumshirn wrote: > 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> My bad... Thanks for the fix. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> > --- > block/blk-zoned.c | 3 +++ > 1 file changed, 3 insertions(+) > > 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,
On Thu, 25 Apr 2024 05:02:39 -0700, Johannes Thumshirn wrote: > 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. > > [...] Applied, thanks! [1/1] block: check if zone_wplugs_hash exists in queue_zone_wplugs_show commit: 57787fa42f9fc12fe18938eefc2acb2dc2bde9ae Best regards,
On Thu, Apr 25, 2024 at 8:02 PM Johannes Thumshirn <johannes.thumshirn@wdc.com> wrote: > > 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> > --- > block/blk-zoned.c | 3 +++ > 1 file changed, 3 insertions(+) > > 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, > -- > 2.43.0 > > Verified the panic issue was fixed by this patch, Tested-by: Changhui Zhong <czhong@redhat.com>
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,
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> --- block/blk-zoned.c | 3 +++ 1 file changed, 3 insertions(+)