Skip to content

Commit 8af74eb

Browse files
committed
Add fake kernel patch to fix sus_maps build errors
1 parent b955b75 commit 8af74eb

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

.github/actions/action.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)