Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jan 2018 20:21:46 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r327596 - head/sys/kern
Message-ID:  <201801052021.w05KLkF6067949@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Fri Jan  5 20:21:46 2018
New Revision: 327596
URL: https://svnweb.freebsd.org/changeset/base/327596

Log:
  In sendfile_iodone() both pru_abort and sorele need to be executed
  with proper VNET context set.
  
  Reported by:	sbruno
  MFC after:	2 weeks

Modified:
  head/sys/kern/kern_sendfile.c

Modified: head/sys/kern/kern_sendfile.c
==============================================================================
--- head/sys/kern/kern_sendfile.c	Fri Jan  5 19:28:13 2018	(r327595)
+++ head/sys/kern/kern_sendfile.c	Fri Jan  5 20:21:46 2018	(r327596)
@@ -273,6 +273,7 @@ sendfile_iodone(void *arg, vm_page_t *pg, int count, i
 	if (!refcount_release(&sfio->nios))
 		return;
 
+	CURVNET_SET(so->so_vnet);
 	if (sfio->error) {
 		struct mbuf *m;
 
@@ -293,15 +294,13 @@ sendfile_iodone(void *arg, vm_page_t *pg, int count, i
 		m = sfio->m;
 		for (int i = 0; i < sfio->npages; i++)
 			m = m_free(m);
-	} else {
-		CURVNET_SET(so->so_vnet);
+	} else
 		(void )(so->so_proto->pr_usrreqs->pru_ready)(so, sfio->m,
 		    sfio->npages);
-		CURVNET_RESTORE();
-	}
 
 	SOCK_LOCK(so);
 	sorele(so);
+	CURVNET_RESTORE();
 	free(sfio, M_TEMP);
 }
 



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