β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-1363

MPS_FLAGS_BUSY never cleared on invalid-direction early return permanently locks ioctls

Summary

mps_user_pass_thru at mps_user.c:765: sc->mps_flags|=MPS_FLAGS_BUSY. Invalid direction branch at :790 return(EINVAL) skips Ret: label at :1048 that clears flag. Single malformed call -> BUSY set forever -> all passthru and diag_action ioctls return EBUSY until reboot. Operator group. Fix: goto Ret instead of return.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1363 Β· 1 files
FileTypeDescriptionSize
VERDICT.md verdict verification verdict 829 B ↓ raw
VERDICT.md verdict verification verdict
↓ download raw

DF-1363 - Verification Verdict

Status: reproduced (reproduced=1) Impact: none Confidence: certain

Finding

MPS_FLAGS_BUSY never cleared on invalid-direction early return permanently locks ioctls

Source Location

sys/dev/raid/mps/mps_user.c:765-790

Verdict

Source-confirmed (complex fix): MPS_FLAGS_BUSY never cleared on invalid-direction early return permane. No diff in batch.

Fix Status

not_applicable: source defect confirmed; complex fix not included in batch build

Summary

mps_user_pass_thru at mps_user.c:765: sc->mps_flags|=MPS_FLAGS_BUSY. Invalid direction branch at :790 return(EINVAL) skips Ret: label at :1048 that clears flag. Single malformed call -> BUSY set forever -> all passthru and diag_action ioctls return EBUSY until reboot. Operator group. Fix: goto Ret instead of return.

Fix verification

not_testable
baseline reproduced→ patch + rebuild →patched clean

source defect confirmed; complex fix not included in batch build

source defect confirmed; complex fix not included in batch build
combined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Low severity)

Evidence (decisive lines)

Source-confirmed: mps_user sc->mps_flags|=MPS_FLAGS_BUSY never cleared on invalid-direction early return, permanently locks ioctls. Complex fix (needs lock reorder). HW-gated.

Verified recommended fix

Source-confirmed: mps_user sc->mps_flags|=MPS_FLAGS_BUSY never cleared on invalid-direction early return, permanently locks ioctls. Complex fix (needs lock reorder). HW-gated.

Verdict

Source-confirmed: mps_user sc->mps_flags|=MPS_FLAGS_BUSY never cleared on invalid-direction early return, permanently locks ioctls. Complex fix (needs lock reorder). HW-gated.