DF-1095 / verify.sh
#!/bin/sh # DF-1095 static source-verification: iicsmb_bwrite missing iicbus_stop. set +e PASS=0; FAIL=0 check() { if eval "$2"; then echo "PASS $1" PASS=$((PASS+1)) else echo "FAIL $1" FAIL=$((FAIL+1)) fi } I=sys/bus/iicbus/iicsmb.c C=sys/bus/iicbus/iiconf.c # 1. iicsmb_bwrite's error label does NOT call iicbus_stop check "iicsmb_bwrite error: label has NO iicbus_stop" \ 'awk "/^iicsmb_bwrite/,/^}/" '"$I"' | awk "/^error:/,/^}/" | grep -q "return" && ! awk "/^iicsmb_bwrite/,/^}/" '"$I"' | awk "/^error:/,/^}/" | grep -q "iicbus_stop"' # 2. iicsmb_bwrite calls iicbus_start with goto error (success path sets started) check "iicsmb_bwrite calls iicbus_start -> goto error on failure" \ 'awk "/^iicsmb_bwrite/,/^}/" '"$I"' | grep -q "iicbus_start(parent, slave & ~LSB, IICBUS_TIMEOUT)"' # 3. Control case: iicsmb_bread DOES call iicbus_stop in error label check "iicsmb_bread error: DOES call iicbus_stop (control case)" \ 'awk "/^iicsmb_bread/,/^}/" '"$I"' | awk "/^error:/,/^}/" | grep -q "iicbus_stop(parent)"' # 4. iicbus_start sets sc->started = slave on success check "iicbus_start sets sc->started on success" \ 'awk "/^iicbus_start/,/^}/" '"$C"' | grep -q "sc->started = slave"' # 5. iicbus_start returns EINVAL if already started check "iicbus_start returns EINVAL when started is set" \ 'awk "/^iicbus_start/,/^}/" '"$C"' | grep -q "if (sc->started)" && awk "/^iicbus_start/,/^}/" '"$C"' | grep -q "return (EINVAL)"' # 6. iicbus_stop clears sc->started check "iicbus_stop clears sc->started" \ 'awk "/^iicbus_stop/,/^}/" '"$C"' | grep -q "sc->started = 0"' # 7. iicsmb is configured in the kernel check "iicsmb is built (bus/iicbus/iicsmb.c in conf/files)" \ 'grep -q "bus/iicbus/iicsmb.c" sys/conf/files' # 8. iicbus_request_bus / iicbus_release_bus do NOT touch sc->started check "iicbus_request_bus / iicbus_release_bus do NOT touch sc->started" \ '! awk "/^iicbus_request_bus/,/^}/" '"$C"' | grep -q "sc->started" && ! awk "/^iicbus_release_bus/,/^}/" '"$C"' | grep -q "sc->started"' echo echo "PASS=$PASS FAIL=$FAIL" |