Skip to contentSkip to conversation

xfstests: overlay: Do not lose security.capability xattr over metadata only file copy-up

PATCH Superseded Vivek Goyal 2 participants 2 messages Jan 30, 2019

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xfstests: overlay: Do not lose security.capability xattr over metadata only file copy-up

Extend test 064 to check security.capability xattr is not lost over copy-up of a metadata only file. This requires mounting overlay with option metacopy=on and first trigger metadata only copy-up and then trigger data copy-up.

---
 tests/overlay/064     |   18 ++++++++++++++++++
 tests/overlay/064.out |    1 +
 2 files changed, 19 insertions(+)
tests/overlay/064 +18 -0
Index: xfstests-dev/tests/overlay/064
===================================================================
@@ -55,6 +55,24 @@ $XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/fi
 # Make sure cap_setuid is still there
 $GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch
 
+# Test copy-up with metacopy on.
+$UMOUNT_PROG $SCRATCH_MNT
+_scratch_mkfs
+echo "This is lower" >> ${lowerdir}/file
+
+# Set CAP_SETUID
+$SETCAP_PROG cap_setuid+ep ${lowerdir}/file
+_scratch_mount "-o metacopy=on"
+
+# Trigger metadata only copy-up
+chmod 000 ${SCRATCH_MNT}/file
+
+# Trigger data copy-up
+$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file >>$seqres.full
+
+# Make sure cap_setuid is still there
+$GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch
+
 # success, all done
 status=0
 exit
tests/overlay/064.out +1 -0
Index: xfstests-dev/tests/overlay/064.out
===================================================================
@@ -1,2 +1,3 @@
 QA output created by 064
 SCRATCH_MNT/file = cap_setuid+ep
+SCRATCH_MNT/file = cap_setuid+ep
#1 lore raw
Quoted 6 lines · Vivek Goyal

Extend test 064 to check security.capability xattr is not lost over copy-up of a metadata only file. This requires mounting overlay with option metacopy=on and first trigger metadata only copy-up and then trigger data copy-up.

I'm ok with extending the test, but it is not done right.

For using metacopy=on you need:

_require_scratch_overlay_features metacopy, so test will be skipped on kernel < 4.19, but then the existing test case won't run on old kernels. That is fine (I guess?) because the bug was introduced by metacopy patches anyway.

So instead of repeating the test, I suggest to mount overlay with metacopy=on to begin with and have 2 test files. One gets metacopied and then both get data copied.

Thanks,
Amir.

Quoted 43 lines
---
 tests/overlay/064     |   18 ++++++++++++++++++
 tests/overlay/064.out |    1 +
 2 files changed, 19 insertions(+)

Index: xfstests-dev/tests/overlay/064
===================================================================

tests/overlay/064 2019-01-30 11:18:29.595591985 -0500 renamed from tests/overlay/064 2019-01-28 15:03:12.590434802 -0500 +18 -0
@@ -55,6 +55,24 @@ $XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/fi
 # Make sure cap_setuid is still there
 $GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch
 
+# Test copy-up with metacopy on.
+$UMOUNT_PROG $SCRATCH_MNT
+_scratch_mkfs
+echo "This is lower" >> ${lowerdir}/file
+
+# Set CAP_SETUID
+$SETCAP_PROG cap_setuid+ep ${lowerdir}/file
+_scratch_mount "-o metacopy=on"
+
+# Trigger metadata only copy-up
+chmod 000 ${SCRATCH_MNT}/file
+
+# Trigger data copy-up
+$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file >>$seqres.full
+
+# Make sure cap_setuid is still there
+$GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch
+
 # success, all done
 status=0
 exit

Index: xfstests-dev/tests/overlay/064.out
===================================================================

tests/overlay/064.out 2019-01-30 11:21:11.745591985 -0500 renamed from tests/overlay/064.out 2019-01-28 15:03:12.590434802 -0500 +1 -0
@@ -1,2 +1,3 @@
 QA output created by 064
 SCRATCH_MNT/file = cap_setuid+ep
+SCRATCH_MNT/file = cap_setuid+ep