Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jul 2016 16:33:45 +0000 (UTC)
From:      =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= <royger@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r303488 - head/sys/dev/xen/netfront
Message-ID:  <201607291633.u6TGXjVY068064@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@tdx.co.uk>
  Sponsored by:		Citrix Systems R&D
  MFC after:		5 days
  Reviewed by:		Wei Liu <wei.liu2@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 */



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