From: jooseong lee Date: Thu, 3 Nov 2016 10:54:39 +0000 (+0100) Subject: BACKPORT: Smack: Assign smack_known_web label for kernel thread's X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d8c5f96afa5f1ecf0a4ddbaeca457a12f3690709;p=platform%2Fkernel%2Flinux-stable.git BACKPORT: 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 Acked-by: Casey Schaufler (cherry-picked from upstream 08382c9f6efe08b8bb30645c2744480cbd8f161a) --- diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 2b747ad1afbf..03de2725adcb 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -2313,8 +2313,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;