[haiku-commits] haiku: hrev52267 - src/add-ons/kernel/network/stack

  • From: Stefano Ceccherini <stefano.ceccherini@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 23 Aug 2018 02:36:15 -0400 (EDT)

hrev52267 adds 1 changeset to branch 'master'
old head: 1147b9a49d525f9dca6e498a40de0bedccbc1000
new head: 9923dd5ce5eede90944a029852916e33d2f17450
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=9923dd5ce5ee+%5E1147b9a49d52

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

9923dd5ce5ee: network stack: move put_device_interface() at the end of the 
Interface destructor.
  
  Fixes #10919.
  
  Removing an interface triggers this sequence:
  
  datalink_control() calls interface->ReleaseReference() which causes the
  Interface destructor to be called. The Interface destructor calls
  put_device_interface(fDeviceInterface) which destroys the
  net_device_interface, then calls put_domain_datalink_protocols(this, 
datalink->domain)
  in a loop. put_domain_datalink_protocols() tries to access the deleted
  net_device_interface, hence the KDL.
  
  Change-Id: I2326bcd6d1fd80a69e5fdfa6629563b38ecdbbac
  Reviewed-on: https://review.haiku-os.org/469
  Reviewed-by: waddlesplash <waddlesplash@xxxxxxxxx>
  Reviewed-by: Adrien Destugues <pulkomandy@xxxxxxxxx>
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

                             [ JackBurton79 <stefano.ceccherini@xxxxxxxxx> ]

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

Revision:    hrev52267
Commit:      9923dd5ce5eede90944a029852916e33d2f17450
URL:         https://git.haiku-os.org/haiku/commit/?id=9923dd5ce5ee
Author:      JackBurton79 <stefano.ceccherini@xxxxxxxxx>
Date:        Thu Aug 16 07:33:16 2018 UTC
Committer:   Stefano Ceccherini <stefano.ceccherini@xxxxxxxxx>
Commit-Date: Thu Aug 23 06:36:11 2018 UTC

Ticket:      https://dev.haiku-os.org/ticket/10919

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

1 file changed, 2 insertions(+), 2 deletions(-)
src/add-ons/kernel/network/stack/interfaces.cpp | 4 ++--

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

diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp 
b/src/add-ons/kernel/network/stack/interfaces.cpp
index 75cbd8c1bf..b710d29575 100644
--- a/src/add-ons/kernel/network/stack/interfaces.cpp
+++ b/src/add-ons/kernel/network/stack/interfaces.cpp
@@ -482,8 +482,6 @@ Interface::~Interface()
 {
        TRACE("Interface %p: destructor\n", this);
 
-       put_device_interface(fDeviceInterface);
-
        // Uninitialize the domain datalink protocols
 
        DatalinkTable::Iterator iterator = fDatalinkTable.GetIterator();
@@ -501,6 +499,8 @@ Interface::~Interface()
                delete datalink;
        }
 
+       put_device_interface(fDeviceInterface);
+
        recursive_lock_destroy(&fLock);
 
        // Release reference of the stack - at this point, our stack may be 
unloaded


Other related posts:

  • » [haiku-commits] haiku: hrev52267 - src/add-ons/kernel/network/stack - Stefano Ceccherini