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);