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 <quic_darshana@quicinc.com>
此提交包含在:
Darshana Patil
2022-06-21 12:56:58 -07:00
父節點 a753289adb
當前提交 c6472ffcfb

查看文件

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