#!/bin/sh
# DF-4786 fix validation (run on the DF guest as root inside /root/zposfix)
# 1. apply fix.diff to guest /usr/src/sys/dev/drm/drm_blend.c
# 2. build the patched drm.ko (module-only build, no kernel rebuild)
# 3. build zposnull.ko against the patched tree headers
# 4. load PATCHED drm.ko, then zposnull.ko -> expect NO panic, "SURVIVED"
set -e
cd /root/zposfix

echo "=== applying fix to /usr/src ==="
cd /usr/src && patch -s -p1 --dry-run < /root/zposfix/fix.diff && patch -s -p1 < /root/zposfix/fix.diff && echo "patch applied"
grep -n "return -EINVAL" /usr/src/sys/dev/drm/drm_blend.c

echo "=== building patched drm.ko ==="
cd /usr/src/sys/dev/drm/drm && make clean >/dev/null 2>&1 || true
make 2>&1 | tee /root/zposfix/drm-build.log | tail -5
ls -la drm.ko

echo "=== building zposnull.ko ==="
cd /root/zposnull && make clean >/dev/null 2>&1 || true
make 2>&1 | tee /root/zposfix/zposnull-build.log | tail -3
ls -la zposnull.ko
echo "BUILD_ALL_OK"
