Backport an upstream patch to fix an FD leak (rhbz#2109145)
This commit is contained in:
parent
17a834805e
commit
aba250710a
@ -0,0 +1,40 @@
|
|||||||
|
From b62745fe8e1699473f87caff328ac2c6ce394c55 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hergert <chergert@redhat.com>
|
||||||
|
Date: Tue, 2 Aug 2022 12:35:40 -0700
|
||||||
|
Subject: [PATCH] gmain: close pidfd when finalizing GChildWatchSource
|
||||||
|
|
||||||
|
A file-descriptor was created with the introduction of pidfd_getfd() but
|
||||||
|
nothing is closing it when the source finalizes. The GChildWatchSource is
|
||||||
|
the creator and consumer of this FD and therefore responsible for closing
|
||||||
|
it on finalization.
|
||||||
|
|
||||||
|
The pidfd leak was introduced in !2408.
|
||||||
|
|
||||||
|
This fixes issues with Builder where anon_inode:[pidfd] exhaust the
|
||||||
|
available FD limit for the process.
|
||||||
|
|
||||||
|
Fixes #2708
|
||||||
|
---
|
||||||
|
glib/gmain.c | 6 +++++-
|
||||||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/glib/gmain.c b/glib/gmain.c
|
||||||
|
index a6f9b168e..dba5f40e4 100644
|
||||||
|
--- a/glib/gmain.c
|
||||||
|
+++ b/glib/gmain.c
|
||||||
|
@@ -5804,7 +5804,11 @@ g_child_watch_finalize (GSource *source)
|
||||||
|
GChildWatchSource *child_watch_source = (GChildWatchSource *) source;
|
||||||
|
|
||||||
|
if (child_watch_source->using_pidfd)
|
||||||
|
- return;
|
||||||
|
+ {
|
||||||
|
+ if (child_watch_source->poll.fd >= 0)
|
||||||
|
+ close (child_watch_source->poll.fd);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
G_LOCK (unix_signal_lock);
|
||||||
|
unix_child_watches = g_slist_remove (unix_child_watches, source);
|
||||||
|
--
|
||||||
|
2.37.1
|
||||||
|
|
@ -23,6 +23,10 @@ Patch2: 2840.patch
|
|||||||
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2838
|
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2838
|
||||||
Patch3: 2838.patch
|
Patch3: 2838.patch
|
||||||
|
|
||||||
|
# Backported from upstream
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=2109145
|
||||||
|
Patch4: 0001-gmain-close-pidfd-when-finalizing-GChildWatchSource.patch
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: gettext
|
BuildRequires: gettext
|
||||||
|
Loading…
Reference in New Issue
Block a user