From: Mikulas Patocka Date: Mon, 11 Sep 2017 15:46:49 +0000 (-0600) Subject: block: fix integer overflow in __blkdev_sectors_to_bio_pages() X-Git-Tag: v4.14-rc1~42^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09c2c359be546df45be0b158ea1d3cc8ea83c876;p=platform%2Fkernel%2Flinux-exynos.git block: fix integer overflow in __blkdev_sectors_to_bio_pages() Fix possible integer overflow in __blkdev_sectors_to_bio_pages if sector_t is 32-bit. Signed-off-by: Mikulas Patocka Fixes: 615d22a51c04 ("block: Fix __blkdev_issue_zeroout loop") Reviewed-by: Damien Le Moal Signed-off-by: Jens Axboe --- diff --git a/block/blk-lib.c b/block/blk-lib.c index e01adb5..62240f8 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -269,9 +269,9 @@ static int __blkdev_issue_write_zeroes(struct block_device *bdev, */ static unsigned int __blkdev_sectors_to_bio_pages(sector_t nr_sects) { - sector_t bytes = (nr_sects << 9) + PAGE_SIZE - 1; + sector_t pages = DIV_ROUND_UP_SECTOR_T(nr_sects, PAGE_SIZE / 512); - return min(bytes >> PAGE_SHIFT, (sector_t)BIO_MAX_PAGES); + return min(pages, (sector_t)BIO_MAX_PAGES); } /**