[haiku-commits] haiku: hrev52418 - src/libs/compat/freebsd11_network

  • From: waddlesplash@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 21 Oct 2018 12:21:23 -0400 (EDT)

hrev52418 adds 1 changeset to branch 'master'
old head: 02f3646adc15f676002618980f29e28044c5af1b
new head: 5483aeeb57036fc61eb0cea3af16b952240abaf3
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=5483aeeb5703+%5E02f3646adc15

----------------------------------------------------------------------------

5483aeeb5703: 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 <waddlesplash@xxxxxxxxx>

                                         [ Peter Kosyh <p.kosyh@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev52418
Commit:      5483aeeb57036fc61eb0cea3af16b952240abaf3
URL:         https://git.haiku-os.org/haiku/commit/?id=5483aeeb5703
Author:      Peter Kosyh <p.kosyh@xxxxxxxxx>
Date:        Sun Oct 21 06:56:45 2018 UTC
Committer:   waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Sun Oct 21 16:21:20 2018 UTC

----------------------------------------------------------------------------

2 files changed, 3 insertions(+), 3 deletions(-)
src/libs/compat/freebsd11_network/compat.c | 2 +-
src/libs/compat/freebsd11_network/driver.c | 4 ++--

----------------------------------------------------------------------------

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:


Other related posts:

  • » [haiku-commits] haiku: hrev52418 - src/libs/compat/freebsd11_network - waddlesplash