Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jul 2018 11:33:23 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336405 - in head/sys: net netinet netinet6
Message-ID:  <201807171133.w6HBXNr6085991@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Tue Jul 17 11:33:23 2018
New Revision: 336405
URL: https://svnweb.freebsd.org/changeset/base/336405

Log:
  Move invoking of callout_stop(&lle->lle_timer) into llentry_free().
  
  This deduplicates the code a bit, and also implicitly adds missing
  callout_stop() to in[6]_lltable_delete_entry() functions.
  
  PR:		209682, 225927
  Submitted by:	hselasky (previous version)
  MFC after:	2 weeks
  Differential Revision:	https://reviews.freebsd.org/D4605

Modified:
  head/sys/net/if_llatbl.c
  head/sys/netinet/in.c
  head/sys/netinet6/in6.c

Modified: head/sys/net/if_llatbl.c
==============================================================================
--- head/sys/net/if_llatbl.c	Tue Jul 17 11:21:02 2018	(r336404)
+++ head/sys/net/if_llatbl.c	Tue Jul 17 11:33:23 2018	(r336405)
@@ -436,6 +436,9 @@ llentry_free(struct llentry *lle)
 
 	pkts_dropped = lltable_drop_entry_queue(lle);
 
+	/* cancel timer */
+	if (callout_stop(&lle->lle_timer) > 0)
+		LLE_REMREF(lle);
 	LLE_FREE_LOCKED(lle);
 
 	return (pkts_dropped);
@@ -522,8 +525,6 @@ lltable_free(struct lltable *llt)
 	IF_AFDATA_WUNLOCK(llt->llt_ifp);
 
 	CK_LIST_FOREACH_SAFE(lle, &dchain, lle_chain, next) {
-		if (callout_stop(&lle->lle_timer) > 0)
-			LLE_REMREF(lle);
 		llentry_free(lle);
 	}
 

Modified: head/sys/netinet/in.c
==============================================================================
--- head/sys/netinet/in.c	Tue Jul 17 11:21:02 2018	(r336404)
+++ head/sys/netinet/in.c	Tue Jul 17 11:33:23 2018	(r336405)
@@ -1165,10 +1165,6 @@ in_lltable_free_entry(struct lltable *llt, struct llen
 		lltable_unlink_entry(llt, lle);
 	}
 
-	/* cancel timer */
-	if (callout_stop(&lle->lle_timer) > 0)
-		LLE_REMREF(lle);
-
 	/* Drop hold queue */
 	pkts_dropped = llentry_free(lle);
 	ARPSTAT_ADD(dropped, pkts_dropped);

Modified: head/sys/netinet6/in6.c
==============================================================================
--- head/sys/netinet6/in6.c	Tue Jul 17 11:21:02 2018	(r336404)
+++ head/sys/netinet6/in6.c	Tue Jul 17 11:33:23 2018	(r336405)
@@ -2135,9 +2135,6 @@ in6_lltable_free_entry(struct lltable *llt, struct lle
 		lltable_unlink_entry(llt, lle);
 	}
 
-	if (callout_stop(&lle->lle_timer) > 0)
-		LLE_REMREF(lle);
-
 	llentry_free(lle);
 }
 



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