DF-1570 / fix.diff
diff --git a/sys/dev/disk/xdisk/xdisk.c b/sys/dev/disk/xdisk/xdisk.c --- a/sys/dev/disk/xdisk/xdisk.c +++ b/sys/dev/disk/xdisk/xdisk.c @@ -766,10 +766,12 @@ lockmgr(&xdisk_lk, LK_EXCLUSIVE); sc = dev->si_drv1; - if (sc == NULL) + if (sc == NULL) { + lockmgr(&xdisk_lk, LK_RELEASE); return ENXIO; /* raced destruction */ + } if (sc->terminating) { - lockmgr(&sc->lk, LK_RELEASE); + lockmgr(&xdisk_lk, LK_RELEASE); return ENXIO; /* raced destruction */ } lockmgr(&sc->lk, LK_EXCLUSIVE); |