tests/drm_import_export: Always loop with mutex held

We assume that lock is held on start of the loop scope.
Some paths continuing inside loop didn't adhere to this
assumption, causing segfault on unlocking an already
unlocked mutex. Fix this by re-aquiring lock always.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93013
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
This commit is contained in:
Mika Kuoppala 2015-11-25 15:00:50 +02:00
parent 3b1a55874d
commit 32329b2e7d

View File

@ -161,20 +161,20 @@ static void *import_close_thread(void *data)
pthread_mutex_unlock(&t->mutex);
}
else
/* We take the lock right after entering the loop */
/* Lock should be held on entering the loop */
continue;
}
if (bo == NULL) {
/*
* If the bo is NULL it means that we've unreferenced in other
* thread - therefore we should expect ENOENT
*/
igt_assert_eq(errno, ENOENT);
continue;
} else {
drm_intel_bo_unreference(bo);
}
drm_intel_bo_unreference(bo);
pthread_mutex_lock(&t->mutex);
}
pthread_mutex_unlock(&t->mutex);