hrev56190 adds 1 changeset to branch 'master'
old head: e6da31ae5de1f00e64dc2abf4be59d2a206ffa09
new head: e206b2f350bee2c103529de8eb388c51ac88b15a
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=e206b2f350be+%5Ee6da31ae5de1
----------------------------------------------------------------------------
e206b2f350be: freebsd_network: Always hold the "Giant" lock during attaches.
Reduces patches to OpenBSD drivers slightly, and could potentially
help with some of the KDLs.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev56190
Commit: e206b2f350bee2c103529de8eb388c51ac88b15a
URL: https://git.haiku-os.org/haiku/commit/?id=e206b2f350be
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Tue Jun 14 03:48:43 2022 UTC
----------------------------------------------------------------------------
3 files changed, 4 insertions(+), 4 deletions(-)
.../kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c | 2 --
.../kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c | 2 --
src/libs/compat/freebsd_network/device.c | 4 ++++
----------------------------------------------------------------------------
diff --git
a/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c
b/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c
index dcbbaddbcf..fdc656b3be 100644
--- a/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c
+++ b/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c
@@ -11028,9 +11028,7 @@ iwx_attach(struct device *parent, struct device *self,
void *aux)
ic->ic_ampdu_tx_stop = NULL;
#ifdef __HAIKU__
- mtx_lock(&Giant);
iwx_preinit(sc);
- mtx_unlock(&Giant);
#else
/*
* We cannot read the MAC address without loading the
diff --git
a/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c
b/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c
index 8f8f1bf50d..5d73bb2fdb 100644
--- a/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c
+++ b/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c
@@ -12124,9 +12124,7 @@ iwm_attach(struct device *parent, struct device *self,
void *aux)
ic->ic_ampdu_tx_start = iwm_ampdu_tx_start;
ic->ic_ampdu_tx_stop = iwm_ampdu_tx_stop;
#ifdef __HAIKU__
- mtx_lock(&Giant);
iwm_preinit(sc);
- mtx_unlock(&Giant);
#else
/*
* We cannot read the MAC address without loading the
diff --git a/src/libs/compat/freebsd_network/device.c
b/src/libs/compat/freebsd_network/device.c
index 7504d35cc0..05adbf5505 100644
--- a/src/libs/compat/freebsd_network/device.c
+++ b/src/libs/compat/freebsd_network/device.c
@@ -481,6 +481,9 @@ device_attach(device_t device)
|| device->methods.attach == NULL)
return B_ERROR;
+ // Always hold the giant lock during attach.
+ mtx_lock(&Giant);
+
result = device->methods.attach(device);
if (result == 0)
@@ -489,6 +492,7 @@ device_attach(device_t device)
if (result == 0 && HAIKU_DRIVER_REQUIRES(FBSD_WLAN_FEATURE))
result = start_wlan(device);
+ mtx_unlock(&Giant);
return result;
}