overlay: test dropping nlink below zero
authorAmir Goldstein <amir73il@gmail.com>
Wed, 5 Jul 2017 12:02:06 +0000 (15:02 +0300)
committerEryu Guan <eguan@redhat.com>
Thu, 6 Jul 2017 05:39:10 +0000 (13:39 +0800)
commitc7169fada68c21f27ec5338a434bc3b317086d49
tree30eb4444ac907fdb3de592b667dc025ca24be775
parentaf55e91fd2ea5c927c888e1df134f63968025563
overlay: test dropping nlink below zero

nlink of overlay inode could be dropped indefinitely by adding
un-accounted lower hardlinks underneath a mounted overlay and
trying to remove them.

The simplest way to understand this test is this:
Imagine that you have a tool (e.g. xfs_db) with which you can add
hardlinks, without changing the value of nlink stored on-disk for
the inode. This is exactly what this test does when it adds lower
hardlinks underneath a mounted overlay.

Commit 5f8415d6b87e ("ovl: persistent overlay inode nlink for
indexed inodes") fixes this issue, although the issue was never
exposed in any released kernel.

With overlayfs indexed copy up and without the fix, the test
triggers WARN_ON(inode->i_nlink == 0) in drop_link().

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
tests/overlay/034 [new file with mode: 0755]
tests/overlay/034.out [new file with mode: 0644]
tests/overlay/group