Skip to content

Commit 317108c

Browse files
committed
Refactor SUSFS patch application logic in action.yml
1 parent 8eb06f8 commit 317108c

1 file changed

Lines changed: 2 additions & 129 deletions

File tree

‎.github/actions/action.yml‎

Lines changed: 2 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -739,135 +739,8 @@ runs:
739739
echo "SUSVER=$susfs_version" >> $GITHUB_ENV
740740
echo "$susfs_version" >> "${ARTIFACTS_FOLDER}/${OP_MODEL}_${OP_OS_VERSION}.txt"
741741
echo "SusFS Version: $susfs_version"
742-
743-
# Function to compare semantic versions
744-
version_lte() {
745-
[ "$(printf '%s\n' "$2" "$1" | sort -V | head -n1)" = "$1" ]
746-
}
747-
748-
if version_lte "${susfs_version:1}" "1.5.12"; then
749-
echo "NEED_HOOKS=true" >> $GITHUB_ENV
750-
else
751-
echo "NEED_HOOKS=false" >> $GITHUB_ENV
752-
fi
753-
754-
case "$susfs_version" in
755-
"v1.5.8")
756-
if [ "${{ inputs.ksu_type }}" = "KSUN" ]; then
757-
patch -p1 --forward --fuzz=3 < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch" || true
758-
patch -p1 --forward --fuzz=3 < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_apk_sign.c.patch"
759-
patch -p1 --forward --fuzz=3 < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_core_hook.c.patch"
760-
patch -p1 --forward --fuzz=3 < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_selinux.c.patch"
761-
patch -p1 --forward --fuzz=3 < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_ksud.c.patch"
762-
else
763-
cd "$KSU_FOLDER"
764-
patch -p1 --forward --fuzz=3 < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch"
765-
fi
766-
;;
767-
"v1.5.9"|"v1.5.10"|"v1.5.11"|"v1.5.12")
768-
if [ "${{ inputs.ksu_type }}" = "KSUN" ]; then
769-
cd "$KSUN_FOLDER"
770-
patch -p1 --forward < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch" || true
771-
for file in $(find ./kernel -maxdepth 2 -name "*.rej" -printf "%f\n" | cut -d'.' -f1); do
772-
echo "Patching file: $file.c with fix_$file.c.patch"
773-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_$file.c.patch"
774-
done
775-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_kernel_compat.c.patch"
776-
else
777-
cd "$KSU_FOLDER"
778-
patch -p1 --forward < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch"
779-
fi
780-
;;
781-
"v2.0.0")
782-
if [ "${{ inputs.ksu_type }}" = "KSUN" ]; then
783-
cd "$KSUN_FOLDER"
784-
patch -p1 --forward < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch" || true
785-
for file in $(find ./kernel -maxdepth 2 -name "*.rej" -exec basename {} .rej \;); do
786-
echo "Patching file: $file with fix_$file.patch"
787-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/fix_$file.patch"
788-
done
789-
echo "Patching Hook Mode!"
790-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/overwrite_hook_mode.patch"
791-
echo "Patching KSU_TOOLKIT Support for SusFS kernel!"
792-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/ksu_toolkit.patch"
793-
echo "Patching Multi-manager Support for SusFS kernel!"
794-
patch -p1 --forward < "$KERNEL_PATCHES_FOLDER/next/susfs_fix_patches/$susfs_version/multi_manager.patch"
795-
else
796-
cd "$KSU_FOLDER"
797-
patch -p1 --forward < "$SUSFS_FOLDER/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch" || true
798-
fi
799-
;;
800-
*)
801-
echo "::error::Unsupported SUSFS version: $susfs_version"
802-
exit 1
803-
;;
804-
esac
805-
806-
cd "$COMMON_KERNEL_FOLDER"
807-
if [ "${{ env.ANDROID_VER }}" = "android15" ] && [ "${{ env.KERNEL_VER }}" = "6.6" ]; then
808-
if ! grep -qxF '#include <trace/hooks/fs.h>' ./fs/namespace.c; then
809-
sed -i '/#include <trace\/hooks\/blk.h>/a #include <trace\/hooks\/fs.h>' ./fs/namespace.c
810-
fi
811-
fi
812-
813-
# Fake kernel patch to fix failures
814-
fake_patched=0
815-
if [ "${{ env.ANDROID_VER }}" = "android15" ] && [ "${{ env.KERNEL_VER }}" = "6.6" ]; then
816-
if ! grep -qxF $'\tunsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
817-
echo "nr_subpages Line not found. Fake Patching!"
818-
sed -i -e '/int ret = 0, copied = 0;/a \\tunsigned int nr_subpages \= __PAGE_SIZE \/ PAGE_SIZE;' -e '/int ret = 0, copied = 0;/a \\tpagemap_entry_t \*res = NULL;' ./fs/proc/task_mmu.c
819-
fake_patched=1
820-
fi
821-
fi
822-
if [ "${{ env.ANDROID_VER }}" = "android12" ] && [ "${{ env.KERNEL_VER }}" = "5.10" ]; then
823-
if ! grep -qxF $'\tif (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
824-
echo "vma_pages Line not found. Fake Patching!"
825-
fake_patched=1
826-
fi
827-
fi
828-
if [ "${{ env.ANDROID_VER }}" = "android13" ] && [ "${{ env.KERNEL_VER }}" = "5.15" ]; then
829-
if ! grep -qxF $'\tif (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
830-
echo "vma_pages Line not found. Fake Patching!"
831-
fake_patched=1
832-
fi
833-
fi
834-
835-
if [ "${{ env.ANDROID_VER }}" = "android14" ] && [ "${{ env.KERNEL_VER }}" = "6.1" ]; then
836-
if ! grep -qxF $'\tif (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
837-
echo "vma_pages Line not found. Fake Patching!"
838-
fake_patched=1
839-
fi
840-
fi
841-
842-
patch -p1 --forward < "$SUSFS_FOLDER/kernel_patches/50_add_susfs_in_${{ env.SUSFS_KERNEL_BRANCH }}.patch"
843-
844-
# Revert Fake kernel patch
845-
if [ "$fake_patched" = 1 ]; then
846-
if [ "${{ env.ANDROID_VER }}" = "android15" ] && [ "${{ env.KERNEL_VER }}" = "6.6" ]; then
847-
if grep -qxF $'\tunsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
848-
echo "nr_subpages Line found. Revert Fake Patching!"
849-
sed -i -e '/unsigned int nr_subpages \= __PAGE_SIZE \/ PAGE_SIZE;/d' -e '/pagemap_entry_t \*res = NULL;/d' ./fs/proc/task_mmu.c
850-
fi
851-
fi
852-
if [ "${{ env.ANDROID_VER }}" = "android12" ] && [ "${{ env.KERNEL_VER }}" = "5.10" ]; then
853-
if grep -qxF $'\t\tgoto show_pad;' ./fs/proc/task_mmu.c; then
854-
echo "vma_pages Line found. Revert Fake Patching!"
855-
sed -i -e 's/goto show_pad;/return 0;/' ./fs/proc/task_mmu.c
856-
fi
857-
fi
858-
if [ "${{ env.ANDROID_VER }}" = "android13" ] && [ "${{ env.KERNEL_VER }}" = "5.15" ]; then
859-
if grep -qxF $'\t\tgoto show_pad;' ./fs/proc/task_mmu.c; then
860-
echo "vma_pages Line found. Revert Fake Patching!"
861-
sed -i -e 's/goto show_pad;/return 0;/' ./fs/proc/task_mmu.c
862-
fi
863-
fi
864-
if [ "${{ env.ANDROID_VER }}" = "android14" ] && [ "${{ env.KERNEL_VER }}" = "6.1" ]; then
865-
if grep -qxF $'\t\tgoto show_pad;' ./fs/proc/task_mmu.c; then
866-
echo "vma_pages Line found. Revert Fake Patching!"
867-
sed -i -e 's/goto show_pad;/return 0;/' ./fs/proc/task_mmu.c
868-
fi
869-
fi
870-
fi
742+
743+
patch -p1 < "$SUSFS_FOLDER/kernel_patches/50_add_susfs_in_${{ env.SUSFS_KERNEL_BRANCH }}.patch"
871744
echo "✅ SUSFS patches applied"
872745
echo "::endgroup::"
873746

0 commit comments

Comments
 (0)