diff options
author | Coly Li <colyli@suse.de> | 2020-07-25 14:00:21 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-07-25 15:38:20 +0200 |
commit | 65f0f017e7be8c70330372df23bcb2a407ecf02d (patch) | |
tree | 045f0bed9e860961cc83ef9b2cd821a9ba35de13 /drivers/virt | |
parent | bcache: Use struct_size() in kzalloc() (diff) | |
download | linux-65f0f017e7be8c70330372df23bcb2a407ecf02d.tar.xz linux-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 'drivers/virt')
0 files changed, 0 insertions, 0 deletions