svn commit: r354423 - head/sys/netinet
Gleb Smirnoff
glebius at FreeBSD.org
Thu Nov 7 00:27:24 UTC 2019
Author: glebius
Date: Thu Nov 7 00:27:23 2019
New Revision: 354423
URL: https://svnweb.freebsd.org/changeset/base/354423
Log:
TCP timers are executed in callout context, so they need to enter network
epoch to look into PCB lists. Mechanically convert INP_INFO_RLOCK() to
NET_EPOCH_ENTER(). No functional change here.
Modified:
head/sys/netinet/tcp_timer.c
Modified: head/sys/netinet/tcp_timer.c
==============================================================================
--- head/sys/netinet/tcp_timer.c Thu Nov 7 00:10:14 2019 (r354422)
+++ head/sys/netinet/tcp_timer.c Thu Nov 7 00:27:23 2019 (r354423)
@@ -339,9 +339,9 @@ tcp_timer_2msl(void *xtp)
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_close(tp);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
goto out;
} else {
@@ -353,9 +353,9 @@ tcp_timer_2msl(void *xtp)
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_close(tp);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
@@ -478,7 +478,7 @@ dropit:
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_drop(tp, ETIMEDOUT);
#ifdef TCPDEBUG
@@ -487,7 +487,7 @@ dropit:
PRU_SLOWTIMO);
#endif
TCP_PROBE2(debug__user, tp, PRU_SLOWTIMO);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
out:
CURVNET_RESTORE();
@@ -542,9 +542,9 @@ tcp_timer_persist(void *xtp)
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_drop(tp, ETIMEDOUT);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
@@ -559,9 +559,9 @@ tcp_timer_persist(void *xtp)
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_drop(tp, ETIMEDOUT);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
@@ -628,9 +628,9 @@ tcp_timer_rexmt(void * xtp)
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
- INP_INFO_RLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_ENTER(et);
tp = tcp_drop(tp, ETIMEDOUT);
- INP_INFO_RUNLOCK_ET(&V_tcbinfo, et);
+ NET_EPOCH_EXIT(et);
tcp_inpinfo_lock_del(inp, tp);
goto out;
}
More information about the svn-src-all
mailing list