Module Name:    src
Committed By:   martin
Date:           Mon Jan 28 12:53:01 UTC 2019

Modified Files:
        src/sys/net: link_proto.c
        src/sys/netatalk: ddp_usrreq.c
        src/sys/netbt: hci_socket.c l2cap_socket.c rfcomm_socket.c sco_socket.c
        src/sys/netinet: sctp_usrreq.c tcp_usrreq.c
        src/sys/netinet6: raw_ip6.c sctp6_usrreq.c udp6_usrreq.c
        src/sys/netmpls: mpls_proto.c

Log Message:
Fix memory leaks pointed out by Ilja Van Sprundel: all
sendoob() functions are expted to free both passed
mbuf chains.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/sys/net/link_proto.c
cvs rdiff -u -r1.71 -r1.72 src/sys/netatalk/ddp_usrreq.c
cvs rdiff -u -r1.45 -r1.46 src/sys/netbt/hci_socket.c
cvs rdiff -u -r1.35 -r1.36 src/sys/netbt/l2cap_socket.c
cvs rdiff -u -r1.37 -r1.38 src/sys/netbt/rfcomm_socket.c \
    src/sys/netbt/sco_socket.c
cvs rdiff -u -r1.13 -r1.14 src/sys/netinet/sctp_usrreq.c
cvs rdiff -u -r1.222 -r1.223 src/sys/netinet/tcp_usrreq.c
cvs rdiff -u -r1.172 -r1.173 src/sys/netinet6/raw_ip6.c
cvs rdiff -u -r1.16 -r1.17 src/sys/netinet6/sctp6_usrreq.c
cvs rdiff -u -r1.145 -r1.146 src/sys/netinet6/udp6_usrreq.c
cvs rdiff -u -r1.31 -r1.32 src/sys/netmpls/mpls_proto.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/link_proto.c
diff -u src/sys/net/link_proto.c:1.36 src/sys/net/link_proto.c:1.37
--- src/sys/net/link_proto.c:1.36	Thu Apr  6 03:55:00 2017
+++ src/sys/net/link_proto.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: link_proto.c,v 1.36 2017/04/06 03:55:00 ozaki-r Exp $	*/
+/*	$NetBSD: link_proto.c,v 1.37 2019/01/28 12:53:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.36 2017/04/06 03:55:00 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.37 2019/01/28 12:53:01 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/socket.h>
@@ -401,6 +401,9 @@ link_sendoob(struct socket *so, struct m
 {
 	KASSERT(solocked(so));
 
+	m_freem(m);
+	m_freem(control);
+
 	return EOPNOTSUPP;
 }
 

Index: src/sys/netatalk/ddp_usrreq.c
diff -u src/sys/netatalk/ddp_usrreq.c:1.71 src/sys/netatalk/ddp_usrreq.c:1.72
--- src/sys/netatalk/ddp_usrreq.c:1.71	Sat Feb 17 19:10:18 2018
+++ src/sys/netatalk/ddp_usrreq.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: ddp_usrreq.c,v 1.71 2018/02/17 19:10:18 rjs Exp $	 */
+/*	$NetBSD: ddp_usrreq.c,v 1.72 2019/01/28 12:53:01 martin Exp $	 */
 
 /*
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.71 2018/02/17 19:10:18 rjs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.72 2019/01/28 12:53:01 martin Exp $");
 
 #include "opt_mbuftrace.h"
 #include "opt_atalk.h"
@@ -519,8 +519,8 @@ ddp_sendoob(struct socket *so, struct mb
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netbt/hci_socket.c
diff -u src/sys/netbt/hci_socket.c:1.45 src/sys/netbt/hci_socket.c:1.46
--- src/sys/netbt/hci_socket.c:1.45	Tue Dec 22 11:40:07 2015
+++ src/sys/netbt/hci_socket.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: hci_socket.c,v 1.45 2015/12/22 11:40:07 plunky Exp $	*/
+/*	$NetBSD: hci_socket.c,v 1.46 2019/01/28 12:53:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.45 2015/12/22 11:40:07 plunky Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.46 2019/01/28 12:53:01 martin Exp $");
 
 /* load symbolic names */
 #ifdef BLUETOOTH_DEBUG
