From 0b86cd69fc6a41395a963030eae5ca080d141c9d Mon Sep 17 00:00:00 2001 From: Scirese <62688390+Scirese@users.noreply.github.com> Date: Sat, 14 Jan 2023 21:52:57 +0800 Subject: [PATCH] [skip ci] kernel: allow root processes to get version (#63) --- kernel/ksu.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/kernel/ksu.c b/kernel/ksu.c index 92d1989d..8de2bd90 100644 --- a/kernel/ksu.c +++ b/kernel/ksu.c @@ -244,6 +244,18 @@ static int handler_pre(struct kprobe *p, struct pt_regs *regs) return 0; } + + // Both root manager and root processes should be allowed to get version + if (arg2 == CMD_GET_VERSION) { + if (is_manager() || 0 == current_uid().val) { + u32 version = KERNEL_SU_VERSION; + if (copy_to_user(arg3, & version, sizeof(version))) { + pr_err("prctl reply error, cmd: %d\n", arg2); + return 0; + } + } + } + // all other cmds are for 'root manager' if (!is_manager()) { pr_info("Only manager can do cmd: %d\n", arg2); @@ -280,11 +292,6 @@ static int handler_pre(struct kprobe *p, struct pt_regs *regs) pr_err("prctl copy allowlist error\n"); } } - } else if (arg2 == CMD_GET_VERSION) { - u32 version = KERNEL_SU_VERSION; - if (copy_to_user(arg3, &version, sizeof(version))) { - pr_err("prctl reply error, cmd: %d\n", arg2); - } } return 0;