action.yml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. name: Add zeromount
  2. description: add zeromount to kernel
  3. inputs:
  4. android_version:
  5. description: 'Android version (android14)'
  6. required: true
  7. kernel_version:
  8. description: 'kernel version (6.1)'
  9. required: true
  10. runs:
  11. using: composite
  12. steps:
  13. - name: apply zeromount patches
  14. shell: bash
  15. run: |
  16. echo "adding zeromount..."
  17. cd "$COMMON"
  18. cp "$ZEROMOUNT/${{ inputs.android_version }}-${{ inputs.kernel_version }}/WildKSU/patches/60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch" .
  19. #patch -p1 < 51_enhanced_susfs_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
  20. patch -p1 < 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
  21. rm -rf 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch
  22. if [ -f fs/proc/task_mmu.c.rej ]; then
  23. echo "Fixing task_mmu.c..."
  24. sed -i '/pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;/a\
  25. #ifdef CONFIG_ZEROMOUNT\
  26. \tzeromount_spoof_mmap_metadata(inode, \&dev, \&ino);\
  27. #endif' fs/proc/task_mmu.c
  28. fi
  29. if [ -f fs/stat.c.rej ]; then
  30. echo "fixing stat.c."
  31. if ! grep -q 'zeromount_stat_hook(dfd, filename, stat, request_mask, flags)' fs/stat.c; then
  32. perl -0pi -e 's@(static int vfs_statx\(.*?\)\s*\{.*?orig_flow:\n#endif\n)@$1\n#ifdef CONFIG_ZEROMOUNT\n\tif (filename) {\n\t\tint zm_ret = zeromount_stat_hook(dfd, filename, stat, request_mask, flags);\n\t\tif (zm_ret != -ENOENT)\n\t\t\treturn zm_ret;\n\t}\n#endif\n\n@s' fs/stat.c
  33. fi
  34. fi
  35. if [ -f fs/Kconfig.rej ]; then
  36. echo "Applying Kconfig zeromount fix..."
  37. if ! grep -q '^config ZEROMOUNT$' fs/Kconfig; then
  38. perl -0pi -e 's@(config IO_WQ\n\tbool\n)@\1\nconfig ZEROMOUNT\n\tbool "ZeroMount Path Redirection Subsystem"\n\tdefault y\n\thelp\n\t ZeroMount allows path redirection and virtual file injection\n\t without mounting filesystems. Useful for systemless modifications.\n\n@' fs/Kconfig
  39. fi
  40. fi
  41. #patch -p1 < 70_ksu_safety-wksu-${{ inputs.kernel_version }}.patch || true
  42. cd "$GITHUB_WORKSPACE"
  43. cat >> "$GKI_DEFCONFIG" << 'EOF'
  44. # Zeromount Configuration
  45. CONFIG_ZEROMOUNT=y
  46. EOF