[36720] Free event early (fixes race to free)
Patch contributed by yhu2 <yadi.hu@windriver.com>.
(cherry picked from commit a338c2d947)
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -1,3 +1,5 @@
|
||||
3910. [bug] Fix races to free event during shutdown. [RT#36720]
|
||||
|
||||
3909. [bug] When computing the number of elements required for a
|
||||
acl count_acl_elements could have a short count leading
|
||||
to a assertion failure. Also zero out new acl elements
|
||||
|
||||
@@ -624,6 +624,8 @@ resolver_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
LOCK(&view->lock);
|
||||
|
||||
view->attributes |= DNS_VIEWATTR_RESSHUTDOWN;
|
||||
@@ -631,8 +633,6 @@ resolver_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNLOCK(&view->lock);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
if (done)
|
||||
destroy(view);
|
||||
}
|
||||
@@ -648,6 +648,8 @@ adb_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
LOCK(&view->lock);
|
||||
|
||||
view->attributes |= DNS_VIEWATTR_ADBSHUTDOWN;
|
||||
@@ -655,8 +657,6 @@ adb_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNLOCK(&view->lock);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
if (done)
|
||||
destroy(view);
|
||||
}
|
||||
@@ -672,6 +672,8 @@ req_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
LOCK(&view->lock);
|
||||
|
||||
view->attributes |= DNS_VIEWATTR_REQSHUTDOWN;
|
||||
@@ -679,8 +681,6 @@ req_shutdown(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNLOCK(&view->lock);
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
if (done)
|
||||
destroy(view);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user