]> Zhao Yanbai Git Server - minix.git/commitdiff
LWIP - avoid an assert when a driver restarts
authorTomas Hruby <tom@minix3.org>
Thu, 7 Feb 2013 09:50:58 +0000 (09:50 +0000)
committerLionel Sambuc <lionel@minix3.org>
Mon, 25 Mar 2013 15:51:25 +0000 (16:51 +0100)
servers/lwip/driver.c

index 473689ac7d7e60fad3efaffa105dbea8775e53ce..bc139384af015babd55d5aab0e64d727ca4eca33 100644 (file)
@@ -430,6 +430,15 @@ void driver_up(const char * label, endpoint_t ep)
        nic->tx_buffer = debug_malloc(2048);
        if (nic->tx_buffer == NULL)
                panic("Cannot allocate tx_buffer");
+       /* When driver restarts, the rx_pbuf is likely ready to receive data
+        * from its previous instance. We free the buffer here, nobody depends
+        * on it. A new one is allocated when we send a new read request to the
+        * driver.
+        */
+       if (nic->rx_pbuf) {
+               pbuf_free(nic->rx_pbuf);
+               nic->rx_pbuf = NULL;
+       }
 
        /* prepare the RX grant once and forever */
        if (cpf_setgrant_direct(nic->rx_iogrant,