From d36371580bf956adfafee78e201dcf722c043057 Mon Sep 17 00:00:00 2001 From: Wang Han <416810799@qq.com> Date: Sun, 9 Nov 2025 20:29:26 +0700 Subject: [PATCH] kernel: add missing kfree, use proper return code * This is half picked from https://github.com/tiann/KernelSU/commit/559be41482dc965636823d11753dc344a875e6d2 * We haven't sync latest upstream changes yet Signed-off-by: Faris --- kernel/allowlist.c | 11 ++++++----- kernel/supercalls.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/kernel/allowlist.c b/kernel/allowlist.c index a0af8676..8d2ad8e2 100644 --- a/kernel/allowlist.c +++ b/kernel/allowlist.c @@ -382,21 +382,20 @@ static void do_persistent_allow_list(struct callback_head *_cb) if (IS_ERR(fp)) { pr_err("save_allow_list create file failed: %ld\n", PTR_ERR(fp)); - mutex_unlock(&allowlist_mutex); - return; + goto unlock; } // store magic and version if (ksu_kernel_write_compat(fp, &magic, sizeof(magic), &off) != sizeof(magic)) { pr_err("save_allow_list write magic failed.\n"); - goto exit; + goto close_file; } if (ksu_kernel_write_compat(fp, &version, sizeof(version), &off) != sizeof(version)) { pr_err("save_allow_list write version failed.\n"); - goto exit; + goto close_file; } list_for_each (pos, &allow_list) { @@ -409,9 +408,11 @@ static void do_persistent_allow_list(struct callback_head *_cb) &off); } -exit: +close_file: filp_close(fp, 0); +unlock: mutex_unlock(&allowlist_mutex); + kfree(_cb); } void persistent_allow_list(void) diff --git a/kernel/supercalls.c b/kernel/supercalls.c index f35abac3..e62b8788 100644 --- a/kernel/supercalls.c +++ b/kernel/supercalls.c @@ -348,7 +348,7 @@ static int do_set_feature(void __user *arg) static int do_get_wrapper_fd(void __user *arg) { if (!ksu_file_sid) { - return -1; + return -EINVAL; } const char *anon_name = "[ksu_fdwrapper]";