kernfs: Add option to enable user xattrs
authorDaniel Xu <dxu@dxuuu.xyz>
Thu, 12 Mar 2020 20:03:16 +0000 (13:03 -0700)
committerTejun Heo <tj@kernel.org>
Mon, 16 Mar 2020 19:53:47 +0000 (15:53 -0400)
commit0c47383ba3bd10877956e41149d19644fba937d1
treec3d3b420f3a961c2fb4ab56feed39bf129933939
parenta46a22955bae16fc5a756af7188d3ccb25c3f797
kernfs: Add option to enable user xattrs

User extended attributes are useful as metadata storage for kernfs
consumers like cgroups. Especially in the case of cgroups, it is useful
to have a central metadata store that multiple processes/services can
use to coordinate actions.

A concrete example is for userspace out of memory killers. We want to
let delegated cgroup subtree owners (running as non-root) to be able to
say "please avoid killing this cgroup". This is especially important for
desktop linux as delegated subtrees owners are less likely to run as
root.

This patch introduces a new flag, KERNFS_ROOT_SUPPORT_USER_XATTR, that
lets kernfs consumers enable user xattr support. An initial limit of 128
entries or 128KB -- whichever is hit first -- is placed per cgroup
because xattrs come from kernel memory and we don't want to let
unprivileged users accidentally eat up too much kernel memory.

Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
Acked-by: Chris Down <chris@chrisdown.name>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
fs/kernfs/inode.c
fs/kernfs/kernfs-internal.h
include/linux/kernfs.h