summaryrefslogtreecommitdiff
path: root/security/smack
diff options
context:
space:
mode:
authorjooseong lee <jooseong.lee@samsung.com>2016-11-03 11:54:39 +0100
committerCasey Schaufler <casey@schaufler-ca.com>2016-11-04 17:42:57 -0700
commit08382c9f6efe08b8bb30645c2744480cbd8f161a (patch)
tree15701167ac2f631d8844a41fdfdf106f64bae122 /security/smack
parent07d9a380680d1c0eb51ef87ff2eab5c994949e69 (diff)
Smack: Assign smack_known_web label for kernel thread's
Assign smack_known_web label for kernel thread's socket Creating struct sock by sk_alloc function in various kernel subsystems like bluetooth doesn't call smack_socket_post_create(). In such case, received sock label is the floor('_') label and makes access deny. Signed-off-by: jooseong lee <jooseong.lee@samsung.com> Acked-by: Casey Schaufler <casey@schaufler-ca.com>
Diffstat (limited to 'security/smack')
-rw-r--r--security/smack/smack_lsm.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 1cb060293505..e73460d5acc6 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -2337,8 +2337,16 @@ static int smack_sk_alloc_security(struct sock *sk, int family, gfp_t gfp_flags)
if (ssp == NULL)
return -ENOMEM;
- ssp->smk_in = skp;
- ssp->smk_out = skp;
+ /*
+ * Sockets created by kernel threads receive web label.
+ */
+ if (unlikely(current->flags & PF_KTHREAD)) {
+ ssp->smk_in = &smack_known_web;
+ ssp->smk_out = &smack_known_web;
+ } else {
+ ssp->smk_in = skp;
+ ssp->smk_out = skp;
+ }
ssp->smk_packet = NULL;
sk->sk_security = ssp;