diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-29 08:52:27 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-29 08:52:27 +0200 |
commit | d1e7f0919ea84911e2ab965418cd502ba6a906e1 (patch) | |
tree | d9c8211ad10a522d2a98357b563cb87bf32533f3 /security/security.c | |
parent | 246e179d637ef8432fb223e4a7ddced740a32350 (diff) | |
parent | 7f5056b9e7b71149bf11073f00a57fa1ac2921a9 (diff) |
Merge tag 'fixes-v5.17-lsm-ceph-null' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
Pull security sybsystem fix from James Morris:
"Fix NULL pointer crash in LSM via Ceph, from Vivek Goyal"
* tag 'fixes-v5.17-lsm-ceph-null' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
security, lsm: dentry_init_security() Handle multi LSM registration
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/security/security.c b/security/security.c index 3d4eb474f35b..22261d79f333 100644 --- a/security/security.c +++ b/security/security.c @@ -1048,8 +1048,19 @@ int security_dentry_init_security(struct dentry *dentry, int mode, const char **xattr_name, void **ctx, u32 *ctxlen) { - return call_int_hook(dentry_init_security, -EOPNOTSUPP, dentry, mode, - name, xattr_name, ctx, ctxlen); + struct security_hook_list *hp; + int rc; + + /* + * Only one module will provide a security context. + */ + hlist_for_each_entry(hp, &security_hook_heads.dentry_init_security, list) { + rc = hp->hook.dentry_init_security(dentry, mode, name, + xattr_name, ctx, ctxlen); + if (rc != LSM_RET_DEFAULT(dentry_init_security)) + return rc; + } + return LSM_RET_DEFAULT(dentry_init_security); } EXPORT_SYMBOL(security_dentry_init_security); |