From 5483aeeb57036fc61eb0cea3af16b952240abaf3 Mon Sep 17 00:00:00 2001 From: Peter Kosyh Date: Sun, 21 Oct 2018 09:56:45 +0300 Subject: [PATCH] freebsd11_network: Fix deinitialization following a failure to attach. This fixes the KDL while loading iprowifi2100 w/o firmware installed. Full explanation: 1) device_attach calls start_wlan 2) start_wlan fails, because lack of firmware 3) ... -> device_detach called (from device_delete_child) 4) it calls stop_wlan that faults with BAD_VALUE 5) we leave device attached... then uninit_mbufs called -> KDL Change-Id: I18d06ea7be48e569838f17e3779d054000898043 Reviewed-on: https://review.haiku-os.org/635 Reviewed-by: waddlesplash --- src/libs/compat/freebsd11_network/compat.c | 2 +- src/libs/compat/freebsd11_network/driver.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/compat/freebsd11_network/compat.c b/src/libs/compat/freebsd11_network/compat.c index 19f9d0b749..3383226d98 100644 --- a/src/libs/compat/freebsd11_network/compat.c +++ b/src/libs/compat/freebsd11_network/compat.c @@ -471,7 +471,7 @@ device_detach(device_t device) int result = 0; if (HAIKU_DRIVER_REQUIRES(FBSD_WLAN_FEATURE)) result = stop_wlan(device); - if (result != 0) { + if (result != 0 && result != B_BAD_VALUE) { atomic_or(&device->flags, DEVICE_ATTACHED); return result; } diff --git a/src/libs/compat/freebsd11_network/driver.c b/src/libs/compat/freebsd11_network/driver.c index f15db3e1bd..e99cc5acdc 100644 --- a/src/libs/compat/freebsd11_network/driver.c +++ b/src/libs/compat/freebsd11_network/driver.c @@ -254,9 +254,9 @@ err6: if (HAIKU_DRIVER_REQUIRES(FBSD_TASKQUEUES)) uninit_taskqueues(); err5: - uninit_mbufs(); -err4: uninit_callout(); +err4: + uninit_mbufs(); err3: uninit_mutexes(); err2: