From: jooseong lee Date: Wed, 20 Jul 2016 01:07:11 +0000 (+0900) Subject: Smack: Assign smack_known_web label for kernel thread's socket in the sk_alloc_securi... X-Git-Tag: submit/tizen/20160721.001709~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa404a01f55b1d2cea9c4fd5a1c7ecba99f80b94;p=platform%2Fkernel%2Flinux-exynos.git Smack: Assign smack_known_web label for kernel thread's socket in the sk_alloc_security hook Creating struct sock by sk_alloc function in various kernel subsystems like bluetooth dosen't call smack_socket_post_create(). In such case, received sock label is the floor('_') label and makes access deny. Refers to: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7412301b76bd53ee53b860f611fc3b5b1c2245b5 Change-Id: I614c5f0e6d59be5ca6b49f0581edfef79fc334cf Signed-off-by: jooseong lee --- diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 8e6c1e3dba5e..793c23a43b4f 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -2344,8 +2344,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;