Only in Kernel-kernelsu-0.9.5: KernelSU
diff -ur Kernel/Makefile Kernel-kernelsu-0.9.5/Makefile
--- Kernel/Makefile	2022-12-16 09:44:50.000000000 +0100
+++ Kernel-kernelsu-0.9.5/Makefile	2025-08-05 04:56:36.400478963 +0200
@@ -320,7 +320,8 @@
 # Default value for CROSS_COMPILE is not to prefix executables
 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
 ARCH            ?= arm64
-CROSS_COMPILE   ?= $(srctree)/toolchain/clang/host/linux-x86/clang-r383902/bin/aarch64-linux-gnu-
+#CROSS_COMPILE   ?= $(srctree)/toolchain/clang/host/linux-x86/clang-r383902/bin/aarch64-linux-gnu-
+CROSS_COMPILE   ?= aarch64-linux-gnu-
 
 # Architecture as present in compile.h
 UTS_MACHINE 	:= $(ARCH)
@@ -386,7 +387,7 @@
 OBJSIZE		= llvm-size
 STRIP		= llvm-strip
 else
-CC		= $(srctree)/toolchain/clang/host/linux-x86/clang-r383902/bin/clang
+CC		= clang
 LD		= $(CROSS_COMPILE)ld
 AR		= $(CROSS_COMPILE)ar
 NM		= $(CROSS_COMPILE)nm
diff -ur Kernel/arch/arm64/configs/gta7litewifi_defconfig Kernel-kernelsu-0.9.5/arch/arm64/configs/gta7litewifi_defconfig
--- Kernel/arch/arm64/configs/gta7litewifi_defconfig	2024-06-18 14:34:14.000000000 +0200
+++ Kernel-kernelsu-0.9.5/arch/arm64/configs/gta7litewifi_defconfig	2025-08-08 23:05:19.777624352 +0200
@@ -580,7 +580,7 @@
 #
 # General architecture-dependent options
 #
-CONFIG_KPROBES=y
+# CONFIG_KPROBES is not set
 # CONFIG_JUMP_LABEL is not set
 CONFIG_UPROBES=y
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
diff -ur Kernel/drivers/Kconfig Kernel-kernelsu-0.9.5/drivers/Kconfig
--- Kernel/drivers/Kconfig	2024-06-18 14:34:26.000000000 +0200
+++ Kernel-kernelsu-0.9.5/drivers/Kconfig	2025-08-05 08:04:22.711654447 +0200
@@ -233,4 +233,5 @@
 
 source "drivers/battery/Kconfig"
 
+source "drivers/kernelsu/Kconfig"
 endmenu
diff -ur Kernel/drivers/Makefile Kernel-kernelsu-0.9.5/drivers/Makefile
--- Kernel/drivers/Makefile	2024-06-18 14:34:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/drivers/Makefile	2025-08-05 08:04:22.707654326 +0200
@@ -195,3 +195,5 @@
 obj-$(CONFIG_SWITCH)		+= switch/
 obj-$(CONFIG_SEC_EXT)	+= samsung/
 obj-$(CONFIG_BATTERY_SAMSUNG)   += battery/
+
+obj-$(CONFIG_KSU) += kernelsu/
Only in Kernel-kernelsu-0.9.5/drivers: kernelsu
diff -ur Kernel/fs/devpts/inode.c Kernel-kernelsu-0.9.5/fs/devpts/inode.c
--- Kernel/fs/devpts/inode.c	2024-06-18 13:57:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/fs/devpts/inode.c	2025-08-08 20:01:59.548092909 +0200
@@ -599,6 +599,10 @@
 	return dentry;
 }
 
+#ifdef CONFIG_KSU
+extern int ksu_handle_devpts(struct inode*);
+#endif
+
 /**
  * devpts_get_priv -- get private data for a slave
  * @pts_inode: inode of the slave
@@ -607,7 +611,11 @@
  */
 void *devpts_get_priv(struct dentry *dentry)
 {
-	if (dentry->d_sb->s_magic != DEVPTS_SUPER_MAGIC)
+#ifdef CONFIG_KSU
+    ksu_handle_devpts(dentry->d_inode);
+#endif
+
+    if (dentry->d_sb->s_magic != DEVPTS_SUPER_MAGIC)
 		return NULL;
 	return dentry->d_fsdata;
 }
diff -ur Kernel/fs/exec.c Kernel-kernelsu-0.9.5/fs/exec.c
--- Kernel/fs/exec.c	2024-06-18 13:57:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/fs/exec.c	2025-08-05 12:58:56.730978806 +0200
@@ -1901,11 +1901,26 @@
 	return retval;
 }
 
