From 791ca5907a55abdd0ae12689ff8d0eb0be22927b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Date: Thu, 24 May 2018 10:20:42 +0000 Subject: [PATCH] xen/evtchn: fix LOR in evtchn device Remove the device from the list before unbinding it. Doing it in this order allows calling xen_intr_unbind without holding the bind_mutex lock. Sponsored by: Citrix Systems R&D --- sys/dev/xen/evtchn/evtchn_dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/xen/evtchn/evtchn_dev.c b/sys/dev/xen/evtchn/evtchn_dev.c index df81251c7126..9612b677f82b 100644 --- a/sys/dev/xen/evtchn/evtchn_dev.c +++ b/sys/dev/xen/evtchn/evtchn_dev.c @@ -474,10 +474,10 @@ evtchn_ioctl(struct cdev *dev, unsigned long cmd, caddr_t arg, error = ENOTCONN; break; } - - xen_intr_unbind(&evtchn->handle); RB_REMOVE(evtchn_tree, &u->evtchns, evtchn); mtx_unlock(&u->bind_mutex); + + xen_intr_unbind(&evtchn->handle); free(evtchn, M_EVTCHN); error = 0; break;