On Mon, Aug 03, 2026 at 08:38:37PM +0530, Disha Goel wrote:
> kernfs_test assumes that flistxattr() on /sys/kernel/warn_count always
> returns an empty list. However, systems with SELinux enabled may expose
> security.selinux xattr via listxattr() during policy load, which makes
> the test fail even though kernfs is behaving correctly.
> 
> Skip the xattr content check if any xattrs are present, while still
> verifying that flistxattr() succeeds (returns >= 0) on a kernfs file.
> The existing user.foo getxattr check remains unchanged.
> 
> This avoids false failures on SELinux-enabled systems while preserving
> the original purpose of the test.
> 
> Tested-by: Yeswanth Krishna <[email protected]>
> Signed-off-by: Disha Goel <[email protected]>
> ---
> v2 -> v3
> - Skip the xattr content check instead of allowlisting security.selinux,
>   as suggested by Ojaswin.
> - Add Tested-by tag.
> 
> Link to v2: 
> https://lore.kernel.org/all/[email protected]/

Thanks for the change, looks good now.

Feel free to add:
Reviewed-by: Ojaswin Mujoo <[email protected]>

Regards,
ojaswin
 
> 
>  .../testing/selftests/filesystems/kernfs_test.c  | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/filesystems/kernfs_test.c 
> b/tools/testing/selftests/filesystems/kernfs_test.c
> index 84c2b910a60d..ca13646c9328 100644
> --- a/tools/testing/selftests/filesystems/kernfs_test.c
> +++ b/tools/testing/selftests/filesystems/kernfs_test.c
> @@ -12,12 +12,24 @@
>  
>  TEST(kernfs_listxattr)
>  {
> +     ssize_t len;
>       int fd;
>  
> -     /* Read-only file that can never have any extended attributes set. */
> +     /* Read-only file that can never have any extended attributes set.
> +      * However, on systems with SELinux enabled, security.selinux xattr
> +      * may be present. Skip the content check if any xattrs are found.
> +      */
>       fd = open("/sys/kernel/warn_count", O_RDONLY | O_CLOEXEC);
>       ASSERT_GE(fd, 0);
> -     ASSERT_EQ(flistxattr(fd, NULL, 0), 0);
> +
> +     len = flistxattr(fd, NULL, 0);
> +     ASSERT_GE(len, 0);
> +
> +     if (len > 0) {
> +             close(fd);
> +             SKIP(return, "xattrs present on /sys/kernel/warn_count, 
> skipping xattr content check");
> +     }
> +
>       EXPECT_EQ(close(fd), 0);
>  }
>  
> -- 
> 2.45.1
> 

Reply via email to