mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
bcachefs: assign return error when iterating through layout
syzbot reported a null ptr deref in __copy_user [0] In __bch2_read_super, when a corrupt backup superblock matches the default opts offset, no error is assigned to ret and the freed superblock gets through, possibly being assigned as the best sb in bch2_fs_open and being later dereferenced, causing a fault. Assign EINVALID to ret when iterating through layout. [0]: https://syzkaller.appspot.com/bug?extid=18a5c5e8a9c856944876 Reported-by: syzbot+18a5c5e8a9c856944876@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=18a5c5e8a9c856944876 Signed-off-by: Diogo Jahchan Koike <djahchankoike@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
c6040447c5
commit
40d40c6bea
@ -799,8 +799,10 @@ retry:
|
||||
i < layout.sb_offset + layout.nr_superblocks; i++) {
|
||||
offset = le64_to_cpu(*i);
|
||||
|
||||
if (offset == opt_get(*opts, sb))
|
||||
if (offset == opt_get(*opts, sb)) {
|
||||
ret = -BCH_ERR_invalid;
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = read_one_super(sb, offset, &err);
|
||||
if (!ret)
|
||||
|
Loading…
x
Reference in New Issue
Block a user