aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Medhurst <tixy@linaro.org>2015-09-29 14:21:12 +0100
committerJon Medhurst <tixy@linaro.org>2015-09-29 14:21:12 +0100
commitd29c22320273783c76cd000a470494d96f8d15a6 (patch)
tree0cec7c3d3ecc0e5aaf44283be46e73b0edc86a6e
parentbdc99794d6b8cc90cda065c934f18d6e5dd50553 (diff)
parent6d4213308c4506fc6535c5710816b175a9855fc5 (diff)
Merge branch 'lsk-3.18-armlt-hdlcd' into integration-lsk-3.18-armlt-androidlsk-3.18-armlt-20150929
-rw-r--r--drivers/gpu/drm/arm/hdlcd_fb_helper.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/hdlcd_fb_helper.c b/drivers/gpu/drm/arm/hdlcd_fb_helper.c
index 64bb127d8b33..8958d88e6b90 100644
--- a/drivers/gpu/drm/arm/hdlcd_fb_helper.c
+++ b/drivers/gpu/drm/arm/hdlcd_fb_helper.c
@@ -590,6 +590,12 @@ static int hdlcd_get_dmabuf_ioctl(struct fb_info *info, unsigned int cmd,
if (copy_from_user(&ebuf, argp, sizeof(ebuf)))
return -EFAULT;
+ /*
+ * We need a reference on the gem object. This will be released by
+ * drm_gem_dmabuf_release when the file descriptor is closed.
+ */
+ drm_gem_object_reference(&obj->base);
+
dma_buf = drm_gem_prime_export(helper->dev, &obj->base, ebuf.flags | O_RDWR);
if (!dma_buf) {
dev_info(info->dev, "Failed to export DMA buffer\n");
@@ -611,6 +617,7 @@ static int hdlcd_get_dmabuf_ioctl(struct fb_info *info, unsigned int cmd,
err_export_fd:
dma_buf_put(dma_buf);
err_export:
+ drm_gem_object_unreference(&obj->base);
return -EFAULT;
}