Index: /trunk/src/VBox/Devices/Network/slirp/socket.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/socket.c	(revision 55740)
+++ /trunk/src/VBox/Devices/Network/slirp/socket.c	(revision 55741)
@@ -1295,26 +1295,9 @@
     ip->ip_dst.s_addr = dst;
     icmp_reflect(pData, m);
+    /* m was freed */
+    icm->im_m = NULL;
+    icm->im_so->so_m = NULL;
     LIST_REMOVE(icm, im_list);
     pData->cIcmpCacheSize--;
-    /* Don't call m_free here*/
-
-    if (   type == ICMP_TIMXCEED
-        || type == ICMP_UNREACH)
-    {
-        icm->im_so->so_m = NULL;
-        switch (proto)
-        {
-            case  IPPROTO_UDP:
-                /*XXX: so->so_m already freed so we shouldn't call sofree */
-                udp_detach(pData, icm->im_so);
-            break;
-            case  IPPROTO_TCP:
-                /*close tcp should be here */
-            break;
-            default:
-            /* do nothing */
-            break;
-        }
-    }
     RTMemFree(icm);
 }
