From 672041b4d67b3e54f9255760b218c53be4ebee96 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Sun, 27 Jul 2025 14:14:18 +0700 Subject: [PATCH] kernel: Replace ksu_access_ok with macro Signed-off-by: rsuntk --- kernel/kernel_compat.c | 9 --------- kernel/kernel_compat.h | 8 +++++++- kernel/sucompat.c | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/kernel/kernel_compat.c b/kernel/kernel_compat.c index 404db4d9..0875ca10 100644 --- a/kernel/kernel_compat.c +++ b/kernel/kernel_compat.c @@ -178,12 +178,3 @@ long ksu_strncpy_from_user_nofault(char *dst, const void __user *unsafe_addr, return ret; } #endif - -int ksu_access_ok(const void *addr, unsigned long size) -{ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) - return access_ok(addr, size); -#else - return access_ok(VERIFY_READ, addr, size); -#endif -} diff --git a/kernel/kernel_compat.h b/kernel/kernel_compat.h index f5aacbf2..19227a36 100644 --- a/kernel/kernel_compat.h +++ b/kernel/kernel_compat.h @@ -45,5 +45,11 @@ extern ssize_t ksu_kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos); extern ssize_t ksu_kernel_write_compat(struct file *p, const void *buf, size_t count, loff_t *pos); -extern int ksu_access_ok(const void *addr, unsigned long size); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) +#define ksu_access_ok(addr, size) (access_ok(addr, size)) +#else +#define ksu_access_ok(addr, size) (access_ok(VERIFY_READ, addr, size)) +#endif + #endif diff --git a/kernel/sucompat.c b/kernel/sucompat.c index e86a99c8..5410523e 100644 --- a/kernel/sucompat.c +++ b/kernel/sucompat.c @@ -155,7 +155,7 @@ int ksu_handle_execve_sucompat(int *fd, const char __user **filename_user, * some cpus dont really have that good speculative execution * access_ok to substitute set_fs, we check if pointer is accessible */ - if (!ksu_access_ok((const void *)filename_user, sizeof(path))) + if (!ksu_access_ok(*filename_user, sizeof(path))) return 0; // success = returns number of bytes and should be less than path