Pārlūkot izejas kodu

Add zeromount action for kernel integration

This action adds zeromount functionality to the kernel by applying necessary patches and modifying configuration files based on the specified Android and kernel versions.
jimsterino98 4 mēneši atpakaļ
vecāks
revīzija
050b932b43
1 mainītis faili ar 55 papildinājumiem un 0 dzēšanām
  1. 55 0
      .github/actions/zeromount/action.yml

+ 55 - 0
.github/actions/zeromount/action.yml

@@ -0,0 +1,55 @@
+name: Add zeromount
+description: add zeromount to kernel
+inputs:
+  android_version:
+   description: 'Android version (android14)'
+   required: true
+  kernel_version:
+   description: 'kernel version (6.1)'
+   required: true
+
+runs:
+ using: composite
+ steps:
+  - name: apply zeromount patches
+    shell: bash
+    run: |
+     echo "adding zeromount..."
+            
+      cd "$COMMON"
+      cp "$ZEROMOUNT/${{ inputs.android_version }}-${{ inputs.kernel_version }}/WildKSU/patches/60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch" .
+      #patch -p1 < 51_enhanced_susfs_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
+      patch -p1 < 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
+      rm -rf 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch
+
+      if [ -f fs/proc/task_mmu.c.rej ]; then
+        echo "Fixing task_mmu.c..."
+
+        sed -i '/pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;/a\
+        #ifdef CONFIG_ZEROMOUNT\
+        \tzeromount_spoof_mmap_metadata(inode, \&dev, \&ino);\
+        #endif' fs/proc/task_mmu.c
+      fi
+
+      if [ -f fs/stat.c.rej ]; then
+       echo "fixing stat.c."
+
+        if ! grep -q 'zeromount_stat_hook(dfd, filename, stat, request_mask, flags)' fs/stat.c; then
+          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
+        fi
+      fi
+
+      if [ -f fs/Kconfig.rej ]; then
+        echo "Applying Kconfig zeromount fix..."
+
+        if ! grep -q '^config ZEROMOUNT$' fs/Kconfig; then
+            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
+        fi
+      fi
+      #patch -p1 < 70_ksu_safety-wksu-${{ inputs.kernel_version }}.patch || true
+
+      cd "$GITHUB_WORKSPACE"
+      cat >> "$GKI_DEFCONFIG" << 'EOF'
+      # Zeromount Configuration
+      CONFIG_ZEROMOUNT=y
+      EOF