mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-25 08:07:12 -04:00
2975. [bug] rbtdb.c:cleanup_dead_nodes_callback() aquired the
wrong lock which could lead to server deadlock.
[RT #22614]
This commit is contained in:
parent
3a54e5ab6c
commit
97664670d0
2 changed files with 7 additions and 3 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
2975. [bug] rbtdb.c:cleanup_dead_nodes_callback() aquired the
|
||||
wrong lock which could lead to server deadlock.
|
||||
[RT #22614]
|
||||
|
||||
2974. [bug] Some vaild UPDATE requests could fail due to a
|
||||
consistency check examining the existing version
|
||||
of the zone rather than the new version resulting
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rbtdb.c,v 1.306 2010/11/16 06:46:44 marka Exp $ */
|
||||
/* $Id: rbtdb.c,v 1.307 2010/12/02 04:58:13 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
|
|
@ -2115,7 +2115,7 @@ cleanup_dead_nodes_callback(isc_task_t *task, isc_event_t *event) {
|
|||
unsigned int locknum;
|
||||
unsigned int refs;
|
||||
|
||||
RBTDB_LOCK(&rbtdb->lock, isc_rwlocktype_write);
|
||||
RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_write);
|
||||
for (locknum = 0; locknum < rbtdb->node_lock_count; locknum++) {
|
||||
NODE_LOCK(&rbtdb->node_locks[locknum].lock,
|
||||
isc_rwlocktype_write);
|
||||
|
|
@ -2125,7 +2125,7 @@ cleanup_dead_nodes_callback(isc_task_t *task, isc_event_t *event) {
|
|||
NODE_UNLOCK(&rbtdb->node_locks[locknum].lock,
|
||||
isc_rwlocktype_write);
|
||||
}
|
||||
RBTDB_UNLOCK(&rbtdb->lock, isc_rwlocktype_write);
|
||||
RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_write);
|
||||
if (again)
|
||||
isc_task_send(task, &event);
|
||||
else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue