Procházet zdrojové kódy

video: driver: fix order of fence node delete and put

delete fence node from the list and then call
fence_put(). This fixes random crashes in fence
testcase

Change-Id: Ib2cdc3a4046a6065bff991fdebe178dddc8847b2
Signed-off-by: Darshana Patil <[email protected]>
Darshana Patil před 3 roky
rodič
revize
c6472ffcfb
1 změnil soubory, kde provedl 3 přidání a 3 odebrání
  1. 3 3
      driver/vidc/src/msm_vidc_fence.c

+ 3 - 3
driver/vidc/src/msm_vidc_fence.c

@@ -154,16 +154,16 @@ int msm_vidc_fence_signal(struct msm_vidc_inst *inst, u32 fence_id)
 
 	fence = msm_vidc_get_fence_from_id(inst, fence_id);
 	if (!fence) {
-		i_vpr_e(inst, "%s: no fence available to signal with id: %u",
+		i_vpr_e(inst, "%s: no fence available to signal with id: %u\n",
 			__func__, fence_id);
 		rc = -EINVAL;
 		goto exit;
 	}
 
 	i_vpr_l(inst, "%s: fence %s\n", __func__, fence->name);
+	list_del_init(&fence->list);
 	dma_fence_signal(&fence->dma_fence);
 	dma_fence_put(&fence->dma_fence);
-	list_del_init(&fence->list);
 
 exit:
 	return rc;
@@ -185,10 +185,10 @@ void msm_vidc_fence_destroy(struct msm_vidc_inst *inst, u32 fence_id)
 	}
 
 	i_vpr_e(inst, "%s: fence %s\n", __func__, fence->name);
+	list_del_init(&fence->list);
 	dma_fence_set_error(&fence->dma_fence, -EINVAL);
 	dma_fence_signal(&fence->dma_fence);
 	dma_fence_put(&fence->dma_fence);
-	list_del_init(&fence->list);
 }
 
 int msm_vidc_fence_init(struct msm_vidc_inst *inst)