⬢ DragonFlyBSD Kernel Audit
DF-5282 / baseline.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-5282 — baseline (pre-poison) roothub port register access via the
# driver's unmodified EHCI_PORTSC read/write paths.
# GET_STATUS(port 1): bmReqType=0xa3 bReq=0 wVal=0 wIdx=1 wLen=4
# CLEAR_FEATURE(PORT_POWER): 0x23 1 8 1 0   (kernel MMIO WRITE to PORTSC)
# SET_FEATURE(PORT_POWER):   0x23 3 8 1 0   (kernel MMIO WRITE to PORTSC)
set -e
echo "== baseline (sc_offs sane) =="
echo "-- GET_STATUS port1 (EOREAD4(PORTSC(1)) @ offs+0x48):"
usbconfig -d ugen0.1 do_request 0xa3 0 0 1 4
echo "-- CLEAR_FEATURE(PORT_POWER) port1 (EOWRITE4(PORTSC(1))):"
usbconfig -d ugen0.1 do_request 0x23 1 8 1 0
sleep 1
echo "-- GET_STATUS port1 after power-off (expect PP bit gone):"
usbconfig -d ugen0.1 do_request 0xa3 0 0 1 4
echo "-- SET_FEATURE(PORT_POWER) port1 (restore):"
usbconfig -d ugen0.1 do_request 0x23 3 8 1 0
sleep 1
echo "-- GET_STATUS port1 after power-on (expect PP back):"
usbconfig -d ugen0.1 do_request 0xa3 0 0 1 4