selinux: do not check open permission on sockets
authorStephen Smalley <sds@tycho.nsa.gov>
Fri, 12 May 2017 16:41:24 +0000 (12:41 -0400)
committerPaul Moore <paul@paul-moore.com>
Tue, 23 May 2017 14:23:42 +0000 (10:23 -0400)
commitccb544781d34afdb73a9a73ae53035d824d193bf
treea5c7f6475061a3b42f887d43870224af13373eba
parent3ba4bf5f1e2c58bddd84ba27c5aeaf8ca1d36bff
selinux: do not check open permission on sockets

open permission is currently only defined for files in the kernel
(COMMON_FILE_PERMS rather than COMMON_FILE_SOCK_PERMS). Construction of
an artificial test case that tries to open a socket via /proc/pid/fd will
generate a recvfrom avc denial because recvfrom and open happen to map to
the same permission bit in socket vs file classes.

open of a socket via /proc/pid/fd is not supported by the kernel regardless
and will ultimately return ENXIO. But we hit the permission check first and
can thus produce these odd/misleading denials.  Omit the open check when
operating on a socket.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/hooks.c