[PATCH libdrm] omap: Initialize DMA BUF file descriptor to -1

Thierry Reding thierry.reding at gmail.com
Wed Aug 26 01:16:17 PDT 2015

From: Thierry Reding <treding at nvidia.com>

Commit c86dabfc9f04 ("omap: zero is a valid fd number, treat it as
such") corrected checks for valid file descriptors, but the OMAP buffer
object code initializes the DMA-BUF file descriptor to 0 (as a result of
calloc()'ing the structure). Obviously this isn't going to work because
subsequent code will try to use file descriptor 0 (most likely stdin at
that point) as a DMA-BUF. It may also try and close stdin when a buffer
object is destroyed.

Fix this by initializing the DMA-BUF file descriptor to -1, properly
marking it as an invalid file descriptor.

Fixes: c86dabfc9f04 ("omap: zero is a valid fd number, treat it as such")
Reported-by: Robert Nelson <robertcnelson at gmail.com>
Tested-by: Robert Nelson <robertcnelson at gmail.com>
Signed-off-by: Thierry Reding <treding at nvidia.com>
Emil, I think this may warrant cutting a new release to unbreak OMAP. I
can push the patch myself, but I've never done a libdrm release before,
so maybe you want to do the honors?

 omap/omap_drm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/omap/omap_drm.c b/omap/omap_drm.c
index 4a0248d5e0d8..08ba64eb694d 100644
--- a/omap/omap_drm.c
+++ b/omap/omap_drm.c
@@ -186,6 +186,7 @@ static struct omap_bo * bo_from_handle(struct omap_device *dev,
 	bo->dev = omap_device_ref(dev);
 	bo->handle = handle;
+	bo->fd = -1;
 	atomic_set(&bo->refcnt, 1);
 	/* add ourselves to the handle table: */
 	drmHashInsert(dev->handle_table, handle, bo);

More information about the dri-devel mailing list