Lock the address entry bucket when dumping ADB namehook

When dumping an ADB address entry associated with a name,
the name bucket lock was held, but the entry bucket lock was
not; this could cause data races when other threads were updating
address entry info. (These races are probably not operationally
harmful, but they triggered TSAN error reports.)

(cherry picked from commit f841f545b7)
This commit is contained in:
Evan Hunt 2022-08-11 15:06:34 -07:00
parent 1c1c0e3dca
commit 5aa4adc8e5

View file

@ -3675,7 +3675,13 @@ print_namehook_list(FILE *f, const char *legend, dns_adb_t *adb,
if (debug) {
fprintf(f, ";\tHook(%s) %p\n", legend, nh);
}
#ifdef __SANITIZE_THREAD__
LOCK(&adb->entrylocks[nh->entry->lock_bucket]);
#endif
dump_entry(f, adb, nh->entry, debug, now);
#ifdef __SANITIZE_THREAD__
UNLOCK(&adb->entrylocks[nh->entry->lock_bucket]);
#endif
}
}