@@ -306,7 +306,46 @@ runs:
306306 sed -i '/#include <trace\/hooks\/blk.h>/a #include <trace\/hooks\/fs.h>' ./fs/namespace.c
307307 fi
308308 fi
309+
310+ # Fake kernel patch to fix failures
311+ fake_patched=0
312+ if [ "${{ env.ANDROID_VER }}" = "android15" ] && [ "${{ env.KERNEL_VER }}" = "6.6" ]; then
313+ if ! grep -qxF 'unsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
314+ echo "nr_subpages Line not found. Fake Patching!"
315+ 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
316+ fake_patched=1
317+ fi
318+ fi
319+ if [ "${{ env.ANDROID_VER }}" = "android12" ] && [ "${{ env.KERNEL_VER }}" = "5.10" ]; then
320+ if ! grep -qxF 'if (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
321+ echo "vma_pages Line not found. Fake Patching!"
322+ sed -i '/memset(&mss, 0, sizeof(mss));/,/smap_gather_stats(vma, &mss, 0);/ {
323+ /smap_gather_stats(vma, &mss, 0);/ i\
324+ \tif (!vma_pages(vma))\
325+ \t\tgoto show_pad;\n
326+ }' ./fs/proc/task_mmu.c
327+ fake_patched=1
328+ fi
329+ fi
330+
309331 patch -p1 < 50_add_susfs_in_${{ env.SUSFS_KERNEL_BRANCH }}.patch || true
332+
333+ # Revert Fake kernel patch
334+ if [ "$fake_patched" = 1 ]; then
335+ if [ "${{ env.ANDROID_VER }}" = "android15" ] && [ "${{ env.KERNEL_VER }}" = "6.6" ]; then
336+ if grep -qxF 'unsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
337+ echo "nr_subpages Line found. Revert Fake Patching!"
338+ sed -i -e '/unsigned int nr_subpages \= __PAGE_SIZE \/ PAGE_SIZE;/d' -e '/pagemap_entry_t \*res = NULL;/d' ./fs/proc/task_mmu.c
339+ fi
340+ fi
341+ if [ "${{ env.ANDROID_VER }}" = "android12" ] && [ "${{ env.KERNEL_VER }}" = "5.10" ]; then
342+ if grep -qxF 'if (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
343+ echo "vma_pages Line found. Revert Fake Patching!"
344+ sed -i -e '/if (!vma_pages(vma))/,/goto show_pad;/d' -e 's/goto show_pad;/return 0;/' ./fs/proc/task_mmu.c
345+ fi
346+ fi
347+ fi
348+
310349 KERNEL_VERSION="${{ env.KERNEL_VER }}"
311350 MIN_VERSION="5.16"
312351 if [ "$(printf '%s\n' "$KERNEL_VERSION" "$MIN_VERSION" | sort -V | head -n1)" = "$KERNEL_VERSION" ]; then
0 commit comments