Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jan 2020 11:43:26 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r356938 - head/sys/kern
Message-ID:  <202001211143.00LBhQfT059272@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Tue Jan 21 11:43:25 2020
New Revision: 356938
URL: https://svnweb.freebsd.org/changeset/base/356938

Log:
  Make sure the VNET is properly set when calling tcp_drop() from
  the ktls taskqueue callback function.
  
  A valid VNET is needed when updating statistics.
  
  panic()
  tcp_state_change()
  tcp_drop()
  ktls_reset_send_tag()
  taskqueue_run_locked()
  taskqueue_thread_loop()
  
  Sponsored by:	Mellanox Technologies

Modified:
  head/sys/kern/uipc_ktls.c

Modified: head/sys/kern/uipc_ktls.c
==============================================================================
--- head/sys/kern/uipc_ktls.c	Tue Jan 21 05:01:11 2020	(r356937)
+++ head/sys/kern/uipc_ktls.c	Tue Jan 21 11:43:25 2020	(r356938)
@@ -1141,7 +1141,9 @@ ktls_reset_send_tag(void *context, int pending)
 			if (!(inp->inp_flags & INP_TIMEWAIT) &&
 			    !(inp->inp_flags & INP_DROPPED)) {
 				tp = intotcpcb(inp);
+				CURVNET_SET(tp->t_vnet);
 				tp = tcp_drop(tp, ECONNABORTED);
+				CURVNET_RESTORE();
 				if (tp != NULL)
 					INP_WUNLOCK(inp);
 				counter_u64_add(ktls_ifnet_reset_dropped, 1);



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