freedreno: fix potential fd leak in error path

Signed-off-by: Rob Clark <robclark@freedesktop.org>
diff --git a/freedreno/freedreno_device.c b/freedreno/freedreno_device.c
index 027414e..3da5c7c 100644
--- a/freedreno/freedreno_device.c
+++ b/freedreno/freedreno_device.c
@@ -95,9 +95,12 @@
  */
 struct fd_device * fd_device_new_dup(int fd)
 {
-	struct fd_device *dev = fd_device_new(dup(fd));
+	int dup_fd = dup(fd);
+	struct fd_device *dev = fd_device_new(dup_fd);
 	if (dev)
 		dev->closefd = 1;
+	else
+		close(dup_fd);
 	return dev;
 }