Page MenuHomeFreeBSD

D10924.diff
No OneTemporary

D10924.diff

Index: head/sys/dev/ena/ena.c
===================================================================
--- head/sys/dev/ena/ena.c
+++ head/sys/dev/ena/ena.c
@@ -2285,16 +2285,16 @@
/*
* Acquiring lock to prevent from running up and down routines parallel.
*/
- sx_xlock(&adapter->ioctl_sx);
-
rc = 0;
switch (command) {
case SIOCSIFMTU:
+ sx_xlock(&adapter->ioctl_sx);
ena_down(adapter);
ena_change_mtu(ifp, ifr->ifr_mtu);
rc = ena_up(adapter);
+ sx_unlock(&adapter->ioctl_sx);
break;
case SIOCSIFFLAGS:
@@ -2306,11 +2306,16 @@
"ioctl promisc/allmulti\n");
}
} else {
+ sx_xlock(&adapter->ioctl_sx);
rc = ena_up(adapter);
+ sx_unlock(&adapter->ioctl_sx);
}
} else {
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ sx_xlock(&adapter->ioctl_sx);
ena_down(adapter);
+ sx_unlock(&adapter->ioctl_sx);
+ }
}
break;
@@ -2333,8 +2338,10 @@
}
if (reinit && (ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ sx_xlock(&adapter->ioctl_sx);
ena_down(adapter);
rc = ena_up(adapter);
+ sx_unlock(&adapter->ioctl_sx);
}
}
@@ -2344,8 +2351,6 @@
break;
}
- sx_unlock(&adapter->ioctl_sx);
-
return (rc);
}
@@ -3666,7 +3671,9 @@
taskqueue_drain(adapter->reset_tq, &adapter->reset_task);
taskqueue_free(adapter->reset_tq);
+ sx_xlock(&adapter->ioctl_sx);
ena_down(adapter);
+ sx_unlock(&adapter->ioctl_sx);
if (adapter->ifp != NULL) {
ether_ifdetach(adapter->ifp);

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 8, 3:52 AM (19 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34829307
Default Alt Text
D10924.diff (1 KB)

Event Timeline