From: Mike Snitzer Date: Fri, 4 Dec 2020 22:21:03 +0000 (-0500) Subject: block: fix incorrect branching in blk_max_size_offset() X-Git-Tag: baikal/aarch64/sdk6.1~7800^2 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=527c95e306f36d11bf2bd73b1008e9449fb90741;p=kernel.git block: fix incorrect branching in blk_max_size_offset() If non-zero 'chunk_sectors' is passed in to blk_max_size_offset() that override will be incorrectly ignored. Old blk_max_size_offset() branching, prior to commit 32c714605572, must be used only if passed 'chunk_sectors' override is zero. Fixes: 32c714605572 ("dm: fix IO splitting") Cc: stable@vger.kernel.org # 5.9 Reported-by: John Dorminy Signed-off-by: Mike Snitzer --- diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 24ae504cf77dd..033eb5f73b654 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1076,10 +1076,12 @@ static inline unsigned int blk_max_size_offset(struct request_queue *q, sector_t offset, unsigned int chunk_sectors) { - if (!chunk_sectors && q->limits.chunk_sectors) - chunk_sectors = q->limits.chunk_sectors; - else - return q->limits.max_sectors; + if (!chunk_sectors) { + if (q->limits.chunk_sectors) + chunk_sectors = q->limits.chunk_sectors; + else + return q->limits.max_sectors; + } if (likely(is_power_of_2(chunk_sectors))) chunk_sectors -= offset & (chunk_sectors - 1);