Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2020 22:30:52 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r364576 - stable/12/sys/netinet
Message-ID:  <202008232230.07NMUqdS001218@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Sun Aug 23 22:30:52 2020
New Revision: 364576
URL: https://svnweb.freebsd.org/changeset/base/364576

Log:
  MFC r359657:
  Do more argument validation under INVARIANTS when starting/stopping
  an SCTP timer.

Modified:
  stable/12/sys/netinet/sctputil.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/sctputil.c
==============================================================================
--- stable/12/sys/netinet/sctputil.c	Sun Aug 23 22:28:19 2020	(r364575)
+++ stable/12/sys/netinet/sctputil.c	Sun Aug 23 22:30:52 2020	(r364576)
@@ -1726,9 +1726,14 @@ sctp_timeout_handler(void *t)
 #endif
 
 	/* sanity checks... */
-	KASSERT(tmr->self == tmr, ("tmr->self corrupted"));
-	KASSERT(SCTP_IS_TIMER_TYPE_VALID(tmr->type), ("Invalid timer type %d", tmr->type));
+	KASSERT(tmr->self == tmr,
+	    ("sctp_timeout_handler: tmr->self corrupted"));
+	KASSERT(SCTP_IS_TIMER_TYPE_VALID(tmr->type),
+	    ("sctp_timeout_handler: invalid timer type %d", tmr->type));
 	type = tmr->type;
+	KASSERT(stcb == NULL || stcb->sctp_ep == inp,
+	    ("sctp_timeout_handler of type %d: inp = %p, stcb->sctp_ep %p",
+	    type, stcb, stcb->sctp_ep));
 	if (inp) {
 		SCTP_INP_INCR_REF(inp);
 	}
@@ -2142,6 +2147,9 @@ sctp_timer_start(int t_type, struct sctp_inpcb *inp, s
 	uint32_t to_ticks;
 	uint32_t rndval, jitter;
 
+	KASSERT(stcb == NULL || stcb->sctp_ep == inp,
+	    ("sctp_timer_start of type %d: inp = %p, stcb->sctp_ep %p",
+	    t_type, stcb, stcb->sctp_ep));
 	tmr = NULL;
 	to_ticks = 0;
 	if (stcb != NULL) {
@@ -2576,6 +2584,9 @@ sctp_timer_stop(int t_type, struct sctp_inpcb *inp, st
 {
 	struct sctp_timer *tmr;
 
+	KASSERT(stcb == NULL || stcb->sctp_ep == inp,
+	    ("sctp_timer_stop of type %d: inp = %p, stcb->sctp_ep %p",
+	    t_type, stcb, stcb->sctp_ep));
 	if (stcb != NULL) {
 		SCTP_TCB_LOCK_ASSERT(stcb);
 	} else if (inp != NULL) {



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