usbnet: Avoid IFNET_LOCK on detach if we never attached the ifp.
This commit is contained in:
parent
5a426bee10
commit
d7d8fa7bb7
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: usbnet.c,v 1.66 2022/03/03 05:49:37 riastradh Exp $ */
|
/* $NetBSD: usbnet.c,v 1.67 2022/03/03 05:49:44 riastradh Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019 Matthew R. Green
|
* Copyright (c) 2019 Matthew R. Green
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: usbnet.c,v 1.66 2022/03/03 05:49:37 riastradh Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: usbnet.c,v 1.67 2022/03/03 05:49:44 riastradh Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/kernel.h>
|
#include <sys/kernel.h>
|
||||||
|
@ -1578,12 +1578,17 @@ usbnet_detach(device_t self, int flags)
|
||||||
/*
|
/*
|
||||||
* If we're still running on the network, stop and wait for all
|
* If we're still running on the network, stop and wait for all
|
||||||
* asynchronous activity to finish.
|
* asynchronous activity to finish.
|
||||||
|
*
|
||||||
|
* If usbnet_attach_ifp never ran, IFNET_LOCK won't work, but
|
||||||
|
* no activity is possible, so just skip this part.
|
||||||
*/
|
*/
|
||||||
IFNET_LOCK(ifp);
|
if (unp->unp_ifp_attached) {
|
||||||
if (ifp->if_flags & IFF_RUNNING) {
|
IFNET_LOCK(ifp);
|
||||||
usbnet_if_stop(ifp, 1);
|
if (ifp->if_flags & IFF_RUNNING) {
|
||||||
|
usbnet_if_stop(ifp, 1);
|
||||||
|
}
|
||||||
|
IFNET_UNLOCK(ifp);
|
||||||
}
|
}
|
||||||
IFNET_UNLOCK(ifp);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The callout and tick task can't be scheduled anew at this
|
* The callout and tick task can't be scheduled anew at this
|
||||||
|
|
Loading…
Reference in New Issue