On Tue, 14 Jan 2025 08:02:15 -0700, Jens Axboe wrote: > > diff --git a/block/genhd.c b/block/genhd.c > > index 9130e163e191..3a9c36ad6bbd 100644 > > --- a/block/genhd.c > > +++ b/block/genhd.c > > @@ -890,6 +890,9 @@ static int show_partition(struct seq_file *seqf, void *v) > > > > rcu_read_lock(); > > xa_for_each(&sgp->part_tbl, idx, part) { > > + int partno = bdev_partno(part); > > + > > + WARN_ON_ONCE(partno >= DISK_MAX_PARTS); > > if (!bdev_nr_sectors(part)) > > continue; > > seq_printf(seqf, "%4d %7d %10llu %pg\n", > > Surely you still want to continue for that condition? No. But like following, ok? diff --git a/block/genhd.c b/block/genhd.c index 9130e163e191..142b13620f0c 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -890,7 +890,10 @@ static int show_partition(struct seq_file *seqf, void *v) rcu_read_lock(); xa_for_each(&sgp->part_tbl, idx, part) { - if (!bdev_nr_sectors(part)) + int partno = bdev_partno(part); + + WARN_ON_ONCE(partno >= DISK_MAX_PARTS); + if (!bdev_nr_sectors(part) || partno >= DISK_MAX_PARTS) continue; seq_printf(seqf, "%4d %7d %10llu %pg\n", MAJOR(part->bd_dev), MINOR(part->bd_dev),