Re: [PATCH v1 2/2] drm/virtio: Fix missed dmabuf unpinning in error path of prepare_fb()
From: Dmitry Osipenko
Date: Wed Mar 26 2025 - 07:54:40 EST
On 3/26/25 08:14, Kasireddy, Vivek wrote:
...
>> static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane,
>> struct drm_plane_state *new_state)
>> {
>> @@ -376,23 +386,16 @@ static int virtio_gpu_plane_prepare_fb(struct
>> drm_plane *plane,
>> vgplane_st->fence = virtio_gpu_fence_alloc(vgdev,
>> vgdev->fence_drv.context,
>> 0);
>> - if (!vgplane_st->fence)
>> + if (!vgplane_st->fence) {
>> + if (obj->import_attach)
>> + virtio_gpu_cleanup_imported_obj(obj);
> I think checking for fence allocation failure before import would be much better.
> In other words, cleaning up the fence in case of any import errors would be
> much simpler IMO.
>
> Regardless,
> Acked-by: Vivek Kasireddy <vivek.kasireddy@xxxxxxxxx>
Another question, why do we need this fencing for imported dmabuf?
Fencing isn't done host/guest blobs in this code, while dmabuf is
essentially a guest blob. Could you please clarify why this fence is
needed? Maybe we shouldn't allocate fence in the first place for the dmabuf.
--
Best regards,
Dmitry