drm/udl: take reference to device struct for dma-bufs
Subsystems (3)
Dave Airlie
maintainerPATCH 1/1 drm/udl: take reference to device struct for dma-bufs
From: Dave Airlie <[email protected]>
this stops the device from being deleted before all the dma-bufs on it are freed, this fixes an oops when you unplug a udl device while it has imported a buffer from another device.
Signed-off-by Dave Airlie <[email protected]>
--- drivers/gpu/drm/udl/udl_gem.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
drivers/gpu/drm/udl/udl_gem.c +8 -3
@@ -177,8 +177,10 @@ void udl_gem_free_object(struct drm_gem_object *gem_obj)if (obj->vmapping)udl_gem_vunmap (obj); -if (gem_obj->import_attach) +if (gem_obj->import_attach) {drm_prime_gem_destroy (gem_obj, obj->sg); +put_device (gem_obj->dev->dev); + }if (obj->pages)udl_gem_put_pages (obj);
@@ -256,9 +258,12 @@ struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev,int ret;/* need to attach */ +get_device (dev->dev); attach =dma_buf_attach (dma_buf, dev->dev); -if (IS_ERR (attach)) +if (IS_ERR (attach)) { +put_device (dev->dev);return ERR_CAST (attach); + }get_dma_buf (dma_buf);
@@ -282,6 +287,6 @@ fail_unmap: fail_detach:dma_buf_detach (dma_buf, attach);dma_buf_put (dma_buf); - +put_device (dev->dev);return ERR_PTR (ret); }
Signature · 1 line
1.8.5.3