mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
bcachefs: fix shift oob in alloc_lru_idx_fragmentation
The size of a.data_type is set abnormally large, causing shift-out-of-bounds.
To fix this, we need to add validation on a.data_type in
alloc_lru_idx_fragmentation().
Reported-by: syzbot+7f45fa9805c40db3f108@syzkaller.appspotmail.com
Fixes: 260af1562e
("bcachefs: Kill alloc_v4.fragmentation_lru")
Signed-off-by: Jeongjun Park <aha310510@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
2045fc4295
commit
5c41f75d1b
@ -168,6 +168,9 @@ static inline bool data_type_movable(enum bch_data_type type)
|
|||||||
static inline u64 alloc_lru_idx_fragmentation(struct bch_alloc_v4 a,
|
static inline u64 alloc_lru_idx_fragmentation(struct bch_alloc_v4 a,
|
||||||
struct bch_dev *ca)
|
struct bch_dev *ca)
|
||||||
{
|
{
|
||||||
|
if (a.data_type >= BCH_DATA_NR)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!data_type_movable(a.data_type) ||
|
if (!data_type_movable(a.data_type) ||
|
||||||
!bch2_bucket_sectors_fragmented(ca, a))
|
!bch2_bucket_sectors_fragmented(ca, a))
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user