diff options
author | Agathe Porte <agathe.porte@canonical.com> | 2024-11-12 13:18:25 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2024-11-12 19:02:12 -0500 |
commit | 6cfe56fbad32c8c5b50e82d9109413566d691569 (patch) | |
tree | 180f0e7d91f101c759405b5e43417cc0915176bb /fs/ufs | |
parent | b57c010e70ff11cce7f6b702d2e3bba1d893580b (diff) | |
download | linux-stable-6cfe56fbad32c8c5b50e82d9109413566d691569.tar.gz linux-stable-6cfe56fbad32c8c5b50e82d9109413566d691569.tar.bz2 linux-stable-6cfe56fbad32c8c5b50e82d9109413566d691569.zip |
ufs: ufs_sb_private_info: remove unused s_{2,3}apb fields
These two fields are populated and stored as a "frequently used value"
in ufs_fill_super, but are not used afterwards in the driver.
Moreover, one of the shifts triggers UBSAN: shift-out-of-bounds when
apbshift is 12 because 12 * 3 = 36 and 1 << 36 does not fit in the 32
bit integer used to store the value.
Closes: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2087853
Signed-off-by: Agathe Porte <agathe.porte@canonical.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ufs')
-rw-r--r-- | fs/ufs/super.c | 4 | ||||
-rw-r--r-- | fs/ufs/ufs_fs.h | 4 |
2 files changed, 0 insertions, 8 deletions
diff --git a/fs/ufs/super.c b/fs/ufs/super.c index e876c60e70ea..762699c1bcf6 100644 --- a/fs/ufs/super.c +++ b/fs/ufs/super.c @@ -1229,11 +1229,7 @@ magic_found: else uspi->s_apbshift = uspi->s_bshift - 2; - uspi->s_2apbshift = uspi->s_apbshift * 2; - uspi->s_3apbshift = uspi->s_apbshift * 3; uspi->s_apb = 1 << uspi->s_apbshift; - uspi->s_2apb = 1 << uspi->s_2apbshift; - uspi->s_3apb = 1 << uspi->s_3apbshift; uspi->s_apbmask = uspi->s_apb - 1; uspi->s_nspfshift = uspi->s_fshift - UFS_SECTOR_BITS; uspi->s_nspb = uspi->s_nspf << uspi->s_fpbshift; diff --git a/fs/ufs/ufs_fs.h b/fs/ufs/ufs_fs.h index ef9ead44776a..0905f9a16b91 100644 --- a/fs/ufs/ufs_fs.h +++ b/fs/ufs/ufs_fs.h @@ -775,12 +775,8 @@ struct ufs_sb_private_info { __u32 s_fpbmask; /* fragments per block mask */ __u32 s_apb; /* address per block */ - __u32 s_2apb; /* address per block^2 */ - __u32 s_3apb; /* address per block^3 */ __u32 s_apbmask; /* address per block mask */ __u32 s_apbshift; /* address per block shift */ - __u32 s_2apbshift; /* address per block shift * 2 */ - __u32 s_3apbshift; /* address per block shift * 3 */ __u32 s_nspfshift; /* number of sector per fragment shift */ __u32 s_nspb; /* number of sector per block */ __u32 s_inopf; /* inodes per fragment */ |