msm: synx: Fix to block wait till all handles are signaled

Fixed a race condition in case of global and local merge
where wait was unblocked without waiting for signal on local
handles.

Change-Id: Ib1a87dd4b766c5d45114daae7539dc044488b724
Signed-off-by: Kuldeep Singh <quic_kulsin@quicinc.com>
This commit is contained in:
Kuldeep Singh
2023-07-27 01:30:51 +05:30
rodzic 88d2c55b0c
commit bde84ad2fb

Wyświetl plik

@@ -991,8 +991,8 @@ int synx_async_wait(struct synx_session *session,
synx_native_signal_fence(synx_obj, status);
}
}
else
status = synx_util_get_object_status(synx_obj);
status = synx_util_get_object_status(synx_obj);
synx_cb->session = session;
synx_cb->idx = idx;
@@ -1375,7 +1375,6 @@ int synx_wait(struct synx_session *session,
else
synx_native_signal_fence(synx_obj, rc);
mutex_unlock(&synx_obj->obj_lock);
goto status;
}
}
@@ -1389,7 +1388,6 @@ int synx_wait(struct synx_session *session,
goto fail;
}
status:
mutex_lock(&synx_obj->obj_lock);
rc = synx_util_get_object_status(synx_obj);
mutex_unlock(&synx_obj->obj_lock);