DF-3145 / run_guest.sh
#!/bin/sh # DF-3145: hpfs_cpinit error-path leak of hpm_cpdblk # (hpfs_subr.c:276 kmalloc, :283-286 bread failure returns without kfree). # Image: sp_cpinum=0x4000 (16384 * sizeof(struct cpdblk)=16 -> 256 KiB per # failed mount), sp_cpi far past EOF -> bread fails immediately. # Observable: M_HPFSMNT "MemUse" in vmstat -m grows ~256 KiB per failed # mount attempt; caller cleanup (hpfs_bmdeinit) never frees cpdblk. echo "===== DF-3145: hpfs_cpinit cpdblk leak on failed mounts" vmstat -m | grep -i hpfs M0=$(vmstat -m | awk '/hpfs/ {print $3}' | tr -d 'KMG' ) I0=$(vmstat -m | awk '/hpfs/ {print $2}') echo "baseline M_HPFSMNT: inuse=$I0 memuse=$M0" mkdir -p /mnt/df3145 i=0 fail=0 while [ $i -lt 50 ]; do if ! mount_hpfs -o ro /dev/vn1 /mnt/df3145 2>/dev/null; then fail=$((fail+1)) fi i=$((i+1)) done echo "mount attempts=50 failed=$fail" M1=$(vmstat -m | awk '/hpfs/ {print $3}' | tr -d 'KMG') I1=$(vmstat -m | awk '/hpfs/ {print $2}') echo "after M_HPFSMNT: inuse=$I1 memuse=$M1" vmstat -m | grep -i hpfs echo "DONE-DF3145" |