- psTACmd->ui32NumSrcSyncs = psCCBKick->ui32NumSrcSyncs;
- for (i = 0; i < SGX_MAX_SRC_SYNCS; i++) {
- if (i >= psCCBKick->ui32NumSrcSyncs) {
- pvr_trcmd_clear_syn(&ktrace->src_syn[i]);
- continue;
+ /* check for duplicates while creating the new list */
+ psTACmd->ui32NumSrcSyncs = 0;
+ for (i = 0; ((i < SGX_MAX_SRC_SYNCS) &&
+ (i < psCCBKick->ui32NumSrcSyncs)); i++) {
+ int j;
+
+ psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+ psCCBKick->ahSrcKernelSyncInfo[i];
+
+ for (j = 0; j < i; j++) {
+ struct PVRSRV_KERNEL_SYNC_INFO *tmp =
+ psCCBKick->ahSrcKernelSyncInfo[j];
+ if (tmp->psSyncData == psSyncInfo->psSyncData) {
+ pr_err("%s: Duplicate SRC Sync detected: %p\n",
+ __func__, tmp->psSyncData);
+ break;
+ }