Skip to content

Commit c237aa9

Browse files
committed
kernfs: don't fail listing extended attributes
Userspace doesn't expect a failure to list extended attributes: $ ls -lA /sys/ ls: /sys/: No data available ls: /sys/kernel: No data available ls: /sys/power: No data available ls: /sys/class: No data available ls: /sys/devices: No data available ls: /sys/dev: No data available ls: /sys/hypervisor: No data available ls: /sys/fs: No data available ls: /sys/bus: No data available ls: /sys/firmware: No data available ls: /sys/block: No data available ls: /sys/module: No data available total 0 drwxr-xr-x 2 root root 0 Jan 1 1970 block drwxr-xr-x 52 root root 0 Jan 1 1970 bus drwxr-xr-x 88 root root 0 Jan 1 1970 class drwxr-xr-x 4 root root 0 Jan 1 1970 dev drwxr-xr-x 11 root root 0 Jan 1 1970 devices drwxr-xr-x 3 root root 0 Jan 1 1970 firmware drwxr-xr-x 10 root root 0 Jan 1 1970 fs drwxr-xr-x 2 root root 0 Jul 2 09:43 hypervisor drwxr-xr-x 14 root root 0 Jan 1 1970 kernel drwxr-xr-x 251 root root 0 Jan 1 1970 module drwxr-xr-x 3 root root 0 Jul 2 09:43 power Fix it by simply reporting success when no extended attributes are available instead of reporting ENODATA. Link: https://lore.kernel.org/[email protected] Fixes: d1f4e90 ("kernfs: remove iattr_mutex") # mainline only Reported-by: André Draszik <[email protected]> Link: https://lore.kernel.org/20250819-ahndung-abgaben-524a535f8101@brauner Signed-off-by: Christian Brauner <[email protected]>
1 parent 589c12e commit c237aa9

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

fs/kernfs/inode.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size)
142142
struct kernfs_node *kn = kernfs_dentry_node(dentry);
143143
struct kernfs_iattrs *attrs;
144144

145-
attrs = kernfs_iattrs_noalloc(kn);
145+
attrs = kernfs_iattrs(kn);
146146
if (!attrs)
147-
return -ENODATA;
147+
return -ENOMEM;
148148

149149
return simple_xattr_list(d_inode(dentry), &attrs->xattrs, buf, size);
150150
}

0 commit comments

Comments
 (0)