Kernel threads excluded from smack checks
authorRoman Kubiak <r.kubiak@samsung.com>
Mon, 10 Aug 2015 14:54:25 +0000 (16:54 +0200)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 31 Mar 2016 07:40:50 +0000 (16:40 +0900)
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>
security/smack/smack_access.c

index 012785a789737993136f94ca3f6a83642b3c3a2e..89d18bfae53a85e061776fed485e2892f1b28d99 100644 (file)
@@ -651,6 +651,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;