]> 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)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 12 Oct 2022 02:05:44 +0000 (19:05 -0700)
commitf23100ef6a93d42b483a84544615e23bf96786f5
tree6fc9482d6abf38a75889208b399196de59b8dafa
parent65e4542125012ebdcffd22e31f58725b9031bc1a
nilfs2: fix use-after-free bug of struct nilfs_root

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>
fs/nilfs2/inode.c