diff options
author | Dave Airlie <airlied@redhat.com> | 2016-12-09 05:29:10 +0300 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-12-09 05:29:10 +0300 |
commit | acc5ddd972793d6ec7e51a9543f24b7e932134dc (patch) | |
tree | 2d972ba062846279b04126191a4d0e4985441721 /drivers/gpu/drm/drm_prime.c | |
parent | bfd5be0f9e0cdcaafaeaa1d59fbcfb5bacb1105a (diff) | |
parent | 72a93e8dd52c9feea42f1258d555e6070680a347 (diff) | |
download | linux-acc5ddd972793d6ec7e51a9543f24b7e932134dc.tar.xz |
Merge tag 'drm-misc-next-2016-12-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next
Another pile of misc stuff, final one for 4.10. If there's some serious
bugfix still I'll send you a pull for drm-misc-next-fixes (like we do with
intel), otherwise this is it and next pull next year for 4.11.
Most interesting bits are probably Chris' fb helper fixes against mst
hotplug oopses.
* tag 'drm-misc-next-2016-12-08' of git://anongit.freedesktop.org/git/drm-misc: (22 commits)
drm: Take ownership of the dmabuf->obj when exporting
drm: Allow CAP_PRIME on !MODESET
drm/fence: add drm_crtc_create_fence()
drm/bridge: analogix: Don't return -EINVAL when panel doesn't support PSR
drm/atomic: doc: remove old comment about nonblocking commits
drm: Don't block the kworker waiting for mode_config.mutex in output_poll()
drm: Return -ENOTSUPP when called for KMS cap with a non-KMS driver
drm/amdgpu: don't add files at control minor debugfs directory
drm: allow changing DPMS mode
drm/qxl: fix use of uninitialized variable
drm/qxl: Don't register debugfs for control minors
drm/radeon: don't add files at control minor debugfs directory
drm/vmwgfx: Switch to mode_cmd2
drm/vgem: Use ww_mutex_(un)lock even with a NULL context
drm: Make the connector .detect() callback optional
drm/bridge: tc358767: don't warn if display side ASSR enable fails
drm: Initialise drm_mm.head_node.allocated
drm: Fix locking cargo-cult in encoder/plane init/cleanup
drm/doc: Fix indenting in drm_modeset_lock.c comment
drm: Protect fb_helper list manipulation with a mutex
...
Diffstat (limited to 'drivers/gpu/drm/drm_prime.c')
-rw-r--r-- | drivers/gpu/drm/drm_prime.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index b22a94dd7b53..8d77b2462594 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -290,7 +290,8 @@ static void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach, * * This wraps dma_buf_export() for use by generic GEM drivers that are using * drm_gem_dmabuf_release(). In addition to calling dma_buf_export(), we take - * a reference to the drm_device which is released by drm_gem_dmabuf_release(). + * a reference to the &drm_device and the exported &drm_gem_object (stored in + * exp_info->priv) which is released by drm_gem_dmabuf_release(). * * Returns the new dmabuf. */ @@ -300,8 +301,11 @@ struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev, struct dma_buf *dma_buf; dma_buf = dma_buf_export(exp_info); - if (!IS_ERR(dma_buf)) - drm_dev_ref(dev); + if (IS_ERR(dma_buf)) + return dma_buf; + + drm_dev_ref(dev); + drm_gem_object_reference(exp_info->priv); return dma_buf; } @@ -472,8 +476,6 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev, */ obj->dma_buf = dmabuf; get_dma_buf(obj->dma_buf); - /* Grab a new ref since the callers is now used by the dma-buf */ - drm_gem_object_reference(obj); return dmabuf; } |