From: Thierry Reding treding@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@gmail.com Tested-by: Robert Nelson robertcnelson@gmail.com Signed-off-by: Thierry Reding treding@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);
On 26 August 2015 at 09:16, Thierry Reding thierry.reding@gmail.com wrote:
From: Thierry Reding treding@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.
Sorry about this guys. I should have gone to specsavers ...
Fixes: c86dabfc9f04 ("omap: zero is a valid fd number, treat it as such") Reported-by: Robert Nelson robertcnelson@gmail.com Tested-by: Robert Nelson robertcnelson@gmail.com Signed-off-by: Thierry Reding treding@nvidia.com
Reviewed-by: Emil Velikov emil.l.velikov@gmail.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?
I would have done it in a second if it wasn't for the lack of feedback wrt the drmGetDevices API. I've been nudging people to take a look, perhaps you can do so too :-)
Alternatively I'll cut a new release in a couple of days.
Cheers, Emil
dri-devel@lists.freedesktop.org