mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 23:23:03 +00:00
bcachefs: Fix missing bounds checks in bch2_alloc_read()
We were checking that the alloc key was for a valid device, but not a valid bucket. This is the upgrade path from versions prior to bcachefs being mainlined. Reported-by: syzbot+a1b59c8e1a3f022fd301@syzkaller.appspotmail.com Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
573ddcdc56
commit
a319aeaebb
@ -639,6 +639,16 @@ int bch2_alloc_read(struct bch_fs *c)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (k.k->p.offset < ca->mi.first_bucket) {
|
||||
bch2_btree_iter_set_pos(&iter, POS(k.k->p.inode, ca->mi.first_bucket));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (k.k->p.offset >= ca->mi.nbuckets) {
|
||||
bch2_btree_iter_set_pos(&iter, POS(k.k->p.inode + 1, 0));
|
||||
continue;
|
||||
}
|
||||
|
||||
struct bch_alloc_v4 a;
|
||||
*bucket_gen(ca, k.k->p.offset) = bch2_alloc_to_v4(k, &a)->gen;
|
||||
0;
|
||||
|
Loading…
Reference in New Issue
Block a user