Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-9]: src/sys/net Pull up following revision(s) (requested by knaka...
details: https://anonhg.NetBSD.org/src/rev/a4104e910430
branches: netbsd-9
changeset: 963061:a4104e910430
user: martin <martin%NetBSD.org@localhost>
date: Thu Oct 03 17:12:53 2019 +0000
description:
Pull up following revision(s) (requested by knakahara in ticket #272):
sys/net/route.c: revision 1.222
sys/net/route.c: revision 1.224
sys/net/route.c: revision 1.225
Stop passing a large const structure by value, in order to avoid
possible kernel stack overflow; const pointer is suffice here.
Pointed out by the lgtm bot and kamil.
OK ozaki-r
-
Fix a ifa_release() leak for a specific struct rt_addrinfo.
ok by ozaki-r@n.o
-
Revert route.c:r1.224 to fix net/arp/t_arp and net/ndp/t_ndp failure.
And refactor a little. Discussed with ozaki-r@n.o.
diffstat:
sys/net/route.c | 37 +++++++++++++++++++------------------
1 files changed, 19 insertions(+), 18 deletions(-)
diffs (91 lines):
diff -r fc4ff10d52dc -r a4104e910430 sys/net/route.c
--- a/sys/net/route.c Thu Oct 03 17:07:51 2019 +0000
+++ b/sys/net/route.c Thu Oct 03 17:12:53 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: route.c,v 1.219.2.1 2019/09/24 03:10:35 martin Exp $ */
+/* $NetBSD: route.c,v 1.219.2.2 2019/10/03 17:12:53 martin Exp $ */
/*-
* Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.219.2.1 2019/09/24 03:10:35 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.219.2.2 2019/10/03 17:12:53 martin Exp $");
#include <sys/param.h>
#ifdef RTFLUSH_DEBUG
@@ -1387,47 +1387,48 @@
}
static struct ifaddr *
-rt_update_get_ifa(const struct rt_addrinfo info, const struct rtentry *rt,
+rt_update_get_ifa(const struct rt_addrinfo *info, const struct rtentry *rt,
struct ifnet **ifp, struct psref *psref_ifp, struct psref *psref)
{
struct ifaddr *ifa = NULL;
*ifp = NULL;
- if (info.rti_info[RTAX_IFP] != NULL) {
- ifa = ifa_ifwithnet_psref(info.rti_info[RTAX_IFP], psref);
+ if (info->rti_info[RTAX_IFP] != NULL) {
+ ifa = ifa_ifwithnet_psref(info->rti_info[RTAX_IFP], psref);
if (ifa == NULL)
goto next;
*ifp = ifa->ifa_ifp;
if_acquire(*ifp, psref_ifp);
- if (info.rti_info[RTAX_IFA] == NULL &&
- info.rti_info[RTAX_GATEWAY] == NULL)
- goto next;
+ if (info->rti_info[RTAX_IFA] == NULL &&
+ info->rti_info[RTAX_GATEWAY] == NULL)
+ goto out;
ifa_release(ifa, psref);
- if (info.rti_info[RTAX_IFA] == NULL) {
+ if (info->rti_info[RTAX_IFA] == NULL) {
/* route change <dst> <gw> -ifp <if> */
- ifa = ifaof_ifpforaddr_psref(info.rti_info[RTAX_GATEWAY],
- *ifp, psref);
+ ifa = ifaof_ifpforaddr_psref(
+ info->rti_info[RTAX_GATEWAY], *ifp, psref);
} else {
/* route change <dst> -ifp <if> -ifa <addr> */
- ifa = ifa_ifwithaddr_psref(info.rti_info[RTAX_IFA], psref);
+ ifa = ifa_ifwithaddr_psref(info->rti_info[RTAX_IFA],
+ psref);
if (ifa != NULL)
goto out;
- ifa = ifaof_ifpforaddr_psref(info.rti_info[RTAX_IFA],
+ ifa = ifaof_ifpforaddr_psref(info->rti_info[RTAX_IFA],
*ifp, psref);
}
goto out;
}
next:
- if (info.rti_info[RTAX_IFA] != NULL) {
+ if (info->rti_info[RTAX_IFA] != NULL) {
/* route change <dst> <gw> -ifa <addr> */
- ifa = ifa_ifwithaddr_psref(info.rti_info[RTAX_IFA], psref);
+ ifa = ifa_ifwithaddr_psref(info->rti_info[RTAX_IFA], psref);
if (ifa != NULL)
goto out;
}
- if (info.rti_info[RTAX_GATEWAY] != NULL) {
+ if (info->rti_info[RTAX_GATEWAY] != NULL) {
/* route change <dst> <gw> */
ifa = ifa_ifwithroute_psref(rt->rt_flags, rt_getkey(rt),
- info.rti_info[RTAX_GATEWAY], psref);
+ info->rti_info[RTAX_GATEWAY], psref);
}
out:
if (ifa != NULL && *ifp == NULL) {
@@ -1487,7 +1488,7 @@
* flags may also be different; ifp may be specified
* by ll sockaddr when protocol address is ambiguous
*/
- new_ifa = rt_update_get_ifa(*info, rt, &new_ifp, &psref_new_ifp,
+ new_ifa = rt_update_get_ifa(info, rt, &new_ifp, &psref_new_ifp,
&psref_new_ifa);
if (new_ifa != NULL) {
ifa_release(ifa, &psref_ifa);
Home |
Main Index |
Thread Index |
Old Index