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);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to