svn commit: r327596 - head/sys/kern

Gleb Smirnoff glebius at FreeBSD.org
Fri Jan 5 20:21:47 UTC 2018


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);
 }
 


More information about the svn-src-head mailing list