auxiliary/vl/drm: fd management cleanups

Analogous to previous commit.

Spotted by Coverity (CID 1339868)

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 151290c154)
This commit is contained in:
Emil Velikov 2015-11-23 20:26:58 +00:00
parent ef6769f18f
commit 7a4ba7bfad

View file

@ -41,12 +41,16 @@ struct vl_screen *
vl_drm_screen_create(int fd)
{
struct vl_screen *vscreen;
int new_fd = -1;
vscreen = CALLOC_STRUCT(vl_screen);
if (!vscreen)
return NULL;
if (pipe_loader_drm_probe_fd(&vscreen->dev, dup(fd)))
if (fd < 0 || (new_fd = dup(fd)) < 0)
goto error;
if (pipe_loader_drm_probe_fd(&vscreen->dev, new_fd))
vscreen->pscreen = pipe_loader_create_screen(vscreen->dev);
if (!vscreen->pscreen)
@ -63,6 +67,8 @@ vl_drm_screen_create(int fd)
error:
if (vscreen->dev)
pipe_loader_release(&vscreen->dev, 1);
else
close(new_fd);
FREE(vscreen);
return NULL;