Skip to content
  • Mark Andrews's avatar
    Break lock order loop by sending TAT in an event · d95a1871
    Mark Andrews authored
    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)
    
    (cherry picked from commit 3c4b68af)
    d95a1871