diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 814a5b5b14c7..4930e1820f3b 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -679,6 +679,9 @@ lagg_port_create(struct lagg_softc *sc, struct ifnet *ifp) return (EINVAL); } + if (sc->sc_destroying == 1) + return (ENXIO); + /* Limit the maximal number of lagg ports */ if (sc->sc_count >= LAGG_MAX_PORTS) return (ENOSPC); @@ -1191,6 +1194,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) bzero(&rpbuf, sizeof(rpbuf)); + /* XXX: This can race with lagg_clone_destroy. */ + switch (cmd) { case SIOCGLAGG: LAGG_XLOCK(sc);