Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Mar 2015 13:10:10 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r280256 - stable/10/sys/net
Message-ID:  <201503191310.t2JDAAbZ039815@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Thu Mar 19 13:10:09 2015
New Revision: 280256
URL: https://svnweb.freebsd.org/changeset/base/280256

Log:
  MFC r279920:
    Add if_input_default() method, that will be used for if_input
    initialization, when no input method specified before if_attach().
  
    This prevents panics when if_input() method called directly e.g.
    from bpf(4) code.
  
    PR:		192426

Modified:
  stable/10/sys/net/if.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/net/if.c
==============================================================================
--- stable/10/sys/net/if.c	Thu Mar 19 13:08:17 2015	(r280255)
+++ stable/10/sys/net/if.c	Thu Mar 19 13:10:09 2015	(r280256)
@@ -162,6 +162,7 @@ static int	ifconf(u_long, caddr_t);
 static void	if_freemulti(struct ifmultiaddr *);
 static void	if_init(void *);
 static void	if_grow(void);
+static void	if_input_default(struct ifnet *, struct mbuf *);
 static void	if_route(struct ifnet *, int flag, int fam);
 static int	if_setflag(struct ifnet *, int, int, int *, int);
 static int	if_transmit(struct ifnet *ifp, struct mbuf *m);
@@ -665,7 +666,9 @@ if_attach_internal(struct ifnet *ifp, in
 		ifp->if_transmit = if_transmit;
 		ifp->if_qflush = if_qflush;
 	}
-	
+	if (ifp->if_input == NULL)
+		ifp->if_input = if_input_default;
+
 	if (!vmove) {
 #ifdef MAC
 		mac_ifnet_create(ifp);
@@ -3570,6 +3573,13 @@ if_transmit(struct ifnet *ifp, struct mb
 	return (error);
 }
 
+static void
+if_input_default(struct ifnet *ifp __unused, struct mbuf *m)
+{
+
+	m_freem(m);
+}
+
 int
 if_handoff(struct ifqueue *ifq, struct mbuf *m, struct ifnet *ifp, int adjust)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503191310.t2JDAAbZ039815>