renderonly: close the gpu fd when destroying renderonly
authorLucas Stach <l.stach@pengutronix.de>
Wed, 26 Aug 2020 13:32:08 +0000 (15:32 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 11 Mar 2021 14:41:48 +0000 (14:41 +0000)
Currently the screen destruction closes the dup'ed fd, but not the
original renderonly gpu fd, which is kept around for the lifetime of
the renderonly.

Squashed revert of "vc4: Don't leak the GPU fd for renderonly usage."
(commit 99ef66c325a99b3e191987d8327e7e4cd4aafcd7) as requested by Eric.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Guido Günther <agx@sigxcpu.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6983>

src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c
src/gallium/winsys/vc4/drm/vc4_drm_winsys.c

index 9000a6a..790ed7d 100644 (file)
@@ -40,6 +40,9 @@
 
 static void kmsro_ro_destroy(struct renderonly *ro)
 {
+   if (ro->gpu_fd >= 0)
+      close(ro->gpu_fd);
+
    FREE(ro);
 }
 
index a507821..ae40992 100644 (file)
@@ -61,5 +61,5 @@ struct pipe_screen *
 vc4_drm_screen_create_renderonly(struct renderonly *ro,
                                  const struct pipe_screen_config *config)
 {
-   return vc4_screen_create(ro->gpu_fd, ro);
+   return vc4_screen_create(fcntl(ro->gpu_fd, F_DUPFD_CLOEXEC, 3), ro);
 }