[PATCH v2 1/2] drm/prime: reject DMA-BUF attach when get_sg_table is missing

Thomas Zimmermann tzimmermann at suse.de
Thu Mar 2 15:05:31 UTC 2023


Hi

Am 02.03.23 um 16:03 schrieb Thomas Zimmermann:
> Hi
> 
> Am 02.03.23 um 15:35 schrieb Simon Ser:
>> drm_gem_map_dma_buf() requires drm_gem_object_funcs.get_sg_table
>> to be implemented, or else WARNs.
>>
>> Allow drivers to leave this hook unimplemented to implement purely
>> local DMA-BUFs (ie, DMA-BUFs which cannot be imported anywhere
>> else but the device which allocated them). In that case, reject
>> imports to other devices in drm_gem_map_attach().
>>
>> v2: new patch
>>
>> Signed-off-by: Simon Ser <contact at emersion.fr>
>> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>> Cc: Thomas Zimmermann <tzimmermann at suse.de>
>> Cc: Tian Tao <tiantao6 at hisilicon.com>
>> Cc: Maxime Ripard <maxime at cerno.tech>
>> Cc: Christian König <christian.koenig at amd.com>
>> Cc: Hans de Goede <hdegoede at redhat.com>
>> ---
>>   drivers/gpu/drm/drm_prime.c | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
>> index f924b8b4ab6b..ab1d21d63a03 100644
>> --- a/drivers/gpu/drm/drm_prime.c
>> +++ b/drivers/gpu/drm/drm_prime.c
>> @@ -544,7 +544,8 @@ int drm_prime_handle_to_fd_ioctl(struct drm_device 
>> *dev, void *data,
>>    * Optional pinning of buffers is handled at dma-buf attach and 
>> detach time in
>>    * drm_gem_map_attach() and drm_gem_map_detach(). Backing storage 
>> itself is
>>    * handled by drm_gem_map_dma_buf() and drm_gem_unmap_dma_buf(), 
>> which relies on
>> - * &drm_gem_object_funcs.get_sg_table.
>> + * &drm_gem_object_funcs.get_sg_table. If 
>> &drm_gem_object_funcs.get_sg_table is
>> + * unimplemented, exports into another device are rejected.
>>    *
>>    * For kernel-internal access there's drm_gem_dmabuf_vmap() and
>>    * drm_gem_dmabuf_vunmap(). Userspace mmap support is provided by
>> @@ -583,6 +584,9 @@ int drm_gem_map_attach(struct dma_buf *dma_buf,
>>   {
>>       struct drm_gem_object *obj = dma_buf->priv;
>> +    if (!obj->funcs->get_sg_table)
>> +        return -EOPNOTSUPP;
> 
> -ENOSYS please.

With this changed:

Acked-by: Thomas Zimmermann <tzimmermann at suse.de>

> 
> Best regards
> Thomas
> 
>> +
>>       return drm_gem_pin(obj);
>>   }
>>   EXPORT_SYMBOL(drm_gem_map_attach);
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230302/ef5e07d6/attachment-0001.sig>


More information about the dri-devel mailing list