svn commit: r303488 - head/sys/dev/xen/netfront

Roger Pau Monné royger at FreeBSD.org
Fri Jul 29 16:33:47 UTC 2016


Author: royger
Date: Fri Jul 29 16:33:45 2016
New Revision: 303488
URL: https://svnweb.freebsd.org/changeset/base/303488

Log:
  xen-netfront: fix trying to send packets with disconnected netfront
  
  In certain circumstances xn_txq_mq_start might be called with num_queues ==
  0 during the resume phase after a migration, which can trigger a KASSERT.
  Fix this by making sure the carrier is on before trying to transmit, or else
  return that the queues are full.
  
  Just as a note, I haven't been able to reproduce this crash on my test
  systems, but I still think it's possible and worth fixing.
  
  Reported by:		Karl Pielorz <kpielorz_lst at tdx.co.uk>
  Sponsored by:		Citrix Systems R&D
  MFC after:		5 days
  Reviewed by:		Wei Liu <wei.liu2 at citrix.com>
  Differential revision:	https://reviews.freebsd.org/D7349

Modified:
  head/sys/dev/xen/netfront/netfront.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Fri Jul 29 16:28:51 2016	(r303487)
+++ head/sys/dev/xen/netfront/netfront.c	Fri Jul 29 16:33:45 2016	(r303488)
@@ -2157,6 +2157,9 @@ xn_txq_mq_start(struct ifnet *ifp, struc
 	np = ifp->if_softc;
 	npairs = np->num_queues;
 
+	if (!netfront_carrier_ok(np))
+		return (ENOBUFS);
+
 	KASSERT(npairs != 0, ("called with 0 available queues"));
 
 	/* check if flowid is set */


More information about the svn-src-head mailing list