From 223f5588df4aece8595637e354c0c1d20e8d367d Mon Sep 17 00:00:00 2001 From: weishu Date: Mon, 19 Dec 2022 17:14:38 +0700 Subject: [PATCH] kernel: always disable seccomp --- kernel/ksu.c | 13 ++++++------- kernel/sucompat.c | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/kernel/ksu.c b/kernel/ksu.c index ba551123..0132d232 100644 --- a/kernel/ksu.c +++ b/kernel/ksu.c @@ -38,7 +38,7 @@ #define CMD_GET_ALLOW_LIST 5 #define CMD_GET_DENY_LIST 6 -void escape_to_root(bool disable_seccomp) { +void escape_to_root() { struct cred* cred; cred = (struct cred *)__task_cred(current); @@ -56,11 +56,10 @@ void escape_to_root(bool disable_seccomp) { memset(&cred->cap_bset, 0xff, sizeof(cred->cap_bset)); memset(&cred->cap_ambient, 0xff, sizeof(cred->cap_ambient)); - if (disable_seccomp) { - current_thread_info()->flags = 0; - current->seccomp.mode = 0; - current->seccomp.filter = NULL; - } + // disable seccomp + current_thread_info()->flags &= ~TIF_SECCOMP; + current->seccomp.mode = 0; + current->seccomp.filter = NULL; setup_selinux(); } @@ -182,7 +181,7 @@ static int handler_pre(struct kprobe *p, struct pt_regs *regs) { if (arg2 == CMD_GRANT_ROOT) { if (is_allow_su()) { pr_info("allow root for: %d\n", current_uid()); - escape_to_root(true); + escape_to_root(); } else { pr_info("deny root for: %d\n", current_uid()); // add it to deny list! diff --git a/kernel/sucompat.c b/kernel/sucompat.c index 328d7c13..43860e24 100644 --- a/kernel/sucompat.c +++ b/kernel/sucompat.c @@ -24,7 +24,7 @@ #define SU_PATH "/system/bin/su" #define SH_PATH "/system/bin/sh" -extern void escape_to_root(bool); +extern void escape_to_root(); static void __user *userspace_stack_buffer(const void *d, size_t len) { /* To avoid having to mmap a page in userspace, just write below the stack pointer. */ @@ -113,7 +113,7 @@ static int execve_handler_pre(struct kprobe *p, struct pt_regs *regs) { pr_info("do_execveat_common su found\n"); memcpy((void*) filename->name, sh, sizeof(sh)); - escape_to_root(false); + escape_to_root(); } return 0;