Procházet zdrojové kódy

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 <[email protected]>
Kuldeep Singh před 1 rokem
rodič
revize
bde84ad2fb
1 změnil soubory, kde provedl 2 přidání a 4 odebrání
  1. 2 4
      msm/synx/synx.c

+ 2 - 4
msm/synx/synx.c

@@ -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);