On 2/12/20 10:40 AM, Alexey Dobriyan wrote: > Check for overflow in addition before checking for end-of-block-device. > > Steps to reproduce: > > #define _GNU_SOURCE 1 > #include <sys/ioctl.h> > #include <sys/types.h> > #include <sys/stat.h> > #include <fcntl.h> > > typedef unsigned long long __u64; > > struct blk_zone_range { > __u64 sector; > __u64 nr_sectors; > }; > > #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range) > > int main(void) > { > int fd = open("/dev/nullb0", O_RDWR|O_DIRECT); > struct blk_zone_range zr = {4096, 0xfffffffffffff000ULL}; > ioctl(fd, BLKRESETZONE, &zr); > return 0; > } > > BUG: KASAN: null-ptr-deref in submit_bio_wait+0x74/0xe0 > Write of size 8 at addr 0000000000000040 by task a.out/1590 > > CPU: 8 PID: 1590 Comm: a.out Not tainted 5.6.0-rc1-00019-g359c92c02bfa #2 > Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190711_202441-buildvm-armv7-10.arm.fedoraproject.org-2.fc31 04/01/2014 > Call Trace: > dump_stack+0x76/0xa0 > __kasan_report.cold+0x5/0x3e > kasan_report+0xe/0x20 > submit_bio_wait+0x74/0xe0 > blkdev_zone_mgmt+0x26f/0x2a0 > blkdev_zone_mgmt_ioctl+0x14b/0x1b0 > blkdev_ioctl+0xb28/0xe60 > block_ioctl+0x69/0x80 > ksys_ioctl+0x3af/0xa50 Applied, thanks. -- Jens Axboe