Patch update SuSFS version to 1.5.6
This commit is contained in:
@@ -64,7 +64,7 @@ config KSU_SUSFS
|
|||||||
Patch and Enable SUSFS to kernel with KernelSU.
|
Patch and Enable SUSFS to kernel with KernelSU.
|
||||||
|
|
||||||
config KSU_SUSFS_HAS_MAGIC_MOUNT
|
config KSU_SUSFS_HAS_MAGIC_MOUNT
|
||||||
bool "Say yes if the current KernelSU repo has magic mount implemented (default n)"
|
bool "Say yes if the current KernelSU repo has magic mount implemented (default y)"
|
||||||
depends on KSU
|
depends on KSU
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
|
|||||||
@@ -82,6 +82,12 @@ extern bool susfs_is_auto_add_sus_ksu_default_mount_enabled;
|
|||||||
#ifdef CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT
|
#ifdef CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT
|
||||||
extern bool susfs_is_auto_add_try_umount_for_bind_mount_enabled;
|
extern bool susfs_is_auto_add_try_umount_for_bind_mount_enabled;
|
||||||
#endif // #ifdef CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT
|
#endif // #ifdef CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT
|
||||||
|
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
extern bool susfs_is_sus_su_ready;
|
||||||
|
extern int susfs_sus_su_working_mode;
|
||||||
|
extern bool susfs_is_sus_su_hooks_enabled __read_mostly;
|
||||||
|
extern bool ksu_devpts_hook;
|
||||||
|
#endif // #ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
|
||||||
static inline void susfs_on_post_fs_data(void) {
|
static inline void susfs_on_post_fs_data(void) {
|
||||||
struct path path;
|
struct path path;
|
||||||
@@ -116,15 +122,11 @@ pr_info("susfs_is_auto_add_try_umount_for_bind_mount_enabled: %d\n", susfs_is_au
|
|||||||
}
|
}
|
||||||
#endif // #ifdef CONFIG_KSU_SUSFS
|
#endif // #ifdef CONFIG_KSU_SUSFS
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
|
||||||
extern bool susfs_is_sus_su_ready;
|
|
||||||
#endif // #ifdef CONFIG_KSU_SUSFS_SUS_SU
|
|
||||||
|
|
||||||
static bool ksu_module_mounted = false;
|
static bool ksu_module_mounted = false;
|
||||||
|
|
||||||
extern int ksu_handle_sepolicy(unsigned long arg3, void __user *arg4);
|
extern int ksu_handle_sepolicy(unsigned long arg3, void __user *arg4);
|
||||||
|
|
||||||
static bool ksu_su_compat_enabled = true;
|
bool ksu_su_compat_enabled = true;
|
||||||
extern void ksu_sucompat_init();
|
extern void ksu_sucompat_init();
|
||||||
extern void ksu_sucompat_exit();
|
extern void ksu_sucompat_exit();
|
||||||
|
|
||||||
@@ -920,6 +922,12 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
|
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
// We disable all sus_su hook whenever user toggle on su_kps
|
||||||
|
susfs_is_sus_su_hooks_enabled = false;
|
||||||
|
ksu_devpts_hook = false;
|
||||||
|
susfs_sus_su_working_mode = SUS_SU_DISABLED;
|
||||||
|
#endif
|
||||||
ksu_sucompat_init();
|
ksu_sucompat_init();
|
||||||
} else {
|
} else {
|
||||||
ksu_sucompat_exit();
|
ksu_sucompat_exit();
|
||||||
@@ -1110,11 +1118,7 @@ out_ksu_try_umount:
|
|||||||
current->pid);
|
current->pid);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_KSU_DEBUG
|
|
||||||
// umount the target mnt
|
|
||||||
pr_info("handle umount for uid: %d, pid: %d\n", new_uid.val,
|
|
||||||
current->pid);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_SUSFS_TRY_UMOUNT
|
#ifdef CONFIG_KSU_SUSFS_TRY_UMOUNT
|
||||||
// susfs come first, and lastly umount by ksu, make sure umount in reversed order
|
// susfs come first, and lastly umount by ksu, make sure umount in reversed order
|
||||||
@@ -1132,7 +1136,6 @@ out_ksu_try_umount:
|
|||||||
|
|
||||||
// try umount ksu temp path
|
// try umount ksu temp path
|
||||||
ksu_try_umount("/debug_ramdisk", false, MNT_DETACH);
|
ksu_try_umount("/debug_ramdisk", false, MNT_DETACH);
|
||||||
ksu_try_umount("/sbin", false, MNT_DETACH);
|
|
||||||
|
|
||||||
// try umount hosts file
|
// try umount hosts file
|
||||||
ksu_try_umount("/system/etc/hosts", false, MNT_DETACH);
|
ksu_try_umount("/system/etc/hosts", false, MNT_DETACH);
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ bool ksu_input_hook __read_mostly = true;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
bool ksu_devpts_hook = false;
|
|
||||||
bool susfs_is_sus_su_ready = false;
|
bool susfs_is_sus_su_ready = false;
|
||||||
#endif // #ifdef CONFIG_KSU_SUSFS_SUS_SU
|
#endif // #ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
#include <linux/version.h>
|
#include <linux/version.h>
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
||||||
#include <linux/sched/task_stack.h>
|
#include <linux/sched/task_stack.h>
|
||||||
|
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
#include <linux/susfs_def.h>
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -421,21 +424,38 @@ void ksu_sucompat_exit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
#ifdef CONFIG_KSU_SUSFS_SUS_SU
|
||||||
extern bool ksu_devpts_hook;
|
extern bool ksu_su_compat_enabled;
|
||||||
|
bool ksu_devpts_hook = false;
|
||||||
|
bool susfs_is_sus_su_hooks_enabled __read_mostly = false;
|
||||||
|
int susfs_sus_su_working_mode = 0;
|
||||||
|
|
||||||
|
static bool ksu_is_su_kps_enabled(void) {
|
||||||
|
for (int i = 0; i < ARRAY_SIZE(su_kps); i++) {
|
||||||
|
if (su_kps[i]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void ksu_susfs_disable_sus_su(void) {
|
void ksu_susfs_disable_sus_su(void) {
|
||||||
enable_kprobe(&execve_kp);
|
susfs_is_sus_su_hooks_enabled = false;
|
||||||
enable_kprobe(&newfstatat_kp);
|
|
||||||
enable_kprobe(&faccessat_kp);
|
|
||||||
enable_kprobe(&pts_unix98_lookup_kp);
|
|
||||||
ksu_devpts_hook = false;
|
ksu_devpts_hook = false;
|
||||||
|
susfs_sus_su_working_mode = SUS_SU_DISABLED;
|
||||||
|
// Re-enable the su_kps for user, users need to toggle off the kprobe hooks again in ksu manager if they want it disabled.
|
||||||
|
if (!ksu_is_su_kps_enabled()) {
|
||||||
|
ksu_sucompat_init();
|
||||||
|
ksu_su_compat_enabled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ksu_susfs_enable_sus_su(void) {
|
void ksu_susfs_enable_sus_su(void) {
|
||||||
disable_kprobe(&execve_kp);
|
if (ksu_is_su_kps_enabled()) {
|
||||||
disable_kprobe(&newfstatat_kp);
|
ksu_sucompat_exit();
|
||||||
disable_kprobe(&faccessat_kp);
|
ksu_su_compat_enabled = false;
|
||||||
disable_kprobe(&pts_unix98_lookup_kp);
|
}
|
||||||
|
susfs_is_sus_su_hooks_enabled = true;
|
||||||
ksu_devpts_hook = true;
|
ksu_devpts_hook = true;
|
||||||
|
susfs_sus_su_working_mode = SUS_SU_WITH_HOOKS;
|
||||||
}
|
}
|
||||||
#endif // CONFIG_KSU_SUSFS_SUS_SU
|
#endif // CONFIG_KSU_SUSFS_SUS_SU
|
||||||
|
|||||||
Reference in New Issue
Block a user