From 3426bd337df23a83c1e9b45184600edfd056c667 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 28 Feb 2013 13:14:52 +1100 Subject: [PATCH 1/2] check the returns from isc_task_beginexclusive --- lib/dns/adb.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/dns/adb.c b/lib/dns/adb.c index 7e3eced0c0..c5aa29d67a 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -539,7 +539,9 @@ grow_entries(isc_task_t *task, isc_event_t *ev) { isc_event_free(&ev); - isc_task_beginexclusive(task); + result = isc_task_beginexclusive(task); + if (result != ISC_R_SUCCESS) + goto check_exit; i = 0; while (nbuckets[i] != 0 && adb->nentries >= nbuckets[i]) @@ -669,6 +671,7 @@ grow_entries(isc_task_t *task, isc_event_t *ev) { done: isc_task_endexclusive(task); + check_exit: LOCK(&adb->lock); if (dec_adb_irefcnt(adb)) check_exit(adb); @@ -693,7 +696,9 @@ grow_names(isc_task_t *task, isc_event_t *ev) { isc_event_free(&ev); - isc_task_beginexclusive(task); + result = isc_task_beginexclusive(task); + if (result != ISC_R_SUCCESS) + goto check_exit; i = 0; while (nbuckets[i] != 0 && adb->nnames >= nbuckets[i]) @@ -819,6 +824,7 @@ grow_names(isc_task_t *task, isc_event_t *ev) { done: isc_task_endexclusive(task); + check_exit: LOCK(&adb->lock); if (dec_adb_irefcnt(adb)) check_exit(adb); From 189efe774ec63bcb2e97a111f2c0a8c8a68950d0 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 28 Feb 2013 13:23:05 +1100 Subject: [PATCH 2/2] check isc_task_beginexclusive result --- bin/named/server.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/named/server.c b/bin/named/server.c index 25ae1bfa33..9807487926 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -8264,7 +8264,8 @@ ns_server_add_zone(ns_server_t *server, char *args) { CHECK(isc_stdio_open(view->new_zone_file, "a", &fp)); /* Mark view unfrozen so that zone can be added */ - isc_task_beginexclusive(server->task); + result = isc_task_beginexclusive(server->task); + RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_view_thaw(view); result = configure_zone(cfg->config, parms, vconfig, server->mctx, view, cfg->actx, ISC_FALSE,