fs,userns: Change inode_capable to capable_wrt_inode_uidgid
authorAndy Lutomirski <luto@amacapital.net>
Tue, 10 Jun 2014 19:45:42 +0000 (12:45 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Jun 2014 20:42:52 +0000 (13:42 -0700)
commit4f80c6c1825a91cecf3b3bd19c824e768d98fe48
treecdb4e44336c2a34d559d3a609784d74a37c7301a
parent853771148c5aa5998c423ed4dddd7605d4b4c949
fs,userns: Change inode_capable to capable_wrt_inode_uidgid

commit 23adbe12ef7d3d4195e80800ab36b37bee28cd03 upstream.

The kernel has no concept of capabilities with respect to inodes; inodes
exist independently of namespaces.  For example, inode_capable(inode,
CAP_LINUX_IMMUTABLE) would be nonsense.

This patch changes inode_capable to check for uid and gid mappings and
renames it to capable_wrt_inode_uidgid, which should make it more
obvious what it does.

Fixes CVE-2014-4014.

Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Serge Hallyn <serge.hallyn@ubuntu.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/attr.c
fs/inode.c
fs/namei.c
include/linux/capability.h
kernel/capability.c