Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

security: Fix security_old_inode_init_security() when CONFIG_SECURITY is not set

Commit 1e39f384bb01 ("evm: fix build problems") makes the stub version
of security_old_inode_init_security() return 0 when CONFIG_SECURITY is
not set.

But that makes callers such as reiserfs_security_init() assume that
security_old_inode_init_security() has set name, value, and len
arguments properly - but security_old_inode_init_security() left them
uninitialized which then results in interesting failures.

Revert security_old_inode_init_security() to the old behavior of
returning EOPNOTSUPP since both callers (reiserfs and ocfs2) handle this
just fine.

[ Also fixed the S_PRIVATE(inode) case of the actual non-stub
security_old_inode_init_security() function to return EOPNOTSUPP
for the same reason, as pointed out by Mimi Zohar.

It got incorrectly changed to match the new function in commit
fb88c2b6cbb1: "evm: fix security/security_old_init_security return
code". - Linus ]

Reported-by: Jorge Bastos <mysql.jorge@decimal.pt>
Acked-by: James Morris <jmorris@namei.org>
Acked-by: Mimi Zohar <zohar@us.ibm.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Jan Kara and committed by
Linus Torvalds
30e05324 4376eee9

+2 -2
+1 -1
include/linux/security.h
··· 2056 2056 char **name, void **value, 2057 2057 size_t *len) 2058 2058 { 2059 - return 0; 2059 + return -EOPNOTSUPP; 2060 2060 } 2061 2061 2062 2062 static inline int security_inode_create(struct inode *dir,
+1 -1
security/security.c
··· 381 381 void **value, size_t *len) 382 382 { 383 383 if (unlikely(IS_PRIVATE(inode))) 384 - return 0; 384 + return -EOPNOTSUPP; 385 385 return security_ops->inode_init_security(inode, dir, qstr, name, value, 386 386 len); 387 387 }