diff options
| author | 2020-07-25 20:00:21 +0800 | |
|---|---|---|
| committer | 2020-07-25 07:38:20 -0600 | |
| commit | 65f0f017e7be8c70330372df23bcb2a407ecf02d (patch) | |
| tree | 045f0bed9e860961cc83ef9b2cd821a9ba35de13 /include/linux/phy/git:/ssh:/git@git.zx2c4.com | |
| parent | bcache: Use struct_size() in kzalloc() (diff) | |
| download | linux-dev-65f0f017e7be8c70330372df23bcb2a407ecf02d.tar.xz linux-dev-65f0f017e7be8c70330372df23bcb2a407ecf02d.zip | |
bcache: avoid nr_stripes overflow in bcache_device_init()
For some block devices which large capacity (e.g. 8TB) but small io_opt
size (e.g. 8 sectors), in bcache_device_init() the stripes number calcu-
lated by,
DIV_ROUND_UP_ULL(sectors, d->stripe_size);
might be overflow to the unsigned int bcache_device->nr_stripes.
This patch uses the uint64_t variable to store DIV_ROUND_UP_ULL()
and after the value is checked to be available in unsigned int range,
sets it to bache_device->nr_stripes. Then the overflow is avoided.
Reported-and-tested-by: Ken Raeburn <raeburn@redhat.com>
Signed-off-by: Coly Li <colyli@suse.de>
Cc: stable@vger.kernel.org
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1783075
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/phy/git:/ssh:/git@git.zx2c4.com')
0 files changed, 0 insertions, 0 deletions
