Most kernel builders have to touch their kernel source code anyway, why not also tell them to backport path_umount so even non-gki users can benefit from this? I know this might be a bit controversial as this will raise the barrier of entry, but the benefits are just so high. Idea was from OnlyTomInSecond on KernelSU group chat way back, and it has been on the discussions for some time references: https://t.me/KernelSU_group/27237/176515 https://t.me/KernelSU_group/3249/184908 https://github.com/tiann/KernelSU/discussions/955#discussioncomment-761716603d233db8bhttps://github.com/tiann/KernelSU/pull/1060 https://elixir.bootlin.com/linux/v5.9.1/source/fs/namespace.c#L1728 https://elixir.bootlin.com/linux/v5.10.9/source/fs/namespace.c#L1730 https://elixir.bootlin.com/linux/v6.5/source/fs/namespace.c#L1887 https://github.com/tiann/KernelSU/pull/1464#issuecomment-2002492107 Kernel side change examples 5.4961d9788624.19164917f56d4.14c07c70a0c54.9195f07593a4.421ea33fe41https://github.com/tiann/KernelSU/pull/1464#issuecomment-2002424069 ofcourse having someone on 3.18 confirm this will be nice. **PROS**: umount modules for everyone **CONS**: barrier of entry +1 --------- Co-authored-by: Christoph Hellwig <hch@lst.de> Co-authored-by: Fede2782 <78815152+Fede2782@users.noreply.github.com> Co-authored-by: Tom <31297720+onlytominsecond@users.noreply.github.com>
76 lines
2.8 KiB
Makefile
76 lines
2.8 KiB
Makefile
kernelsu-objs := ksu.o
|
|
kernelsu-objs += allowlist.o
|
|
kernelsu-objs += apk_sign.o
|
|
kernelsu-objs += module_api.o
|
|
kernelsu-objs += sucompat.o
|
|
kernelsu-objs += uid_observer.o
|
|
kernelsu-objs += manager.o
|
|
kernelsu-objs += core_hook.o
|
|
kernelsu-objs += ksud.o
|
|
kernelsu-objs += embed_ksud.o
|
|
kernelsu-objs += kernel_compat.o
|
|
|
|
kernelsu-objs += selinux/selinux.o
|
|
kernelsu-objs += selinux/sepolicy.o
|
|
kernelsu-objs += selinux/rules.o
|
|
ccflags-y += -I$(srctree)/security/selinux -I$(srctree)/security/selinux/include
|
|
ccflags-y += -I$(objtree)/security/selinux -include $(srctree)/include/uapi/asm-generic/errno.h
|
|
|
|
ifndef KSU_MODULE
|
|
obj-y += kernelsu.o
|
|
else
|
|
obj-m += kernelsu.o
|
|
endif
|
|
|
|
# .git is a text file while the module is imported by 'git submodule add'.
|
|
ifeq ($(shell test -e $(srctree)/$(src)/../.git; echo $$?),0)
|
|
$(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin [ -f ../.git/shallow ] && git fetch --unshallow)
|
|
KSU_GIT_VERSION := $(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git rev-list --count HEAD)
|
|
# ksu_version: major * 10000 + git version + 200 for historical reasons
|
|
$(eval KSU_VERSION=$(shell expr 10000 + $(KSU_GIT_VERSION) + 200))
|
|
$(info -- KernelSU version: $(KSU_VERSION))
|
|
ccflags-y += -DKSU_VERSION=$(KSU_VERSION)
|
|
else # If there is no .git file, the default version will be passed.
|
|
$(warning "KSU_GIT_VERSION not defined! It is better to make KernelSU a git submodule!")
|
|
ccflags-y += -DKSU_VERSION=16
|
|
endif
|
|
|
|
ifeq ($(shell grep -q " current_sid(void)" $(srctree)/security/selinux/include/objsec.h; echo $$?),0)
|
|
ccflags-y += -DKSU_COMPAT_HAS_CURRENT_SID
|
|
endif
|
|
|
|
ifeq ($(shell grep -q "struct selinux_state " $(srctree)/security/selinux/include/security.h; echo $$?),0)
|
|
ccflags-y += -DKSU_COMPAT_HAS_SELINUX_STATE
|
|
endif
|
|
|
|
ifndef KSU_EXPECTED_SIZE
|
|
KSU_EXPECTED_SIZE := 0x033b
|
|
endif
|
|
|
|
ifndef KSU_EXPECTED_HASH
|
|
KSU_EXPECTED_HASH := c371061b19d8c7d7d6133c6a9bafe198fa944e50c1b31c9d8daa8d7f1fc2d2d6
|
|
endif
|
|
|
|
ifdef KSU_MANAGER_PACKAGE
|
|
ccflags-y += -DKSU_MANAGER_PACKAGE=\"$(KSU_MANAGER_PACKAGE)\"
|
|
$(info -- KernelSU Manager package name: $(KSU_MANAGER_PACKAGE))
|
|
endif
|
|
|
|
$(info -- KernelSU Manager signature size: $(KSU_EXPECTED_SIZE))
|
|
$(info -- KernelSU Manager signature hash: $(KSU_EXPECTED_HASH))
|
|
|
|
ccflags-y += -DEXPECTED_SIZE=$(KSU_EXPECTED_SIZE)
|
|
ccflags-y += -DEXPECTED_HASH=\"$(KSU_EXPECTED_HASH)\"
|
|
|
|
ifeq ($(shell grep -q "int path_umount" $(srctree)/fs/namespace.c; echo $$?),0)
|
|
ccflags-y += -DKSU_UMOUNT
|
|
else
|
|
$(info -- Did you know you can backport path_umount to fs/namespace.c from 5.9?)
|
|
$(info -- Read: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#path_umount)
|
|
endif
|
|
|
|
ccflags-y += -Wno-implicit-function-declaration -Wno-strict-prototypes -Wno-int-conversion -Wno-gcc-compat
|
|
ccflags-y += -Wno-declaration-after-statement -Wno-unused-function
|
|
|
|
# Keep a new line here!! Because someone may append config
|