Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/pidfd: test extended attribute support

Test that extended attributes are permanent.

Link: https://lore.kernel.org/20250618-work-pidfs-persistent-v2-14-98f3456fd552@kernel.org
Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>

+35
+35
tools/testing/selftests/pidfd/pidfd_xattr_test.c
··· 94 94 } 95 95 } 96 96 97 + TEST_F(pidfs_xattr, set_get_list_xattr_persistent) 98 + { 99 + int ret; 100 + char buf[32]; 101 + char list[PATH_MAX] = {}; 102 + 103 + ret = fsetxattr(self->child_pidfd, "trusted.persistent", "persistent value", strlen("persistent value"), 0); 104 + ASSERT_EQ(ret, 0); 105 + 106 + memset(buf, 0, sizeof(buf)); 107 + ret = fgetxattr(self->child_pidfd, "trusted.persistent", buf, sizeof(buf)); 108 + ASSERT_EQ(ret, strlen("persistent value")); 109 + ASSERT_EQ(strcmp(buf, "persistent value"), 0); 110 + 111 + ret = flistxattr(self->child_pidfd, list, sizeof(list)); 112 + ASSERT_GT(ret, 0); 113 + ASSERT_EQ(strcmp(list, "trusted.persistent"), 0) 114 + 115 + ASSERT_EQ(close(self->child_pidfd), 0); 116 + self->child_pidfd = -EBADF; 117 + sleep(2); 118 + 119 + self->child_pidfd = sys_pidfd_open(self->child_pid, 0); 120 + ASSERT_GE(self->child_pidfd, 0); 121 + 122 + memset(buf, 0, sizeof(buf)); 123 + ret = fgetxattr(self->child_pidfd, "trusted.persistent", buf, sizeof(buf)); 124 + ASSERT_EQ(ret, strlen("persistent value")); 125 + ASSERT_EQ(strcmp(buf, "persistent value"), 0); 126 + 127 + ret = flistxattr(self->child_pidfd, list, sizeof(list)); 128 + ASSERT_GT(ret, 0); 129 + ASSERT_EQ(strcmp(list, "trusted.persistent"), 0); 130 + } 131 + 97 132 TEST_HARNESS_MAIN