• Joseph Qi's avatar
    ocfs2: fix BUG when iput after ocfs2_mknod fails · 759a7c61
    Joseph Qi authored
    Commit b1529a41 "ocfs2: should reclaim the inode if
    '__ocfs2_mknod_locked' returns an error" tried to reclaim the claimed
    inode if __ocfs2_mknod_locked() fails later.  But this introduce a race,
    the freed bit may be reused immediately by another thread, which will
    update dinode, e.g.  i_generation.  Then iput this inode will lead to BUG:
    inode->i_generation != le32_to_cpu(fe->i_generation)
    
    We could make this inode as bad, but we did want to do operations like
    wipe in some cases.  Since the claimed inode bit can only affect that an
    dinode is missing and will return back after fsck, it seems not a big
    problem.  So just leave it as is by revert the reclaim logic.
    
    Link: https://lkml.kernel.org/r/20221017130227.234480-1-joseph.qi@linux.alibaba.com
    Fixes: b1529a41 ("ocfs2: should reclaim the inode if '__ocfs2_mknod_locked' returns an error")
    Signed-off-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
    Reported-by: default avatarYan Wang <wangyan122@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    759a7c61
namei.c 69.3 KB