BACKPORT: Kernel threads excluded from smack checks
authorRoman Kubiak <r.kubiak@samsung.com>
Mon, 10 Aug 2015 14:54:25 +0000 (16:54 +0200)
committerRafal Krypa <r.krypa@samsung.com>
Tue, 22 Mar 2016 11:49:21 +0000 (12:49 +0100)
Adds an ignore case for kernel tasks,
so that they can access all resources.

Since kernel worker threads are spawned with
floor label, they are severely restricted by
Smack policy. It is not an issue without onlycap,
as these processes also run with root,
so CAP_MAC_OVERRIDE kicks in. But with onlycap
turned on, there is no way to change the label
for these processes.

Signed-off-by: Roman Kubiak <r.kubiak@samsung.com>
Acked-by: Casey Schaufler <casey@schaufler-ca.com>
(cherry-picked from upstream 41a2d5751616e38d1e293e3cb35a6e2bc7a03473)

security/smack/smack_access.c

index 98e7da10af9f51d468fdf7cc497f3fff3296fc11..8aef66fb2e0336e3174c7617b5b380d4d37252ca 100644 (file)
@@ -639,6 +639,12 @@ int smack_privileged(int cap)
        struct smack_known *skp = smk_of_current();
        struct smack_onlycap *sop;
 
+       /*
+        * All kernel tasks are privileged
+        */
+       if (unlikely(current->flags & PF_KTHREAD))
+               return 1;
+
        if (!capable(cap))
                return 0;