]> git.baikalelectronics.ru Git - kernel.git/commit
nilfs2: fix use-after-free bug of struct nilfs_root
authorRyusuke Konishi <konishi.ryusuke@gmail.com>
Mon, 3 Oct 2022 15:05:19 +0000 (00:05 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Oct 2022 11:22:17 +0000 (13:22 +0200)
commit68fc9cfb13b2bde8fb9f7fecba5faec697c6e1a5
tree71580cc469639cc4040c318260b9dd3a3c45863e
parent0b9025e62d4f25475562ae0e6fc8808d144cf0ee
nilfs2: fix use-after-free bug of struct nilfs_root

commit f23100ef6a93d42b483a84544615e23bf96786f5 upstream.

If the beginning of the inode bitmap area is corrupted on disk, an inode
with the same inode number as the root inode can be allocated and fail
soon after.  In this case, the subsequent call to nilfs_clear_inode() on
that bogus root inode will wrongly decrement the reference counter of
struct nilfs_root, and this will erroneously free struct nilfs_root,
causing kernel oopses.

This fixes the problem by changing nilfs_new_inode() to skip reserved
inode numbers while repairing the inode bitmap.

Link: https://lkml.kernel.org/r/20221003150519.39789-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Reported-by: syzbot+b8c672b0e22615c80fe0@syzkaller.appspotmail.com
Reported-by: Khalid Masum <khalid.masum.92@gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nilfs2/inode.c