On 08/12/2023 15:51, Günther Noack wrote: > Exercises Landlock's IOCTL feature in different combinations of > handling and permitting the rights LANDLOCK_ACCESS_FS_IOCTL, > LANDLOCK_ACCESS_FS_READ_FILE, LANDLOCK_ACCESS_FS_WRITE_FILE and > LANDLOCK_ACCESS_FS_READ_DIR, and in different combinations of using > files and directories. > > Signed-off-by: Günther Noack <gnoack@xxxxxxxxxx> > --- > tools/testing/selftests/landlock/fs_test.c | 431 ++++++++++++++++++++- Hi Günther, When building kselftest against next-master the below build error is observed. A bisect (full log below) identified this patch as introducing the failure. Full log from a failure: https://storage.kernelci.org/next/master/next-20231215/arm64/defconfig+kselftest/gcc-10/logs/kselftest.log ----- make[4]: Entering directory '/tmp/kci/linux/tools/testing/selftests/landlock' aarch64-linux-gnu-gcc -Wall -O2 -isystem /tmp/kci/linux/build/usr/include base_test.c -lcap -o /tmp/kci/linux/build/kselftest/landlock/base_test aarch64-linux-gnu-gcc -Wall -O2 -isystem /tmp/kci/linux/build/usr/include fs_test.c -lcap -o /tmp/kci/linux/build/kselftest/landlock/fs_test In file included from /tmp/kci/linux/build/usr/include/linux/fs.h:19, from fs_test.c:12: /usr/include/aarch64-linux-gnu/sys/mount.h:35:3: error: expected identifier before numeric constant 35 | MS_RDONLY = 1, /* Mount read-only. */ | ^~~~~~~~~ In file included from common.h:19, from fs_test.c:27: fs_test.c: In function ‘prepare_layout_opt’: fs_test.c:281:42: error: ‘MS_PRIVATE’ undeclared (first use in this function) 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:281:2: note: in expansion of macro ‘ASSERT_EQ’ 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c:281:42: note: each undeclared identifier is reported only once for each function it appears in 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:281:2: note: in expansion of macro ‘ASSERT_EQ’ 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c:281:55: error: ‘MS_REC’ undeclared (first use in this function) 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:281:2: note: in expansion of macro ‘ASSERT_EQ’ 281 | ASSERT_EQ(0, mount(NULL, TMP_DIR, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c: In function ‘layout1_mount_and_pivot_child’: fs_test.c:1653:44: error: ‘MS_RDONLY’ undeclared (first use in this function) 1653 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_RDONLY, NULL)); | ^~~~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:1653:2: note: in expansion of macro ‘ASSERT_EQ’ 1653 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_RDONLY, NULL)); | ^~~~~~~~~ fs_test.c: In function ‘layout1_topology_changes_with_net_only_child’: fs_test.c:1712:43: error: ‘MS_PRIVATE’ undeclared (first use in this function) 1712 | ASSERT_EQ(0, mount(NULL, dir_s1d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:1712:2: note: in expansion of macro ‘ASSERT_EQ’ 1712 | ASSERT_EQ(0, mount(NULL, dir_s1d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c:1712:56: error: ‘MS_REC’ undeclared (first use in this function) 1712 | ASSERT_EQ(0, mount(NULL, dir_s1d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:1712:2: note: in expansion of macro ‘ASSERT_EQ’ 1712 | ASSERT_EQ(0, mount(NULL, dir_s1d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c: In function ‘layout1_topology_changes_with_net_and_fs_child’: fs_test.c:1741:44: error: ‘MS_PRIVATE’ undeclared (first use in this function) 1741 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:1741:2: note: in expansion of macro ‘ASSERT_EQ’ 1741 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c:1741:57: error: ‘MS_REC’ undeclared (first use in this function) 1741 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:1741:2: note: in expansion of macro ‘ASSERT_EQ’ 1741 | ASSERT_EQ(-1, mount(NULL, dir_s3d2, NULL, MS_PRIVATE | MS_REC, NULL)); | ^~~~~~~~~ fs_test.c: In function ‘layout1_bind_setup’: fs_test.c:4340:47: error: ‘MS_BIND’ undeclared (first use in this function) 4340 | ASSERT_EQ(0, mount(dir_s1d2, dir_s2d2, NULL, MS_BIND, NULL)); | ^~~~~~~ ../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’ 707 | __typeof__(_seen) __seen = (_seen); \ | ^~~~~ fs_test.c:4340:2: note: in expansion of macro ‘ASSERT_EQ’ 4340 | ASSERT_EQ(0, mount(dir_s1d2, dir_s2d2, NULL, MS_BIND, NULL)); | ^~~~~~~~~ In file included from fs_test.c:19: fs_test.c: At top level: fs_test.c:5155:12: error: ‘MS_BIND’ undeclared here (not in a function) 5155 | .flags = MS_BIND, | ^~~~~~~ make[4]: *** [../lib.mk:147: /tmp/kci/linux/build/kselftest/landlock/fs_test] Error 1 make[4]: Leaving directory '/tmp/kci/linux/tools/testing/selftests/landlock' ----- Bisect log: ----- git bisect start # good: [a39b6ac3781d46ba18193c9dbb2110f31e9bffe9] Linux 6.7-rc5 git bisect good a39b6ac3781d46ba18193c9dbb2110f31e9bffe9 # bad: [11651f8cb2e88372d4ed523d909514dc9a613ea3] Add linux-next specific files for 20231214 git bisect bad 11651f8cb2e88372d4ed523d909514dc9a613ea3 # good: [436cc0377e881784e5d12a863db037ad7d56b700] Merge branch 'main' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git git bisect good 436cc0377e881784e5d12a863db037ad7d56b700 # good: [4acaf686fcfee1d2ce0770a1d7505cd0e66400f0] Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git git bisect good 4acaf686fcfee1d2ce0770a1d7505cd0e66400f0 # good: [81d6c0949c93b9fb46ddd53819bc1dd69b161fb5] Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git git bisect good 81d6c0949c93b9fb46ddd53819bc1dd69b161fb5 # good: [21298ae90dfc30823d4b3e8c28b536b94816a625] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git git bisect good 21298ae90dfc30823d4b3e8c28b536b94816a625 # good: [f2cd1cb9acacb72cab0f90d2d648659fda209f75] Merge branch 'kunit' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git git bisect good f2cd1cb9acacb72cab0f90d2d648659fda209f75 # good: [a3cd576f9a3d15f7697764a9439b91fd1acb603c] Merge branch 'slab/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git git bisect good a3cd576f9a3d15f7697764a9439b91fd1acb603c # bad: [79b6e5e0cf1a746e40d87053db55dce76d1fd718] Merge branch 'for-next/kspp' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git git bisect bad 79b6e5e0cf1a746e40d87053db55dce76d1fd718 # bad: [7098a5baeb1014c676b9e86025afd274807900a7] Merge branch 'sysctl-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git git bisect bad 7098a5baeb1014c676b9e86025afd274807900a7 # bad: [9b4e8cb962dfcc7d5919b0ca383ff3df7f88f7cb] Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux.git git bisect bad 9b4e8cb962dfcc7d5919b0ca383ff3df7f88f7cb # good: [2d2016fefb8edd11a87053caab3a9044dbd7093e] landlock: Add IOCTL access right git bisect good 2d2016fefb8edd11a87053caab3a9044dbd7093e # bad: [86d25e41081ec6359c75e2e873b085de03f3cd34] selftests/landlock: Test ioctl(2) and ftruncate(2) with open(O_PATH) git bisect bad 86d25e41081ec6359c75e2e873b085de03f3cd34 # bad: [a725134eca88b930bc2c5947297ccf72238a8149] selftests/landlock: Test IOCTL with memfds git bisect bad a725134eca88b930bc2c5947297ccf72238a8149 # bad: [e0bf2e60f9c35ab3fa13ff33fb3e0088fe2248c2] selftests/landlock: Test IOCTL support git bisect bad e0bf2e60f9c35ab3fa13ff33fb3e0088fe2248c2 # first bad commit: [e0bf2e60f9c35ab3fa13ff33fb3e0088fe2248c2] selftests/landlock: Test IOCTL support ----- Thanks, Aishwarya