kernel: susfs: CONFIG_KSU_SUSFS_INFO syscall to get susfs version & variant

This commit is contained in:
Rifat Azad
2024-12-06 22:48:14 +06:00
parent 199a388c98
commit e1107e514d
3 changed files with 53 additions and 0 deletions

View File

@@ -154,6 +154,13 @@ config KSU_SUSFS_SUS_SU
- Only apps with root access granted by ksu manager are allowed to get root.
- Also overlayfs is required.
config KSU_SUSFS_INFO
bool "Enable meta-data of susfs"
depends on KSU_SUSFS
default y
help
- Allow parsing meta-data of susfs version info.
endmenu
endmenu

View File

@@ -196,6 +196,9 @@ endif
ifdef KSU_SUSFS_SUS_SU
ccflags-y += -DKSU_SUSFS_SUS_SU
endif
ifdef KSU_SUSFS_INFO
ccflags-y += -DKSU_SUSFS_INFO
endif
else
$(info -- You have not integrate susfs in your kernel.)
$(info -- Read: https://gitlab.com/simonpunk/susfs4ksu)

View File

@@ -590,6 +590,49 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
return 0;
}
#endif //#ifdef CONFIG_KSU_SUSFS_SUS_SU
#ifdef CONFIG_KSU_SUSFS_INFO
if (arg2 == CMD_SUSFS_SHOW_VERSION) {
const char *version = SUSFS_VERSION;
int error = 0;
if (copy_to_user((void __user*)arg3, version, strlen(version) + 1)) {
pr_info("susfs: copy_to_user() failed\n");
error = -EFAULT;
}
if (copy_to_user((void __user*)arg5, version, strlen(version) + 1)) {
pr_info("susfs: copy_to_user() failed\n");
error = -EFAULT;
}
if (copy_to_user((void __user*)arg5 + strlen(version) + 1, &error, sizeof(error))) {
pr_info("susfs: copy_to_user() failed (error status)\n");
}
return 0;
}
if (arg2 == CMD_SUSFS_SHOW_VARIANT) {
const char *variant = SUSFS_VARIANT;
int error = 0;
if (copy_to_user((void __user*)arg3, variant, strlen(variant) + 1)) {
pr_info("susfs: copy_to_user() failed\n");
error = -EFAULT;
}
if (copy_to_user((void __user*)arg5, variant, strlen(variant) + 1)) {
pr_info("susfs: copy_to_user() failed\n");
error = -EFAULT;
}
if (copy_to_user((void __user*)arg5 + strlen(variant) + 1, &error, sizeof(error))) {
pr_info("susfs: copy_to_user() failed (error status)\n");
}
return 0;
}
#endif //#ifdef CONFIG_KSU_SUSFS_INFO
}
#endif //#ifdef CONFIG_KSU_SUSFS