mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
Address race between zone_settimer and set_key_expiry_warning by
adding missing lock. WARNING: ThreadSanitizer: data race Read of size 4 at 0x000000000001 by thread T1 (mutexes: read M1, write M2): #0 isc_time_isepoch lib/isc/unix/time.c:110 #1 zone_settimer lib/dns/zone.c:14649 #2 dns_zone_maintenance lib/dns/zone.c:6281 #3 dns_zonemgr_forcemaint lib/dns/zone.c:18190 #4 view_loaded server.c:9654 #5 call_loaddone lib/dns/zt.c:301 #6 doneloading lib/dns/zt.c:575 #7 zone_asyncload lib/dns/zone.c:2259 #8 task_run lib/isc/task.c:845 #9 isc_task_run lib/isc/task.c:938 #10 isc__nm_async_task lib/isc/netmgr/netmgr.c:855 #11 process_netievent lib/isc/netmgr/netmgr.c:934 #12 process_queue lib/isc/netmgr/netmgr.c:1003 #13 process_all_queues lib/isc/netmgr/netmgr.c:775 #14 async_cb lib/isc/netmgr/netmgr.c:804 #15 <null> <null> #16 isc__trampoline_run lib/isc/trampoline.c:191 #17 <null> <null> Previous write of size 4 at 0x000000000001 by thread T2: #0 isc_time_set lib/isc/unix/time.c:93 #1 set_key_expiry_warning lib/dns/zone.c:6430 #2 del_sigs lib/dns/zone.c:6711 #3 zone_resigninc lib/dns/zone.c:7113 #4 zone_maintenance lib/dns/zone.c:11111 #5 zone_timer lib/dns/zone.c:14588 #6 task_run lib/isc/task.c:845 #7 isc_task_run lib/isc/task.c:938 #8 isc__nm_async_task lib/isc/netmgr/netmgr.c:855 #9 process_netievent lib/isc/netmgr/netmgr.c:934 #10 process_queue lib/isc/netmgr/netmgr.c:1003 #11 process_all_queues lib/isc/netmgr/netmgr.c:775 #12 async_cb lib/isc/netmgr/netmgr.c:804 #13 <null> <null> #14 isc__trampoline_run lib/isc/trampoline.c:191 #15 <null> <null> SUMMARY: ThreadSanitizer: data race lib/isc/unix/time.c:110 in isc_time_isepoch
This commit is contained in:
@@ -6479,6 +6479,7 @@ set_key_expiry_warning(dns_zone_t *zone, isc_stdtime_t when,
|
||||
unsigned int delta;
|
||||
char timebuf[80];
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
zone->key_expiry = when;
|
||||
if (when <= now) {
|
||||
dns_zone_log(zone, ISC_LOG_ERROR,
|
||||
@@ -6502,6 +6503,7 @@ set_key_expiry_warning(dns_zone_t *zone, isc_stdtime_t when,
|
||||
dns_zone_log(zone, ISC_LOG_NOTICE, "setting keywarntime to %s",
|
||||
timebuf);
|
||||
}
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user