]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
block: fix NULL pointer dereference in disk_report_zones()
authorDamien Le Moal <dlemoal@kernel.org>
Thu, 13 Nov 2025 13:40:27 +0000 (22:40 +0900)
committerJens Axboe <axboe@kernel.dk>
Thu, 13 Nov 2025 16:10:04 +0000 (09:10 -0700)
Commit 2284eec5053d ("block: introduce blkdev_get_zone_info()")
introduced the report_active field in struct blk_report_zones_args so
that open and closed zones can be reported with the condition
BLK_ZONE_COND_ACTIVE in the case of a cached report zone.
However, the args pointer to a struct blk_report_zones_args that is
passed to disk_report_zones() can be NULL, e.g. in the case of internal
report zones operations for device mapper zoned targets.

Fix disk_report_zones() to make sure to check that the args is not null
before updating a zone condition for cached zone reports.

Fixes: 2284eec5053d ("block: introduce blkdev_get_zone_info()")
Reported-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-zoned.c

index 98c26af01e24062e6b99ab765073733de1760b4b..dcc295721c2c08426dd20e259d467d9ab24ed1aa 100644 (file)
@@ -854,7 +854,7 @@ static unsigned int disk_zone_wplug_sync_wp_offset(struct gendisk *disk,
 int disk_report_zone(struct gendisk *disk, struct blk_zone *zone,
                     unsigned int idx, struct blk_report_zones_args *args)
 {
-       if (args->report_active) {
+       if (args && args->report_active) {
                /*
                 * If we come here, then this is a report zones as a fallback
                 * for a cached report. So collapse the implicit open, explicit