Module Name:    src
Committed By:   tnn
Date:           Thu Jul 27 10:32:25 UTC 2023

Modified Files:
        src/external/mpl/dhcp/dist/common: dispatch.c

Log Message:
dhcpd: move isc_event_free() before isc_timer_destroy() in timer cb

isc_timerevent_destroy() called by isc_event_free() expects to be able to
hold the timer lock, so must run before the timer is destroyed.
PR misc/57491.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/mpl/dhcp/dist/common/dispatch.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/mpl/dhcp/dist/common/dispatch.c
diff -u src/external/mpl/dhcp/dist/common/dispatch.c:1.4 src/external/mpl/dhcp/dist/common/dispatch.c:1.5
--- src/external/mpl/dhcp/dist/common/dispatch.c:1.4	Tue Jun 27 09:10:25 2023
+++ src/external/mpl/dhcp/dist/common/dispatch.c	Thu Jul 27 10:32:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: dispatch.c,v 1.4 2023/06/27 09:10:25 martin Exp $	*/
+/*	$NetBSD: dispatch.c,v 1.5 2023/07/27 10:32:25 tnn Exp $	*/
 
 /* dispatch.c
 
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: dispatch.c,v 1.4 2023/06/27 09:10:25 martin Exp $");
+__RCSID("$NetBSD: dispatch.c,v 1.5 2023/07/27 10:32:25 tnn Exp $");
 
 #include "dhcpd.h"
 
@@ -183,6 +183,7 @@ isclib_timer_callback(isc_task_t  *taskp
 			(*q->unref) (&q->what, MDL);
 		}
 		q->next = free_timeouts;
+		isc_event_free(&eventp);
 		isc_timer_destroy(&q->isc_timeout);
 		free_timeouts = q;
 	} else {
@@ -192,9 +193,9 @@ isclib_timer_callback(isc_task_t  *taskp
 		 * don't try to - may change this to a log_fatal
 		 */
 		log_error("Error finding timer structure");
+		isc_event_free(&eventp);
 	}
 
-	isc_event_free(&eventp);
 	return;
 }
 

Reply via email to