Skip to content

Commit

Permalink
xen-blkback: don't unbind the interrupt while holding the lock
Browse files Browse the repository at this point in the history
There's no need to perform the interrupt unbind while holding the
blkback lock, and doing so leads to the following LOR:

lock order reversal: (sleepable after non-sleepable)
 1st 0xfffff8000802fe90 xbbd1 (xbbd1) @ /usr/src/sys/dev/xen/blkback/blkback.c:3423
 2nd 0xffffffff81fdf890 intrsrc (intrsrc) @ /usr/src/sys/x86/x86/intr_machdep.c:224
stack backtrace:
#0 0xffffffff80bdd993 at witness_debugger+0x73
freebsd#1 0xffffffff80bdd814 at witness_checkorder+0xe34
freebsd#2 0xffffffff80b7d798 at _sx_xlock+0x68
freebsd#3 0xffffffff811b3913 at intr_remove_handler+0x43
freebsd#4 0xffffffff811c63ef at xen_intr_unbind+0x10f
freebsd#5 0xffffffff80a12ecf at xbb_disconnect+0x2f
freebsd#6 0xffffffff80a12e54 at xbb_shutdown+0x1e4
freebsd#7 0xffffffff80a10be4 at xbb_frontend_changed+0x54
freebsd#8 0xffffffff80ed66a4 at xenbusb_back_otherend_changed+0x14
freebsd#9 0xffffffff80a2a382 at xenwatch_thread+0x182
freebsd#10 0xffffffff80b34164 at fork_exit+0x84
freebsd#11 0xffffffff8101ec9e at fork_trampoline+0xe

Reported by:    Nathan Friess <[email protected]>
Sponsored by:   Citrix Systems R&D


git-svn-id: svn+ssh://svn.freebsd.org/base/head@334145 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
  • Loading branch information
royger committed May 24, 2018
1 parent 3a841fe commit 4d1adcb
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions sys/dev/xen/blkback/blkback.c
Original file line number Diff line number Diff line change
Expand Up @@ -2803,9 +2803,8 @@ xbb_disconnect(struct xbb_softc *xbb)
if ((xbb->flags & XBBF_RING_CONNECTED) == 0)
return (0);

xen_intr_unbind(&xbb->xen_intr_handle);

mtx_unlock(&xbb->lock);
xen_intr_unbind(&xbb->xen_intr_handle);
taskqueue_drain(xbb->io_taskqueue, &xbb->io_task);
mtx_lock(&xbb->lock);

Expand Down

0 comments on commit 4d1adcb

Please sign in to comment.