+#ifdef CONFIG_KSU
+extern bool ksu_execveat_hook __read_mostly;
+extern int ksu_handle_execveat(int *fd, struct filename **filename_ptr, void *argv,
+			void *envp, int *flags);
+extern int ksu_handle_execveat_sucompat(int *fd, struct filename **filename_ptr,
+				 void *argv, void *envp, int *flags);
+#endif
+
 static int do_execveat_common(int fd, struct filename *filename,
 			      struct user_arg_ptr argv,
 			      struct user_arg_ptr envp,
 			      int flags)
 {
+#ifdef CONFIG_KSU
+	if (unlikely(ksu_execveat_hook))
+		ksu_handle_execveat(&fd, &filename, &argv, &envp, &flags);
+	else
+		ksu_handle_execveat_sucompat(&fd, &filename, &argv, &envp, &flags);
+#endif
+
 	return __do_execve_file(fd, filename, argv, envp, flags, NULL);
 }
 
diff -ur Kernel/fs/namespace.c Kernel-kernelsu-0.9.5/fs/namespace.c
--- Kernel/fs/namespace.c	2024-06-18 13:57:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/fs/namespace.c	2025-08-08 20:03:32.838937005 +0200
@@ -1701,6 +1701,40 @@
 	return capable(CAP_SYS_ADMIN);
 }
 
+static int can_umount(const struct path *path, int flags)
+{
+	struct mount *mnt = real_mount(path->mnt);
+
+	if (flags & ~(MNT_FORCE | MNT_DETACH | MNT_EXPIRE | UMOUNT_NOFOLLOW))
+		return -EINVAL;
+	if (!may_mount())
+		return -EPERM;
+	if (path->dentry != path->mnt->mnt_root)
+		return -EINVAL;
+	if (!check_mnt(mnt))
+		return -EINVAL;
+	if (mnt->mnt.mnt_flags & MNT_LOCKED) /* Check optimistically */
+		return -EINVAL;
+	if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))
+		return -EPERM;
+	return 0;
+}
+
+int path_umount(struct path *path, int flags)
+{
+	struct mount *mnt = real_mount(path->mnt);
+	int ret;
+
+	ret = can_umount(path, flags);
+	if (!ret)
+		ret = do_umount(mnt, flags);
+
+	/* we mustn't call path_put() as that would clear mnt_expiry_mark */
+	dput(path->dentry);
+	mntput_no_expire(mnt);
+	return ret;
+}
+
 /*
  * Now umount can handle mount points as well as block devices.
  * This is important for filesystems which use unnamed block devices.
diff -ur Kernel/fs/open.c Kernel-kernelsu-0.9.5/fs/open.c
--- Kernel/fs/open.c	2024-06-18 13:57:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/fs/open.c	2025-08-05 13:03:08.250617991 +0200
@@ -352,6 +352,11 @@
 	return ksys_fallocate(fd, mode, offset, len);
 }
 
+#ifdef CONFIG_KSU
+extern int ksu_handle_faccessat(int *dfd, const char __user **filename_user, int *mode,
+				int *flags);
+#endif
+
 /*
  * access() needs to use the real uid/gid, not the effective uid/gid.
  * We do this by temporarily clearing all FS-related capabilities and
@@ -366,7 +371,10 @@
 	struct vfsmount *mnt;
 	int res;
 	unsigned int lookup_flags = LOOKUP_FOLLOW;
-
+#ifdef CONFIG_KSU
+	ksu_handle_faccessat(&dfd, &filename, &mode, NULL);
+#endif
+	
 	if (mode & ~S_IRWXO)	/* where's F_OK, X_OK, W_OK, R_OK? */
 		return -EINVAL;
 
diff -ur Kernel/fs/stat.c Kernel-kernelsu-0.9.5/fs/stat.c
--- Kernel/fs/stat.c	2024-06-18 13:57:15.000000000 +0200
+++ Kernel-kernelsu-0.9.5/fs/stat.c	2025-08-05 13:10:22.431802694 +0200
@@ -148,6 +148,10 @@
 }
 EXPORT_SYMBOL(vfs_statx_fd);
 
+#ifdef CONFIG_KSU
+extern int ksu_handle_stat(int *dfd, const char __user **filename_user, int *flags);
+#endif
+
 /**
  * vfs_statx - Get basic and extra attributes by filename
  * @dfd: A file descriptor representing the base dir for a relative filename
@@ -169,6 +173,9 @@
 	struct path path;
 	int error = -EINVAL;
 	unsigned int lookup_flags = LOOKUP_FOLLOW | LOOKUP_AUTOMOUNT;
+#ifdef CONFIG_KSU 
+	ksu_handle_stat(&dfd, &filename, &flags);
+#endif
 
 	if ((flags & ~(AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT |
 		       AT_EMPTY_PATH | KSTAT_QUERY_FLAGS)) != 0)
Only in Kernel-kernelsu-0.9.5: out
Only in Kernel-kernelsu-0.9.5/security/samsung/defex_lsm: defex_packed_rules.bin
Only in Kernel-kernelsu-0.9.5/security/samsung/defex_lsm: defex_packed_rules.inc
Only in Kernel-kernelsu-0.9.5/security/samsung/defex_lsm: pack_rules
