On Tue, Jun 28, 2022 at 04:19:47PM +0000, KP Singh wrote: > LSMs like SELinux store security state in xattrs. bpf_getxattr enables > BPF LSM to implement similar functionality. In combination with > bpf_local_storage, xattrs can be used to develop more complex security > policies. > > This kfunc wraps around __vfs_getxattr which can sleep and is, > therefore, limited to sleepable programs using the newly added > sleepable_set for kfuncs. "Sleepable" is nowhere near enough - for a trivial example, consider what e.g. ext2_xattr_get() does. down_read(&EXT2_I(inode)->xattr_sem); in there means that having that thing executed in anything that happens to hold ->xattr_sem is a deadlock fodder. "Can't use that in BPF program executed in non-blocking context" is *not* sufficient to make it safe.