1*70619d40SChristian Brauner // SPDX-License-Identifier: GPL-2.0 2*70619d40SChristian Brauner #define _GNU_SOURCE 3*70619d40SChristian Brauner #define __SANE_USERSPACE_TYPES__ 4*70619d40SChristian Brauner 5*70619d40SChristian Brauner #include <fcntl.h> 6*70619d40SChristian Brauner #include <stdio.h> 7*70619d40SChristian Brauner #include <sys/stat.h> 8*70619d40SChristian Brauner #include <sys/xattr.h> 9*70619d40SChristian Brauner 10*70619d40SChristian Brauner #include "../kselftest_harness.h" 11*70619d40SChristian Brauner #include "wrappers.h" 12*70619d40SChristian Brauner 13*70619d40SChristian Brauner TEST(kernfs_listxattr) 14*70619d40SChristian Brauner { 15*70619d40SChristian Brauner int fd; 16*70619d40SChristian Brauner 17*70619d40SChristian Brauner /* Read-only file that can never have any extended attributes set. */ 18*70619d40SChristian Brauner fd = open("/sys/kernel/warn_count", O_RDONLY | O_CLOEXEC); 19*70619d40SChristian Brauner ASSERT_GE(fd, 0); 20*70619d40SChristian Brauner ASSERT_EQ(flistxattr(fd, NULL, 0), 0); 21*70619d40SChristian Brauner EXPECT_EQ(close(fd), 0); 22*70619d40SChristian Brauner } 23*70619d40SChristian Brauner 24*70619d40SChristian Brauner TEST(kernfs_getxattr) 25*70619d40SChristian Brauner { 26*70619d40SChristian Brauner int fd; 27*70619d40SChristian Brauner char buf[1]; 28*70619d40SChristian Brauner 29*70619d40SChristian Brauner /* Read-only file that can never have any extended attributes set. */ 30*70619d40SChristian Brauner fd = open("/sys/kernel/warn_count", O_RDONLY | O_CLOEXEC); 31*70619d40SChristian Brauner ASSERT_GE(fd, 0); 32*70619d40SChristian Brauner ASSERT_LT(fgetxattr(fd, "user.foo", buf, sizeof(buf)), 0); 33*70619d40SChristian Brauner ASSERT_EQ(errno, ENODATA); 34*70619d40SChristian Brauner EXPECT_EQ(close(fd), 0); 35*70619d40SChristian Brauner } 36*70619d40SChristian Brauner 37*70619d40SChristian Brauner TEST_HARNESS_MAIN 38*70619d40SChristian Brauner 39