Index | Thread | Search

From:
Bjorn Ketelaars <bket@openbsd.org>
Subject:
[PATCH 1/4] evtimer_del(): remove redundant pending checks in sbin/
To:
tech@openbsd.org
Date:
Fri, 16 Oct 2026 14:32:20 +0200

Download raw body.

Thread
While reading event(3), I noticed that it says event_del() has no effect
if an event “has already executed or has never been added”. The manual
describes evtimer_del() as an abbreviation for the same event API, so
checking evtimer_pending() immediately before deleting an initialized
timer is unnecessary.

This patch removes those checks from timer state transitions in
dhcp6leased, dhcpleased, and slaacd, and from timer replacement in iked.

These are mechanical cleanups; timer scheduling and callback behavior
are unchanged.

Comments/OK?


Index: sbin/dhcp6leased/engine.c
===================================================================
RCS file: /cvs/src/sbin/dhcp6leased/engine.c,v
diff -u -p -r1.42 engine.c
--- sbin/dhcp6leased/engine.c	4 Aug 2026 12:50:43 -0000	1.42
+++ sbin/dhcp6leased/engine.c	16 Oct 2026 12:07:35 -0000
@@ -1212,10 +1212,9 @@ state_transition(struct dhcp6leased_ifac
 	    "?" : if_name, if_state_name[old_state], if_state_name[new_state],
 	    iface->timo.tv_sec);
 
-	if (iface->timo.tv_sec == -1) {
-		if (evtimer_pending(&iface->timer, NULL))
-			evtimer_del(&iface->timer);
-	} else
+	if (iface->timo.tv_sec == -1)
+		evtimer_del(&iface->timer);
+	else
 		evtimer_add(&iface->timer, &iface->timo);
 }
 
Index: sbin/dhcpleased/engine.c
===================================================================
RCS file: /cvs/src/sbin/dhcpleased/engine.c,v
diff -u -p -r1.70 engine.c
--- sbin/dhcpleased/engine.c	26 Aug 2026 17:25:13 -0000	1.70
+++ sbin/dhcpleased/engine.c	16 Oct 2026 12:07:35 -0000
@@ -1544,10 +1544,9 @@ state_transition(struct dhcpleased_iface
 	    if_state_name[old_state], if_state_name[new_state],
 	    iface->timo.tv_sec);
 
-	if (iface->timo.tv_sec == -1) {
-		if (evtimer_pending(&iface->timer, NULL))
-			evtimer_del(&iface->timer);
-	} else
+	if (iface->timo.tv_sec == -1)
+		evtimer_del(&iface->timer);
+	else
 		evtimer_add(&iface->timer, &iface->timo);
 }
 
Index: sbin/iked/timer.c
===================================================================
RCS file: /cvs/src/sbin/iked/timer.c,v
diff -u -p -r1.13 timer.c
--- sbin/iked/timer.c	13 Sep 2016 10:49:52 -0000	1.13
+++ sbin/iked/timer.c	16 Oct 2026 12:07:35 -0000
@@ -37,8 +37,7 @@ void
 timer_set(struct iked *env, struct iked_timer *tmr,
     void (*cb)(struct iked *, void *), void *arg)
 {
-	if (evtimer_initialized(&tmr->tmr_ev) &&
-	    evtimer_pending(&tmr->tmr_ev, NULL))
+	if (evtimer_initialized(&tmr->tmr_ev))
 		evtimer_del(&tmr->tmr_ev);
 
 	tmr->tmr_env = env;
Index: sbin/slaacd/engine.c
===================================================================
RCS file: /cvs/src/sbin/slaacd/engine.c,v
diff -u -p -r1.105 engine.c
--- sbin/slaacd/engine.c	4 Aug 2026 12:48:01 -0000	1.105
+++ sbin/slaacd/engine.c	16 Oct 2026 12:07:35 -0000
@@ -1029,10 +1029,9 @@ iface_state_transition(struct slaacd_ifa
 		    if_state_name(new_state), iface->timo.tv_sec);
 	}
 
-	if (iface->timo.tv_sec == -1) {
-		if (evtimer_pending(&iface->timer, NULL))
-			evtimer_del(&iface->timer);
-	} else
+	if (iface->timo.tv_sec == -1)
+		evtimer_del(&iface->timer);
+	else
 		evtimer_add(&iface->timer, &iface->timo);
 }
 
@@ -1110,10 +1109,9 @@ void addr_proposal_state_transition(stru
 		    proposal_state_name(new_state), addr_proposal->timo.tv_sec);
 	}
 
-	if (addr_proposal->timo.tv_sec == -1) {
-		if (evtimer_pending(&addr_proposal->timer, NULL))
-			evtimer_del(&addr_proposal->timer);
-	} else
+	if (addr_proposal->timo.tv_sec == -1)
+		evtimer_del(&addr_proposal->timer);
+	else
 		evtimer_add(&addr_proposal->timer, &addr_proposal->timo);
 }
 
@@ -1186,10 +1184,9 @@ void dfr_proposal_state_transition(struc
 		    proposal_state_name(new_state), dfr_proposal->timo.tv_sec);
 	}
 
-	if (dfr_proposal->timo.tv_sec == -1) {
-		if (evtimer_pending(&dfr_proposal->timer, NULL))
-			evtimer_del(&dfr_proposal->timer);
-	} else
+	if (dfr_proposal->timo.tv_sec == -1)
+		evtimer_del(&dfr_proposal->timer);
+	else
 		evtimer_add(&dfr_proposal->timer, &dfr_proposal->timo);
 
 }
@@ -1263,10 +1260,9 @@ void rdns_proposal_state_transition(stru
 		    proposal_state_name(new_state), rdns_proposal->timo.tv_sec);
 	}
 
-	if (rdns_proposal->timo.tv_sec == -1) {
-		if (evtimer_pending(&rdns_proposal->timer, NULL))
-			evtimer_del(&rdns_proposal->timer);
-	} else
+	if (rdns_proposal->timo.tv_sec == -1)
+		evtimer_del(&rdns_proposal->timer);
+	else
 		evtimer_add(&rdns_proposal->timer, &rdns_proposal->timo);
 }