DF-3052 / run3052.sh
#!/bin/sh # DF-3052: forced unmount racing pending async reads -> nfsm_request_bio # early-abort leaks struct nfsm_info (M_NFSREQ). vmstat -m | grep "NFS req" > /tmp/3052.before dmesg | grep -c "early abort" > /tmp/3052.dmesg.before dd if=/dev/urandom of=/export/big52 bs=1m count=64 2>/dev/null mkdir -p /mnt/m52 i=0 while [ $i -lt 20 ]; do mount -t nfs -o tcp 127.0.0.1:/export /mnt/m52 2>/dev/null || { i=$((i+1)); continue; } ( su maxx -c "dd if=/mnt/m52/big52 of=/dev/null bs=64k" > /dev/null 2>&1 ) & sleep 0.05 umount -f /mnt/m52 2>/dev/null wait i=$((i+1)) done sleep 1 vmstat -m | grep "NFS req" > /tmp/3052.after dmesg | grep -c "early abort" > /tmp/3052.dmesg.after echo "MALLOC before: $(cat /tmp/3052.before)" echo "MALLOC after: $(cat /tmp/3052.after)" echo "early-abort msgs: before=$(cat /tmp/3052.dmesg.before) after=$(cat /tmp/3052.dmesg.after)" echo DF3052_DONE |