aboutsummaryrefslogtreecommitdiff
path: root/src/core/device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/device.c')
-rw-r--r--src/core/device.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/core/device.c b/src/core/device.c
index e3b1d220..1f3bf233 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -187,12 +187,17 @@ void
nni_device_start(nni_device_data *dd, nni_aio *user)
{
int i;
+ int rv;
if (nni_aio_begin(user) != 0) {
return;
}
nni_mtx_lock(&dd->mtx);
- nni_aio_schedule(user, nni_device_cancel, dd);
+ if ((rv = nni_aio_schedule(user, nni_device_cancel, dd)) != 0) {
+ nni_mtx_unlock(&dd->mtx);
+ nni_aio_finish_error(user, rv);
+ return;
+ }
dd->user = user;
for (i = 0; i < dd->npath; i++) {
nni_device_path *p = &dd->paths[i];