@@ -690,10 +690,8 @@ hci_sendoob(struct socket *so, struct mb
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netbt/l2cap_socket.c
diff -u src/sys/netbt/l2cap_socket.c:1.35 src/sys/netbt/l2cap_socket.c:1.36
--- src/sys/netbt/l2cap_socket.c:1.35	Sat May  2 17:18:03 2015
+++ src/sys/netbt/l2cap_socket.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: l2cap_socket.c,v 1.35 2015/05/02 17:18:03 rtr Exp $	*/
+/*	$NetBSD: l2cap_socket.c,v 1.36 2019/01/28 12:53:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.35 2015/05/02 17:18:03 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.36 2019/01/28 12:53:01 martin Exp $");
 
 /* load symbolic names */
 #ifdef BLUETOOTH_DEBUG
@@ -338,10 +338,8 @@ l2cap_sendoob(struct socket *so, struct 
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netbt/rfcomm_socket.c
diff -u src/sys/netbt/rfcomm_socket.c:1.37 src/sys/netbt/rfcomm_socket.c:1.38
--- src/sys/netbt/rfcomm_socket.c:1.37	Sat May  2 17:18:03 2015
+++ src/sys/netbt/rfcomm_socket.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rfcomm_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $	*/
+/*	$NetBSD: rfcomm_socket.c,v 1.38 2019/01/28 12:53:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.38 2019/01/28 12:53:01 martin Exp $");
 
 /* load symbolic names */
 #ifdef BLUETOOTH_DEBUG
@@ -343,10 +343,8 @@ rfcomm_sendoob(struct socket *so, struct
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }
Index: src/sys/netbt/sco_socket.c
diff -u src/sys/netbt/sco_socket.c:1.37 src/sys/netbt/sco_socket.c:1.38
--- src/sys/netbt/sco_socket.c:1.37	Sat May  2 17:18:03 2015
+++ src/sys/netbt/sco_socket.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: sco_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $	*/
+/*	$NetBSD: sco_socket.c,v 1.38 2019/01/28 12:53:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.38 2019/01/28 12:53:01 martin Exp $");
 
 /* load symbolic names */
 #ifdef BLUETOOTH_DEBUG
@@ -329,10 +329,8 @@ sco_sendoob(struct socket *so, struct mb
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netinet/sctp_usrreq.c
diff -u src/sys/netinet/sctp_usrreq.c:1.13 src/sys/netinet/sctp_usrreq.c:1.14
--- src/sys/netinet/sctp_usrreq.c:1.13	Mon Sep  3 16:29:36 2018
+++ src/sys/netinet/sctp_usrreq.c	Mon Jan 28 12:53:01 2019
@@ -1,5 +1,5 @@
 /*	$KAME: sctp_usrreq.c,v 1.50 2005/06/16 20:45:29 jinmei Exp $	*/
-/*	$NetBSD: sctp_usrreq.c,v 1.13 2018/09/03 16:29:36 riastradh Exp $	*/
+/*	$NetBSD: sctp_usrreq.c,v 1.14 2019/01/28 12:53:01 martin Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Cisco Systems, Inc.
@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sctp_usrreq.c,v 1.13 2018/09/03 16:29:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sctp_usrreq.c,v 1.14 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -3824,10 +3824,8 @@ sctp_sendoob(struct socket *so, struct m
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netinet/tcp_usrreq.c
diff -u src/sys/netinet/tcp_usrreq.c:1.222 src/sys/netinet/tcp_usrreq.c:1.223
--- src/sys/netinet/tcp_usrreq.c:1.222	Sun Dec 16 17:46:58 2018
+++ src/sys/netinet/tcp_usrreq.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: tcp_usrreq.c,v 1.222 2018/12/16 17:46:58 christos Exp $	*/
+/*	$NetBSD: tcp_usrreq.c,v 1.223 2019/01/28 12:53:01 martin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -99,7 +99,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.222 2018/12/16 17:46:58 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.223 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1148,14 +1148,18 @@ tcp_sendoob(struct socket *so, struct mb
 	int error = 0;
 	int s;
 
-	if ((error = tcp_getpcb(so, &inp, &in6p, &tp)) != 0)
+	if ((error = tcp_getpcb(so, &inp, &in6p, &tp)) != 0) {
+		m_freem(m);
+		m_freem(control);
 		return error;
+	}
 
 	ostate = tcp_debug_capture(tp, PRU_SENDOOB);
 
 	s = splsoftnet();
 	if (sbspace_oob(&so->so_snd) == 0) {
 		m_freem(m);
+		m_freem(control);
 		splx(s);
 		return ENOBUFS;
 	}
@@ -1174,6 +1178,7 @@ tcp_sendoob(struct socket *so, struct mb
 	tp->t_force = 0;
 	tcp_debug_trace(so, tp, ostate, PRU_SENDOOB);
 	splx(s);
+	m_freem(control);
 
 	return error;
 }

Index: src/sys/netinet6/raw_ip6.c
diff -u src/sys/netinet6/raw_ip6.c:1.172 src/sys/netinet6/raw_ip6.c:1.173
--- src/sys/netinet6/raw_ip6.c:1.172	Fri May 11 14:25:50 2018
+++ src/sys/netinet6/raw_ip6.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: raw_ip6.c,v 1.172 2018/05/11 14:25:50 maxv Exp $	*/
+/*	$NetBSD: raw_ip6.c,v 1.173 2019/01/28 12:53:01 martin Exp $	*/
 /*	$KAME: raw_ip6.c,v 1.82 2001/07/23 18:57:56 jinmei Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.172 2018/05/11 14:25:50 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.173 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ipsec.h"
@@ -905,8 +905,8 @@ rip6_sendoob(struct socket *so, struct m
 {
 	KASSERT(solocked(so));
 
-	if (m)
-	 	m_freem(m);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netinet6/sctp6_usrreq.c
diff -u src/sys/netinet6/sctp6_usrreq.c:1.16 src/sys/netinet6/sctp6_usrreq.c:1.17
--- src/sys/netinet6/sctp6_usrreq.c:1.16	Tue May  1 07:21:39 2018
+++ src/sys/netinet6/sctp6_usrreq.c	Mon Jan 28 12:53:01 2019
@@ -1,5 +1,5 @@
 /* $KAME: sctp6_usrreq.c,v 1.38 2005/08/24 08:08:56 suz Exp $ */
-/* $NetBSD: sctp6_usrreq.c,v 1.16 2018/05/01 07:21:39 maxv Exp $ */
+/* $NetBSD: sctp6_usrreq.c,v 1.17 2019/01/28 12:53:01 martin Exp $ */
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Cisco Systems, Inc.
@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sctp6_usrreq.c,v 1.16 2018/05/01 07:21:39 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sctp6_usrreq.c,v 1.17 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -912,10 +912,8 @@ sctp6_sendoob(struct socket *so, struct 
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netinet6/udp6_usrreq.c
diff -u src/sys/netinet6/udp6_usrreq.c:1.145 src/sys/netinet6/udp6_usrreq.c:1.146
--- src/sys/netinet6/udp6_usrreq.c:1.145	Thu Dec 27 16:59:17 2018
+++ src/sys/netinet6/udp6_usrreq.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: udp6_usrreq.c,v 1.145 2018/12/27 16:59:17 maxv Exp $ */
+/* $NetBSD: udp6_usrreq.c,v 1.146 2019/01/28 12:53:01 martin Exp $ */
 /* $KAME: udp6_usrreq.c,v 1.86 2001/05/27 17:33:00 itojun Exp $ */
 /* $KAME: udp6_output.c,v 1.43 2001/10/15 09:19:52 itojun Exp $ */
 
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.145 2018/12/27 16:59:17 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.146 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1279,10 +1279,8 @@ udp6_sendoob(struct socket *so, struct m
 {
 	KASSERT(solocked(so));
 
-	if (m)
-		m_freem(m);
-	if (control)
-		m_freem(control);
+	m_freem(m);
+	m_freem(control);
 
 	return EOPNOTSUPP;
 }

Index: src/sys/netmpls/mpls_proto.c
diff -u src/sys/netmpls/mpls_proto.c:1.31 src/sys/netmpls/mpls_proto.c:1.32
--- src/sys/netmpls/mpls_proto.c:1.31	Thu Sep 21 07:15:35 2017
+++ src/sys/netmpls/mpls_proto.c	Mon Jan 28 12:53:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: mpls_proto.c,v 1.31 2017/09/21 07:15:35 ozaki-r Exp $ */
+/*	$NetBSD: mpls_proto.c,v 1.32 2019/01/28 12:53:01 martin Exp $ */
 
 /*
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpls_proto.c,v 1.31 2017/09/21 07:15:35 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpls_proto.c,v 1.32 2019/01/28 12:53:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -221,6 +221,9 @@ mpls_sendoob(struct socket *so, struct m
 {
 	KASSERT(solocked(so));
 
+	m_freem(m);
+	m_freem(control);
+
 	return EOPNOTSUPP;
 }
 

Reply via email to