From c4deee1e4935f0390641b89e0472202a626af679 Mon Sep 17 00:00:00 2001 From: backslashxx <118538522+backslashxx@users.noreply.github.com> Date: Sat, 24 May 2025 10:22:26 +0800 Subject: [PATCH] kernel: ksud, throne_tracker: small changes for UL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Safe Ultra-Legacy changes that don't deserve their own commit d_is_reg requires 4.0 - https://github.com/torvalds/linux/commit/e36cb0b89ce20b4f8786a57e8a6bc8476f577650 IS_REG is still there on 6.15 so I do NOT see any issues forcing it for all. strscpy requires 4.3 strscpy on this usage can be replaced with strncpy + null term. kernel gives us an option though. strlcpy is fast af, hotrod fast. It’s just memcpy + null term, so lets go with that. it got dropped in 6.8 due to risk concerns, so for those, lets use og strscpy. ref: openwrt/packages #26453 Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com> --- kernel/ksud.c | 2 +- kernel/throne_tracker.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/ksud.c b/kernel/ksud.c index 74538aeb..0bbc73ac 100644 --- a/kernel/ksud.c +++ b/kernel/ksud.c @@ -338,7 +338,7 @@ int ksu_handle_vfs_read(struct file **file_ptr, char __user **buf_ptr, return 0; } - if (!d_is_reg(file->f_path.dentry)) { + if (!S_ISREG(file->f_path.dentry->d_inode->i_mode)) { return 0; } diff --git a/kernel/throne_tracker.c b/kernel/throne_tracker.c index 9c8f9f9f..26898292 100644 --- a/kernel/throne_tracker.c +++ b/kernel/throne_tracker.c @@ -174,7 +174,11 @@ FILLDIR_RETURN_TYPE my_actor(struct dir_context *ctx, const char *name, return FILLDIR_ACTOR_CONTINUE; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) + strlcpy(data->dirpath, dirpath, DATA_PATH_LEN); +#else strscpy(data->dirpath, dirpath, DATA_PATH_LEN); +#endif data->depth = my_ctx->depth - 1; list_add_tail(&data->list, my_ctx->data_path_list); } else { @@ -230,7 +234,11 @@ void search_manager(const char *path, int depth, struct list_head *uid_data) // First depth struct data_path data; +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) + strlcpy(data.dirpath, path, DATA_PATH_LEN); +#else strscpy(data.dirpath, path, DATA_PATH_LEN); +#endif data.depth = depth; list_add_tail(&data.list, &data_path_list);