On Mon, Feb 13, 2023 at 11:31:49AM -0700, Shuah Khan wrote: > Fix the following build error due to redefining struct mount_attr by > removing duplicate define from mount_setattr_test.c > > gcc -g -isystem .../tools/testing/selftests/../../../usr/include -Wall -O2 -pthread mount_setattr_test.c -o .../tools/testing/selftests/mount_setattr/mount_setattr_test > mount_setattr_test.c:107:8: error: redefinition of ‘struct mount_attr’ > 107 | struct mount_attr { > | ^~~~~~~~~~ > In file included from /usr/include/x86_64-linux-gnu/sys/mount.h:32, > from mount_setattr_test.c:10: > .../usr/include/linux/mount.h:129:8: note: originally defined here > 129 | struct mount_attr { > | ^~~~~~~~~~ > make: *** [../lib.mk:145: .../tools/testing/selftests/mount_setattr/mount_setattr_test] Error 1 > > Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> > --- > tools/testing/selftests/mount_setattr/mount_setattr_test.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/tools/testing/selftests/mount_setattr/mount_setattr_test.c b/tools/testing/selftests/mount_setattr/mount_setattr_test.c > index 8c5fea68ae67..582669ca38e9 100644 > --- a/tools/testing/selftests/mount_setattr/mount_setattr_test.c > +++ b/tools/testing/selftests/mount_setattr/mount_setattr_test.c > @@ -103,13 +103,6 @@ > #else > #define __NR_mount_setattr 442 > #endif > - > -struct mount_attr { > - __u64 attr_set; > - __u64 attr_clr; > - __u64 propagation; > - __u64 userns_fd; > -}; > #endif The difficulty with this is that whether or not you need this definition depends on your system headers. My laptop doesn't have definitions for either __NR_mount_setattr or struct mount_attr, so for me the build works without this patch but fails with it. I suppose we could fix this universally by using a different name for the struct in the test, e.g.: diff --git a/tools/testing/selftests/mount_setattr/mount_setattr_test.c b/tools/testing/selftests/mount_setattr/mount_setattr_test.c index 8c5fea68ae67..0658129d526e 100644 --- a/tools/testing/selftests/mount_setattr/mount_setattr_test.c +++ b/tools/testing/selftests/mount_setattr/mount_setattr_test.c @@ -103,13 +103,6 @@ #else #define __NR_mount_setattr 442 #endif - -struct mount_attr { - __u64 attr_set; - __u64 attr_clr; - __u64 propagation; - __u64 userns_fd; -}; #endif #ifndef __NR_open_tree @@ -132,6 +125,13 @@ struct mount_attr { #endif #endif +struct __mount_attr { + __u64 attr_set; + __u64 attr_clr; + __u64 propagation; + __u64 userns_fd; +}; + #ifndef MOUNT_ATTR_IDMAP #define MOUNT_ATTR_IDMAP 0x00100000 #endif @@ -141,7 +141,7 @@ struct mount_attr { #endif static inline int sys_mount_setattr(int dfd, const char *path, unsigned int flags, - struct mount_attr *attr, size_t size) + struct __mount_attr *attr, size_t size) { return syscall(__NR_mount_setattr, dfd, path, flags, attr, size); } @@ -347,7 +347,7 @@ static bool is_shared_mount(const char *path) static void *mount_setattr_thread(void *data) { - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOSUID, .attr_clr = 0, .propagation = MS_SHARED, @@ -445,7 +445,7 @@ FIXTURE_TEARDOWN(mount_setattr) TEST_F(mount_setattr, invalid_attributes) { - struct mount_attr invalid_attr = { + struct __mount_attr invalid_attr = { .attr_set = (1U << 31), }; @@ -479,11 +479,11 @@ TEST_F(mount_setattr, extensibility) { unsigned int old_flags = 0, new_flags = 0, expected_flags = 0; char *s = "dummy"; - struct mount_attr invalid_attr = {}; + struct __mount_attr invalid_attr = {}; struct mount_attr_large { - struct mount_attr attr1; - struct mount_attr attr2; - struct mount_attr attr3; + struct __mount_attr attr1; + struct __mount_attr attr2; + struct __mount_attr attr3; } large_attr = {}; if (!mount_setattr_supported()) @@ -542,7 +542,7 @@ TEST_F(mount_setattr, extensibility) TEST_F(mount_setattr, basic) { unsigned int old_flags = 0, new_flags = 0, expected_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOEXEC | MOUNT_ATTR_RELATIME, .attr_clr = MOUNT_ATTR__ATIME, }; @@ -578,7 +578,7 @@ TEST_F(mount_setattr, basic_recursive) { int fd; unsigned int old_flags = 0, new_flags = 0, expected_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOEXEC | MOUNT_ATTR_RELATIME, .attr_clr = MOUNT_ATTR__ATIME, }; @@ -672,7 +672,7 @@ TEST_F(mount_setattr, mount_has_writers) { int fd, dfd; unsigned int old_flags = 0, new_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOEXEC | MOUNT_ATTR_RELATIME, .attr_clr = MOUNT_ATTR__ATIME, .propagation = MS_SHARED, @@ -729,7 +729,7 @@ TEST_F(mount_setattr, mount_has_writers) TEST_F(mount_setattr, mixed_mount_options) { unsigned int old_flags1 = 0, old_flags2 = 0, new_flags = 0, expected_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_clr = MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOSUID | MOUNT_ATTR_NOEXEC | MOUNT_ATTR__ATIME, .attr_set = MOUNT_ATTR_RELATIME, }; @@ -763,7 +763,7 @@ TEST_F(mount_setattr, mixed_mount_options) TEST_F(mount_setattr, time_changes) { unsigned int old_flags = 0, new_flags = 0, expected_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_NODIRATIME | MOUNT_ATTR_NOATIME, }; @@ -967,7 +967,7 @@ TEST_F(mount_setattr, multi_threaded) TEST_F(mount_setattr, wrong_user_namespace) { int ret; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY, }; @@ -983,7 +983,7 @@ TEST_F(mount_setattr, wrong_user_namespace) TEST_F(mount_setattr, wrong_mount_namespace) { int fd, ret; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_RDONLY, }; @@ -1074,7 +1074,7 @@ FIXTURE_TEARDOWN(mount_setattr_idmapped) */ TEST_F(mount_setattr_idmapped, invalid_fd_negative) { - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, .userns_fd = -EBADF, }; @@ -1092,7 +1092,7 @@ TEST_F(mount_setattr_idmapped, invalid_fd_negative) */ TEST_F(mount_setattr_idmapped, invalid_fd_large) { - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, .userns_fd = INT64_MAX, }; @@ -1111,7 +1111,7 @@ TEST_F(mount_setattr_idmapped, invalid_fd_large) TEST_F(mount_setattr_idmapped, invalid_fd_closed) { int fd; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1134,7 +1134,7 @@ TEST_F(mount_setattr_idmapped, invalid_fd_closed) TEST_F(mount_setattr_idmapped, invalid_fd_initial_userns) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1243,7 +1243,7 @@ static int get_userns_fd(unsigned long nsid, unsigned long hostid, unsigned long TEST_F(mount_setattr_idmapped, attached_mount_inside_current_mount_namespace) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1273,7 +1273,7 @@ TEST_F(mount_setattr_idmapped, attached_mount_inside_current_mount_namespace) TEST_F(mount_setattr_idmapped, attached_mount_outside_current_mount_namespace) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1303,7 +1303,7 @@ TEST_F(mount_setattr_idmapped, attached_mount_outside_current_mount_namespace) TEST_F(mount_setattr_idmapped, detached_mount_inside_current_mount_namespace) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1333,7 +1333,7 @@ TEST_F(mount_setattr_idmapped, detached_mount_inside_current_mount_namespace) TEST_F(mount_setattr_idmapped, detached_mount_outside_current_mount_namespace) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1365,7 +1365,7 @@ TEST_F(mount_setattr_idmapped, detached_mount_outside_current_mount_namespace) TEST_F(mount_setattr_idmapped, change_idmapping) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1410,7 +1410,7 @@ static bool expected_uid_gid(int dfd, const char *path, int flags, TEST_F(mount_setattr_idmapped, idmap_mount_tree_invalid) { int open_tree_fd = -EBADF; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_IDMAP, }; @@ -1445,7 +1445,7 @@ TEST_F(mount_setattr, mount_attr_nosymfollow) { int fd; unsigned int old_flags = 0, new_flags = 0, expected_flags = 0; - struct mount_attr attr = { + struct __mount_attr attr = { .attr_set = MOUNT_ATTR_NOSYMFOLLOW, };