Page MenuHomeFreeBSD

D4929.id12279.diff
No OneTemporary

D4929.id12279.diff

Index: sys/net/if_lagg.c
===================================================================
--- sys/net/if_lagg.c
+++ sys/net/if_lagg.c
@@ -1058,15 +1058,28 @@
/* Set to LAGG_PROTO_NONE during the attach. */
LAGG_WLOCK(sc);
if (sc->sc_proto != LAGG_PROTO_NONE) {
+ int (*sc_detach)(struct lagg_softc *sc);
+
+ /* Reset protocol and pointers */
sc->sc_proto = LAGG_PROTO_NONE;
- if (sc->sc_detach != NULL)
- sc->sc_detach(sc);
- else
- LAGG_WUNLOCK(sc);
- } else
- LAGG_WUNLOCK(sc);
+ sc_detach = sc->sc_detach;
+ sc->sc_detach = NULL;
+ sc->sc_start = NULL;
+ sc->sc_input = NULL;
+ sc->sc_port_create = NULL;
+ sc->sc_port_destroy = NULL;
+ sc->sc_linkstate = NULL;
+ sc->sc_init = NULL;
+ sc->sc_stop = NULL;
+ sc->sc_lladdr = NULL;
+ sc->sc_req = NULL;
+ sc->sc_portreq = NULL;
+
+ if (sc_detach != NULL)
+ sc_detach(sc);
+ }
+
proto->ti_attach(sc);
- LAGG_WLOCK(sc);
sc->sc_proto = proto->ti_proto;
LAGG_WUNLOCK(sc);
break;

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 20, 11:50 AM (14 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31837456
Default Alt Text
D4929.id12279.diff (1002 B)

Event Timeline