Module Name:    src
Committed By:   maxv
Date:           Wed Mar 21 15:33:25 UTC 2018

Modified Files:
        src/sys/netinet: ip_carp.c

Log Message:
Fix an untriggerable memory leak. carp_prepare_ad does not fail, so switch
it to void.


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.95 src/sys/netinet/ip_carp.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/netinet/ip_carp.c
diff -u src/sys/netinet/ip_carp.c:1.94 src/sys/netinet/ip_carp.c:1.95
--- src/sys/netinet/ip_carp.c:1.94	Wed Dec  6 09:54:47 2017
+++ src/sys/netinet/ip_carp.c	Wed Mar 21 15:33:25 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_carp.c,v 1.94 2017/12/06 09:54:47 ozaki-r Exp $	*/
+/*	$NetBSD: ip_carp.c,v 1.95 2018/03/21 15:33:25 maxv Exp $	*/
 /*	$OpenBSD: ip_carp.c,v 1.113 2005/11/04 08:11:54 mcbride Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.94 2017/12/06 09:54:47 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.95 2018/03/21 15:33:25 maxv Exp $");
 
 /*
  * TODO:
@@ -201,7 +201,7 @@ static void	carp_setroute(struct carp_so
 static void	carp_proto_input_c(struct mbuf *, struct carp_header *,
 		    sa_family_t);
 static void	carpdetach(struct carp_softc *);
-static int	carp_prepare_ad(struct mbuf *, struct carp_softc *,
+static void	carp_prepare_ad(struct mbuf *, struct carp_softc *,
 		    struct carp_header *);
 static void	carp_send_ad_all(void);
 static void	carp_send_ad(void *);
@@ -969,7 +969,7 @@ carp_ifdetach(struct ifnet *ifp)
 	}
 }
 
-static int
+static void
 carp_prepare_ad(struct mbuf *m, struct carp_softc *sc,
     struct carp_header *ch)
 {
@@ -983,8 +983,6 @@ carp_prepare_ad(struct mbuf *m, struct c
 	ch->carp_counter[1] = htonl(sc->sc_counter&0xffffffff);
 
 	carp_hmac_generate(sc, ch->carp_counter, ch->carp_md);
-
-	return (0);
 }
 
 static void
@@ -1110,8 +1108,7 @@ carp_send_ad(void *v)
 
 		ch_ptr = (struct carp_header *)(&ip[1]);
 		memcpy(ch_ptr, &ch, sizeof(ch));
-		if (carp_prepare_ad(m, sc, ch_ptr))
-			goto retry_later;
+		carp_prepare_ad(m, sc, ch_ptr);
 
 		m->m_data += sizeof(*ip);
 		ch_ptr->carp_cksum = carp_cksum(m, len - sizeof(*ip));
@@ -1200,8 +1197,7 @@ carp_send_ad(void *v)
 
 		ch_ptr = (struct carp_header *)(&ip6[1]);
 		memcpy(ch_ptr, &ch, sizeof(ch));
-		if (carp_prepare_ad(m, sc, ch_ptr))
-			goto retry_later;
+		carp_prepare_ad(m, sc, ch_ptr);
 
 		ch_ptr->carp_cksum = carp6_cksum(m, sizeof(*ip6),
 		    len - sizeof(*ip6));

Reply via email to