]> git.ipfire.org Git - thirdparty/bind9.git/commit
Break lock order loop by sending TAT in an event
authorMark Andrews <marka@isc.org>
Tue, 22 Sep 2020 05:22:34 +0000 (15:22 +1000)
committerMark Andrews <marka@isc.org>
Tue, 22 Sep 2020 12:33:58 +0000 (12:33 +0000)
commit3c4b68af7c0cd8213bcae92faee3bf2a7e9284d1
tree542248048d37b3a333469225b4aee44093209abf
parent2bb27e4a6162715ebfed7d036e9a2a28030f9e4d
Break lock order loop by sending TAT in an event

The dotat() function has been changed to send the TAT
query asynchronously, so there's no lock order loop
because we initialize the data first and then we schedule
the TAT send to happen asynchronously.

This breaks following lock-order loops:

zone->lock (dns_zone_setviewcommit) while holding view->lock
(dns_view_setviewcommit)

keytable->lock (dns_keytable_find) while holding zone->lock
(zone_asyncload)

view->lock (dns_view_findzonecut) while holding keytable->lock
(dns_keytable_forall)
bin/named/include/named/server.h
bin/named/server.c