Page MenuHomeFreeBSD

vt(4): Fix a LOR in vt_allocate()
ClosedPublic

Authored by dumbbell on Sep 15 2014, 9:38 AM.

Details

Summary

When we load a KMS driver, the following LOR is reported:

lock order reversal:
 1st 0xffffffff8084bab8 vtdev (vtdev) @ /usr/home/kostik/work/build/bsd/DEV/src/sys/dev/vt/vt_core.c:2322
 2nd 0xfffff8000d69ac08 ttymtx (ttymtx) @ /usr/home/kostik/work/build/bsd/DEV/src/sys/kern/subr_terminal.c:236

See Bugzilla: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=193597

This patch moves VT_LOCK(vd) after the call to terminal_mute(). The call to vt_suspend_flush_timer() is now outside the lock, but this function already uses an atomic cmpset to protect itself.

Diff Detail

Repository
rS FreeBSD src repository
Lint
No Linters Available
Unit
No Unit Test Coverage

Event Timeline

dumbbell updated this revision to Diff 1630.Sep 15 2014, 9:38 AM
dumbbell retitled this revision from to vt(4): Fix a LOR in vt_allocate().
dumbbell updated this object.
dumbbell edited the test plan for this revision. (Show Details)
dumbbell added reviewers: emaste, ray, nwhitehorn.
ray accepted this revision.Sep 15 2014, 1:38 PM
ray edited edge metadata.

Looks good.

This revision is now accepted and ready to land.Sep 15 2014, 1:38 PM
dumbbell closed this revision.Sep 16 2014, 6:00 PM

Committed in r271682. Thanks!