diff options
author | Goffredo Baroncelli <kreijack@inwind.it> | 2017-10-03 19:31:10 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-10-04 16:22:56 +0200 |
commit | 2d8ce70a08fe033c904115d59276ad86adeaa337 (patch) | |
tree | 9fb00440454fc98a37180ba08687a393406bfd21 /lib/kobject.c | |
parent | 8c6c592831a09a28428448e68fb08c6bbb8b9b8b (diff) |
btrfs: avoid overflow when sector_t is 32 bit
Jean-Denis Girard noticed commit c821e7f3 "pass bytes to
btrfs_bio_alloc" (https://patchwork.kernel.org/patch/9763081/)
introduces a regression on 32 bit machines.
When CONFIG_LBDAF is _not_ defined (CONFIG_LBDAF == Support for large
(2TB+) block devices and files) sector_t is 32 bit on 32bit machines.
In the function submit_extent_page, 'sector' (which is sector_t type) is
multiplied by 512 to convert it from sectors to bytes, leading to an
overflow when the disk is bigger than 4GB (!).
I added a cast to u64 to avoid overflow.
Fixes: c821e7f3 ("btrfs: pass bytes to btrfs_bio_alloc")
CC: stable@vger.kernel.org # 4.13+
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
Tested-by: Jean-Denis Girard <jd.girard@sysnux.pf>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'lib/kobject.c')
0 files changed, 0 insertions, 0 deletions