aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjooseong lee <jooseong.lee@samsung.com>2016-11-03 06:54:39 -0400
committerCasey Schaufler <casey@schaufler-ca.com>2016-11-04 20:42:57 -0400
commit08382c9f6efe08b8bb30645c2744480cbd8f161a (patch)
tree15701167ac2f631d8844a41fdfdf106f64bae122
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>
-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)
2337 if (ssp == NULL) 2337 if (ssp == NULL)
2338 return -ENOMEM; 2338 return -ENOMEM;
2339 2339
2340 ssp->smk_in = skp; 2340 /*
2341 ssp->smk_out = skp; 2341 * Sockets created by kernel threads receive web label.
2342 */
2343 if (unlikely(current->flags & PF_KTHREAD)) {
2344 ssp->smk_in = &smack_known_web;
2345 ssp->smk_out = &smack_known_web;
2346 } else {
2347 ssp->smk_in = skp;
2348 ssp->smk_out = skp;
2349 }
2342 ssp->smk_packet = NULL; 2350 ssp->smk_packet = NULL;
2343 2351
2344 sk->sk_security = ssp; 2352 sk->sk_security = ssp;