diff --git a/KernelSU-Next b/KernelSU-Next index effdc4fc0682..6bf2b9758273 160000 --- a/KernelSU-Next +++ b/KernelSU-Next @@ -1 +1 @@ -Subproject commit effdc4fc06820afde70dd1b5e94658304efdb2ab +Subproject commit 6bf2b97582732a160f98aede44ee90ebf01e79cd diff --git a/fs/susfs.c b/fs/susfs.c index 4736db202f2b..314f871a72fd 100644 --- a/fs/susfs.c +++ b/fs/susfs.c @@ -21,7 +21,7 @@ static spinlock_t susfs_spin_lock; extern bool susfs_is_current_ksu_domain(void); #ifdef CONFIG_KSU_SUSFS_SUS_MOUNT -extern void ksu_try_umount(const char *mnt, bool check_mnt, int flags, uid_t uid); +extern void try_umount(const char *mnt, bool check_mnt, int flags, uid_t uid); #endif extern bool susfs_is_avc_log_spoofing_enabled; @@ -34,6 +34,14 @@ bool susfs_is_log_enabled __read_mostly = true; #define SUSFS_LOGE(fmt, ...) #endif +bool susfs_starts_with(const char *str, const char *prefix) { + while (*prefix) { + if (*str++ != *prefix++) + return false; + } + return true; +} + /* sus_path */ #ifdef CONFIG_KSU_SUSFS_SUS_PATH static LIST_HEAD(LH_SUS_PATH_LOOP); @@ -858,9 +866,9 @@ void susfs_try_umount(uid_t target_uid) { // We should umount in reversed order list_for_each_entry_reverse(cursor, &LH_TRY_UMOUNT_PATH, list) { if (cursor->info.mnt_mode == TRY_UMOUNT_DEFAULT) { - ksu_try_umount(cursor->info.target_pathname, false, 0, target_uid); + try_umount(cursor->info.target_pathname, false, 0, target_uid); } else if (cursor->info.mnt_mode == TRY_UMOUNT_DETACH) { - ksu_try_umount(cursor->info.target_pathname, false, MNT_DETACH, target_uid); + try_umount(cursor->info.target_pathname, false, MNT_DETACH, target_uid); } else { SUSFS_LOGE("failed umounting '%s' for uid: %d, mnt_mode '%d' not supported\n", cursor->info.target_pathname, target_uid, cursor->info.mnt_mode); diff --git a/include/linux/susfs_def.h b/include/linux/susfs_def.h index 723f0b82aadb..0d66c44a23d8 100644 --- a/include/linux/susfs_def.h +++ b/include/linux/susfs_def.h @@ -94,11 +94,4 @@ static inline void susfs_set_current_proc_su_not_allowed(void) { set_ti_thread_flag(¤t->thread_info, TIF_PROC_SU_NOT_ALLOWED); } -static inline bool susfs_starts_with(const char *str, const char *prefix) { - while (*prefix) { - if (*str++ != *prefix++) - return false; - } - return true; -} #endif // #ifndef KSU_SUSFS_DEF_H diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index f064e8f56f59..53a89e66fb98 100755 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -659,6 +659,11 @@ static void s_stop(struct seq_file *m, void *p) { } +#ifdef CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS +extern bool susfs_starts_with(const char *str, const char *prefix); +#endif + + static int s_show(struct seq_file *m, void *p) { struct kallsym_iter *iter = m->private; @@ -685,7 +690,26 @@ static int s_show(struct seq_file *m, void *p) iter->type, iter->name); #else { - if (strstr(iter->name, "ksu_") || !strncmp(iter->name, "susfs_", 6) || !strncmp(iter->name, "ksud", 4)) { + if (susfs_starts_with(iter->name, "ksu_") || + susfs_starts_with(iter->name, "__ksu_") || + susfs_starts_with(iter->name, "susfs_") || + susfs_starts_with(iter->name, "ksud") || + susfs_starts_with(iter->name, "is_ksu_") || + susfs_starts_with(iter->name, "is_manager_") || + susfs_starts_with(iter->name, "escape_to_") || + susfs_starts_with(iter->name, "setup_selinux") || + susfs_starts_with(iter->name, "track_throne") || + susfs_starts_with(iter->name, "on_post_fs_data") || + susfs_starts_with(iter->name, "try_umount") || + susfs_starts_with(iter->name, "kernelsu") || + susfs_starts_with(iter->name, "__initcall__kmod_kernelsu") || + susfs_starts_with(iter->name, "apply_kernelsu") || + susfs_starts_with(iter->name, "handle_sepolicy") || + susfs_starts_with(iter->name, "getenforce") || + susfs_starts_with(iter->name, "setenforce") || + susfs_starts_with(iter->name, "is_zygote")) + { + return 0; } seq_printf(m, "%pK %c %s\n", (void *)iter->value,