summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2021-02-01 11:53:05 +0900
committerTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2021-02-01 11:53:05 +0900
commit9c83465f3245c2faa82ffeb7016f40f02bfaa0ad (patch)
tree2eeddbaf52a3a3e3233ffec28e8deecddd0c8195
parent5797e861e402fff2bedce4ec8b7c89f4248b6073 (diff)
downloadlinux-9c83465f3245c2faa82ffeb7016f40f02bfaa0ad.tar.bz2
tomoyo: recognize kernel threads correctly
Commit db68ce10c4f0a27c ("new helper: uaccess_kernel()") replaced segment_eq(get_fs(), KERNEL_DS) with uaccess_kernel(). But the correct method for tomoyo to check whether current is a kernel thread in order to assume that kernel threads are privileged for socket operations was (current->flags & PF_KTHREAD). Now that uaccess_kernel() became 0 on x86, tomoyo has to fix this problem. Do like commit 942cb357ae7d9249 ("Smack: Handle io_uring kernel thread privileges") does. Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
-rw-r--r--security/tomoyo/network.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/security/tomoyo/network.c b/security/tomoyo/network.c
index a89ed55d85d4..478f757ff843 100644
--- a/security/tomoyo/network.c
+++ b/security/tomoyo/network.c
@@ -613,7 +613,7 @@ static int tomoyo_check_unix_address(struct sockaddr *addr,
static bool tomoyo_kernel_service(void)
{
/* Nothing to do if I am a kernel service. */
- return uaccess_kernel();
+ return (current->flags & (PF_KTHREAD | PF_IO_WORKER)) == PF_KTHREAD;
}
/**