Module Name: src Committed By: yamaguchi Date: Thu Apr 4 09:09:24 UTC 2024
Modified Files: src/sys/net/lagg: if_lagg_lacp.c Log Message: lagg(4): move allocate memory before ioctl To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/net/lagg/if_lagg_lacp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/lagg/if_lagg_lacp.c diff -u src/sys/net/lagg/if_lagg_lacp.c:1.35 src/sys/net/lagg/if_lagg_lacp.c:1.36 --- src/sys/net/lagg/if_lagg_lacp.c:1.35 Thu Apr 4 08:54:52 2024 +++ src/sys/net/lagg/if_lagg_lacp.c Thu Apr 4 09:09:24 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: if_lagg_lacp.c,v 1.35 2024/04/04 08:54:52 yamaguchi Exp $ */ +/* $NetBSD: if_lagg_lacp.c,v 1.36 2024/04/04 09:09:24 yamaguchi Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-NetBSD @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_lagg_lacp.c,v 1.35 2024/04/04 08:54:52 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_lagg_lacp.c,v 1.36 2024/04/04 09:09:24 yamaguchi Exp $"); #ifdef _KERNEL_OPT #include "opt_lagg.h" @@ -674,6 +674,10 @@ lacp_allocport(struct lagg_proto_softc * KASSERT(LAGG_LOCKED(sc)); KASSERT(IFNET_LOCKED(lp->lp_ifp)); + lacpp = kmem_zalloc(sizeof(*lacpp), KM_NOSLEEP); + if (lacpp == NULL) + return ENOMEM; + lacp_mcastaddr(&ifr, lp->lp_ifp->if_xname); error = lp->lp_ioctl(lp->lp_ifp, SIOCADDMULTI, (void *)&ifr); @@ -687,13 +691,10 @@ lacp_allocport(struct lagg_proto_softc * default: LAGG_LOG(sc, LOG_ERR, "SIOCADDMULTI failed on %s\n", lp->lp_ifp->if_xname); + kmem_free(lacpp, sizeof(*lacpp)); return error; } - lacpp = kmem_zalloc(sizeof(*lacpp), KM_NOSLEEP); - if (lacpp == NULL) - return ENOMEM; - lacpp->lp_added_multi = added_multi; lagg_work_set(&lacpp->lp_work_smtx, lacp_sm_tx_work, lsc); lagg_work_set(&lacpp->lp_work_marker, lacp_marker_work, lsc);