ovl: fix WARN_ON nlink drop to zero
mainline inclusion from mainline-5.7-rc1 commit 83552eac category: bugfix bugzilla: 37632 CVE: NA --------------------------- Changes to underlying layers should not cause WARN_ON(), but this repro does: mkdir w l u mnt sudo mount -t overlay -o workdir=w,lowerdir=l,upperdir=u overlay mnt touch mnt/h ln u/h u/k rm -rf mnt/k rm -rf mnt/h dmesg ------------[ cut here ]------------ WARNING: CPU: 1 PID: 116244 at fs/inode.c:302 drop_nlink+0x28/0x40 After upper hardlinks were added while overlay is mounted, unlinking all overlay hardlinks drops overlay nlink to zero before all upper inodes are unlinked. After unlink/rename prevent i_nlink from going to zero if there are still hashed aliases (i.e. cached hard links to the victim) remaining. Reported-by:Phasip <phasip@gmail.com> Signed-off-by:
Miklos Szeredi <mszeredi@redhat.com> Conflicts: fs/overlayfs/dir.c [ Non bugfix patch 0e32992f("ovl: remove the 'locked' argument of ovl_nlink_{start,end}") removed all locked arg is not applied. ] Signed-off-by:
Zhihao Cheng <chengzhihao1@huawei.com> Reviewed-by:
zhangyi (F) <yi.zhang@huawei.com> Signed-off-by:
Yang Yingliang <yangyingliang@huawei.com>
Loading
Please sign in to comment