From d72e850956036b6476fae0d50f539b7fd2946726 Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Thu, 9 Jul 2026 03:41:04 -0400 Subject: [PATCH] import Oracle_OSS gnome-shell-3.32.2-60.el8_10 --- ...Reset-the-greeter-proxy-on-connectio.patch | 270 ++++++++++++++++++ SPECS/gnome-shell.spec | 171 +++++------ 2 files changed, 358 insertions(+), 83 deletions(-) create mode 100644 SOURCES/0001-gdm-loginDialog-Reset-the-greeter-proxy-on-connectio.patch diff --git a/SOURCES/0001-gdm-loginDialog-Reset-the-greeter-proxy-on-connectio.patch b/SOURCES/0001-gdm-loginDialog-Reset-the-greeter-proxy-on-connectio.patch new file mode 100644 index 0000000..7d40978 --- /dev/null +++ b/SOURCES/0001-gdm-loginDialog-Reset-the-greeter-proxy-on-connectio.patch @@ -0,0 +1,270 @@ +From 1b3edde30bac1bb4944b56e59cbc7f1412a90a3d Mon Sep 17 00:00:00 2001 +From: Joan Torres Lopez +Date: Wed, 17 Jun 2026 09:54:57 +0200 +Subject: [PATCH 1/5] loginDialog: Don't reconnect on each reset with gdmClient + +When resetting the greeter proxy, it's destroyed and then recreated +again. + +This destroy/recreate thing doesn't give any info to GDM and the greeter +interface destroyed has the same state as the newly created one. + +Each time get_greeter_sync is called when greeter is destroyed makes GDM +create a new connection which stores in a list. This means that for each +reset a new unnecessary connection is created and stored. + +GDM was leaking some objects which combined with this excessive connection +creation was causing a fd leak on each reset. + +To make better use of resources and avoid problems, use ensure instead +of reset greeter proxy. + +Part-of: +--- + js/gdm/loginDialog.js | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index eb6846d..c5e8853 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -815,11 +815,11 @@ var LoginDialog = GObject.registerClass({ + this._showPrompt(); + } + +- _resetGreeterProxy() { ++ _ensureGreeterProxy() { + if (GLib.getenv('GDM_GREETER_TEST') != '1') { +- if (this._greeter) { +- this._greeter.run_dispose(); +- } ++ if (this._greeter) ++ return; ++ + this._greeter = this._gdmClient.get_greeter_sync(null); + + this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed', +@@ -832,7 +832,7 @@ var LoginDialog = GObject.registerClass({ + } + + _onReset(authPrompt, beginRequest) { +- this._resetGreeterProxy(); ++ this._ensureGreeterProxy(); + this._sessionMenuButton.updateSensitivity(true); + + this._user = null; +-- +2.54.0 + + +From fb0f4366393fef39e13a2b233c57900db6661198 Mon Sep 17 00:00:00 2001 +From: Joan Torres Lopez +Date: Wed, 17 Jun 2026 09:56:25 +0200 +Subject: [PATCH 2/5] gdm/loginDialog: Reset the greeter proxy on connection + closed + +If gdm fails to start the display session the greeter proxy we are using +gets disconnected, however since commit 56ea95f2 we are now preserving +the greeter instance, and this will eventually lead to using an instance +of a disconnected proxy. + +This eventually implies that after a login failure, we would never get +the `::session-opened` signal that actually triggers the session start. + +And thus, even the user has properly authenticated, gdm will stick to +the authentication page. + +So, instead of reverting such commit (that isn't wrong per se), consume +the greeter proxy connection `::closed` signal and use it to +re-initialize the greeter instance. + +Part-of: +--- + js/gdm/loginDialog.js | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index c5e8853..613b97e 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -822,6 +822,14 @@ var LoginDialog = GObject.registerClass({ + + this._greeter = this._gdmClient.get_greeter_sync(null); + ++ this._greeterConnectionClosedId = ++ this._greeter.get_connection().connect('closed', conn => { ++ conn.disconnect(this._greeterConnectionClosedId); ++ this._greeterConnectionClosedId = 0; ++ this._greeter = null; ++ this._ensureGreeterProxy(); ++ }); ++ + this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed', + this._onDefaultSessionChanged.bind(this)); + this._sessionOpenedId = this._greeter.connect('session-opened', +@@ -1191,6 +1199,10 @@ var LoginDialog = GObject.registerClass({ + this._settings = null; + } + if (this._greeter) { ++ if (this._greeterConnectionClosedId) { ++ this._greeter.get_connection().disconnect(this._greeterConnectionClosedId); ++ this._greeterConnectionClosedId = 0; ++ } + this._greeter.disconnect(this._defaultSessionChangedId); + this._greeter.disconnect(this._sessionOpenedId); + this._greeter.disconnect(this._timedLoginRequestedId); +-- +2.54.0 + + +From be05549008e57ac8f73211abf43e183eeb661292 Mon Sep 17 00:00:00 2001 +From: Joan Torres Lopez +Date: Wed, 17 Jun 2026 10:03:00 +0200 +Subject: [PATCH 3/5] gdm/util: Clear the request if user verifier connection + is closed + +Similarly to previous commit, in case the user verifier connection is +closed we should just clear the user verifier instance, since starting +from this point is going to be just invalid. + +Part-of: +--- + js/gdm/util.js | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 9e24913..5a5df21 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -190,6 +190,10 @@ var ShellUserVerifier = class { + + _clearUserVerifier() { + if (this._userVerifier) { ++ if (this._userVerifierConnectionClosedId) { ++ this._userVerifier.get_connection().disconnect(this._userVerifierConnectionClosedId); ++ this._userVerifierConnectionClosedId = 0; ++ } + this._userVerifier.run_dispose(); + this._userVerifier = null; + if (this._userVerifierChoiceList) { +@@ -370,6 +374,9 @@ var ShellUserVerifier = class { + return; + } + ++ this._userVerifierConnectionClosedId = ++ this._userVerifier.get_connection().connect('closed', () => this.clear()); ++ + if (client.get_user_verifier_choice_list) + this._userVerifierChoiceList = client.get_user_verifier_choice_list(); + else +@@ -392,6 +399,9 @@ var ShellUserVerifier = class { + return; + } + ++ this._userVerifierConnectionClosedId = ++ this._userVerifier.get_connection().connect('closed', () => this.clear()); ++ + if (client.get_user_verifier_choice_list) + this._userVerifierChoiceList = client.get_user_verifier_choice_list(); + else +-- +2.54.0 + + +From 87cef60e36c5ca402364f5cc99fb6ce834cf4827 Mon Sep 17 00:00:00 2001 +From: Joan Torres Lopez +Date: Wed, 17 Jun 2026 10:06:32 +0200 +Subject: [PATCH 4/5] gdm/util: Do not run dispose on user verifier + +This is not a good habit anywhere and especially in JS code, I assume +the rationale for this was to ensure that cached instances of the proxy +were cleared, but this did not work properly (as it happened on +finalize), and it would still require [1]. + +So let's just avoid this and assume that the getters just return what we +expect. + +[1] https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/321 + +Part-of: +--- + js/gdm/util.js | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 5a5df21..58b5946 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -194,12 +194,8 @@ var ShellUserVerifier = class { + this._userVerifier.get_connection().disconnect(this._userVerifierConnectionClosedId); + this._userVerifierConnectionClosedId = 0; + } +- this._userVerifier.run_dispose(); + this._userVerifier = null; +- if (this._userVerifierChoiceList) { +- this._userVerifierChoiceList.run_dispose(); +- this._userVerifierChoiceList = null; +- } ++ this._userVerifierChoiceList = null; + } + } + +-- +2.54.0 + +From 6b1fe48ea3b4dedae9344941e97f48a9a046c0a7 Mon Sep 17 00:00:00 2001 +From: Joan Torres Lopez +Date: Wed, 17 Jun 2026 17:32:52 +0200 +Subject: [PATCH 5/5] gdm: Clear user verifier before starting new async operations + in begin() + +Move _clearUserVerifier() from the finish callbacks +(_reauthenticationChannelOpened, _userVerifierGot) to the start of +begin(). + +When a reauthentication retry happens, begin() creates a new +cancellable and starts an async open_reauthentication_channel call. +If the previous user verifier's connection 'closed' handler is still +active, it can fire during the async operation and call this.clear(), +which cancels the new cancellable. This causes the retry to fail with +G_IO_ERROR_CANCELLED. + +By clearing the user verifier at the start of begin(), the old +connection's 'closed' handler is disconnected before the new +cancellable is created, eliminating the window where closing the old +connection can cancel the new operation. +--- + js/gdm/util.js | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 58b5946..c86e638 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -161,6 +161,7 @@ var ShellUserVerifier = class { + } + + begin(userName, hold) { ++ this._clearUserVerifier(); + this._cancellable = new Gio.Cancellable(); + this._hold = hold; + this._userName = userName; +@@ -351,7 +352,6 @@ var ShellUserVerifier = class { + + _reauthenticationChannelOpened(client, result) { + try { +- this._clearUserVerifier(); + this._userVerifier = client.open_reauthentication_channel_finish(result); + } catch(e) { + if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) +@@ -386,7 +386,6 @@ var ShellUserVerifier = class { + + _userVerifierGot(client, result) { + try { +- this._clearUserVerifier(); + this._userVerifier = client.get_user_verifier_finish(result); + } catch(e) { + if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) +-- +2.54.0 + diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec index 441b536..42b37a2 100644 --- a/SPECS/gnome-shell.spec +++ b/SPECS/gnome-shell.spec @@ -6,7 +6,7 @@ Name: gnome-shell Version: 3.32.2 -Release: 59%{?dist} +Release: 60%{?dist} Summary: Window management and application launching for GNOME Group: User Interface/Desktops @@ -17,108 +17,109 @@ URL: https://wiki.gnome.org/Projects/GnomeShell Source0: http://download.gnome.org/sources/gnome-shell/3.32/%{name}-%{version}.tar.xz # Replace Epiphany with Firefox in the default favourite apps list -Patch1: gnome-shell-favourite-apps-firefox.patch -Patch2: gnome-shell-favourite-apps-yelp.patch -Patch3: gnome-shell-favourite-apps-terminal.patch +Patch1001: gnome-shell-favourite-apps-firefox.patch +Patch1002: gnome-shell-favourite-apps-yelp.patch +Patch1003: gnome-shell-favourite-apps-terminal.patch # GDM/Lock stuff -Patch12: 0001-screenShield-unblank-when-inserting-smartcard.patch -Patch13: enforce-smartcard-at-unlock.patch -Patch14: disable-unlock-entry-until-question.patch -Patch15: allow-timed-login-with-no-user-list.patch -Patch16: 0001-data-install-process-working.svg-to-filesystem.patch -Patch17: 0001-loginDialog-make-info-messages-themed.patch -Patch18: 0001-gdm-add-AuthList-control.patch -Patch19: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch -Patch20: wake-up-on-deactivate.patch -Patch21: caps-lock-warning.patch -Patch22: gdm-networking.patch -Patch23: 0001-shellEntry-Disconnect-handler-on-destroy.patch -Patch24: fix-login-lock-screen.patch -Patch25: 0001-shellEntry-Determine-if-password-entry-from-content-.patch -Patch26: 0002-shellEntry-Give-password-menu-item-text-when-it-s-cr.patch -Patch27: 0003-shellEntry-Handle-password-item-from-dedication-func.patch -Patch28: 0004-shellEntry-Support-lockdown-of-Show-Text-menu-in-pas.patch -Patch29: 0005-shellEntry-Only-mask-text-in-password-entries.patch +Patch2001: 0001-screenShield-unblank-when-inserting-smartcard.patch +Patch2002: enforce-smartcard-at-unlock.patch +Patch2003: disable-unlock-entry-until-question.patch +Patch2004: allow-timed-login-with-no-user-list.patch +Patch2005: 0001-data-install-process-working.svg-to-filesystem.patch +Patch2006: 0001-loginDialog-make-info-messages-themed.patch +Patch2007: 0001-gdm-add-AuthList-control.patch +Patch2008: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch +Patch2009: wake-up-on-deactivate.patch +Patch2010: caps-lock-warning.patch +Patch2011: gdm-networking.patch +Patch2012: 0001-shellEntry-Disconnect-handler-on-destroy.patch +Patch2013: fix-login-lock-screen.patch +Patch2014: 0001-shellEntry-Determine-if-password-entry-from-content-.patch +Patch2015: 0002-shellEntry-Give-password-menu-item-text-when-it-s-cr.patch +Patch2016: 0003-shellEntry-Handle-password-item-from-dedication-func.patch +Patch2017: 0004-shellEntry-Support-lockdown-of-Show-Text-menu-in-pas.patch +Patch2018: 0005-shellEntry-Only-mask-text-in-password-entries.patch +Patch2019: 0001-gdm-loginDialog-Reset-the-greeter-proxy-on-connectio.patch # Misc. -Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch -Patch31: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch -Patch32: extension-updates.patch -Patch33: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch -Patch34: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch -Patch35: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch -Patch36: 0001-shell-app-Handle-workspace-from-startup-notification.patch -Patch37: 0001-main-Dump-stack-on-segfaults-by-default.patch -Patch38: 0001-appDisplay-Show-full-app-name-on-hover.patch -Patch39: horizontal-workspace-support.patch -Patch40: 0001-animation-fix-unintentional-loop-while-polkit-dialog.patch -Patch41: 0001-workspacesView-Work-around-spurious-allocation-chang.patch -Patch42: 0001-layout-Make-the-hot-corner-optional.patch -Patch43: fix-app-view-leaks.patch -Patch44: root-warning.patch -Patch45: 0001-workspace-Pass-device-to-startDrag.patch -Patch46: 0001-a11y-Change-HC-icon-theme-first.patch -Patch47: perf-tool-wayland.patch -Patch48: 0001-padOsd-Re-query-action-labels-after-mode-switches.patch -Patch49: 0001-Do-not-change-Wacom-LEDs-through-g-s-d.patch -Patch50: 0001-st-texture-cache-Cancel-pending-requests-on-icon-the.patch -Patch51: introspect-backports.patch -Patch52: 0001-popupMenu-Handle-keypress-if-numlock-is-enabled.patch -Patch53: 0001-theme-Update-window-preview-style.patch -Patch54: warn-less.patch -Patch55: 0001-networkAgent-add-support-for-SAE-secrets.patch -Patch56: 0001-main-Unset-the-right-prevFocus-actor-after-the-focus.patch -Patch57: defend-against-corrupt-notifications.patch -Patch58: 0001-status-volume-Hide-sliders-initially.patch -Patch59: 0001-shell-recorder-Restore-cursor-recording.patch -Patch60: 0001-st-bin-Disallow-st_bin_set_child-with-already-parent.patch -Patch61: 0001-layout-Initialize-regions-unconditionally.patch -Patch62: fix-nm-device-settings.patch -Patch63: owe-support.patch -Patch64: 0001-windowMenu-Ignore-release.patch -Patch65: 0001-overview-Hide-the-overview-on-session-mode-hasOvervi.patch -Patch66: 0001-st-theme-Reuse-stylesheets-if-possible.patch -Patch67: fix-dropping-menu-grab.patch +Patch3001: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch +Patch3002: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch +Patch3003: extension-updates.patch +Patch3004: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch +Patch3005: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch +Patch3006: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch +Patch3007: 0001-shell-app-Handle-workspace-from-startup-notification.patch +Patch3008: 0001-main-Dump-stack-on-segfaults-by-default.patch +Patch3009: 0001-appDisplay-Show-full-app-name-on-hover.patch +Patch3010: horizontal-workspace-support.patch +Patch3011: 0001-animation-fix-unintentional-loop-while-polkit-dialog.patch +Patch3012: 0001-workspacesView-Work-around-spurious-allocation-chang.patch +Patch3013: 0001-layout-Make-the-hot-corner-optional.patch +Patch3014: fix-app-view-leaks.patch +Patch3015: root-warning.patch +Patch3016: 0001-workspace-Pass-device-to-startDrag.patch +Patch3017: 0001-a11y-Change-HC-icon-theme-first.patch +Patch3018: perf-tool-wayland.patch +Patch3019: 0001-padOsd-Re-query-action-labels-after-mode-switches.patch +Patch3020: 0001-Do-not-change-Wacom-LEDs-through-g-s-d.patch +Patch3021: 0001-st-texture-cache-Cancel-pending-requests-on-icon-the.patch +Patch3022: introspect-backports.patch +Patch3023: 0001-popupMenu-Handle-keypress-if-numlock-is-enabled.patch +Patch3024: 0001-theme-Update-window-preview-style.patch +Patch3025: warn-less.patch +Patch3026: 0001-networkAgent-add-support-for-SAE-secrets.patch +Patch3027: 0001-main-Unset-the-right-prevFocus-actor-after-the-focus.patch +Patch3028: defend-against-corrupt-notifications.patch +Patch3029: 0001-status-volume-Hide-sliders-initially.patch +Patch3030: 0001-shell-recorder-Restore-cursor-recording.patch +Patch3031: 0001-st-bin-Disallow-st_bin_set_child-with-already-parent.patch +Patch3032: 0001-layout-Initialize-regions-unconditionally.patch +Patch3033: fix-nm-device-settings.patch +Patch3034: owe-support.patch +Patch3035: 0001-windowMenu-Ignore-release.patch +Patch3036: 0001-overview-Hide-the-overview-on-session-mode-hasOvervi.patch +Patch3037: 0001-st-theme-Reuse-stylesheets-if-possible.patch +Patch3038: fix-dropping-menu-grab.patch # Backport JS invalid access warnings (#1651894, #1663171, #1642482, #1637622) -Patch70: fix-invalid-access-warnings.patch -Patch71: more-spurious-allocation-warnings.patch -Patch72: fix-some-js-warnings.patch -Patch73: fix-double-disposed-backgrounds.patch +Patch4001: fix-invalid-access-warnings.patch +Patch4002: more-spurious-allocation-warnings.patch +Patch4003: fix-some-js-warnings.patch +Patch4004: fix-double-disposed-backgrounds.patch # Backport performance fixes under load (#1820760) -Patch80: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch -Patch81: 0002-environment-Fix-date-conversion.patch -Patch82: 0003-shell-app-system-Monitor-for-icon-theme-changes.patch -Patch83: 0004-global-force-fsync-to-worker-thread-when-saving-stat.patch -Patch84: 0005-app-cache-add-ShellAppCache-for-GAppInfo-caching.patch -Patch85: 0006-js-Always-use-AppSystem-to-lookup-apps.patch +Patch5001: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch +Patch5002: 0002-environment-Fix-date-conversion.patch +Patch5003: 0003-shell-app-system-Monitor-for-icon-theme-changes.patch +Patch5004: 0004-global-force-fsync-to-worker-thread-when-saving-stat.patch +Patch5005: 0005-app-cache-add-ShellAppCache-for-GAppInfo-caching.patch +Patch5006: 0006-js-Always-use-AppSystem-to-lookup-apps.patch # Stop screen recording on monitor changes (#1705392) -Patch90: 0001-screencast-Stop-recording-when-screen-size-or-resour.patch +Patch6001: 0001-screencast-Stop-recording-when-screen-size-or-resour.patch # Backport OSK fixes (#1871041) -Patch95: osk-fixes.patch -Patch96: 0001-keyboard-Only-enable-keyboard-if-ClutterDeviceManage.patch +Patch7001: osk-fixes.patch +Patch7002: 0001-keyboard-Only-enable-keyboard-if-ClutterDeviceManage.patch # suspend/resume fix on nvidia (#1663440) -Patch10001: 0001-background-refresh-after-suspend-on-wayland.patch -Patch10002: 0002-background-rebuild-background-not-just-animation-on-.patch -Patch10003: 0003-st-texture-cache-purge-on-resume.patch -Patch10004: 0004-background-refresh-background-on-gl-video-memory-pur.patch +Patch8001: 0001-background-refresh-after-suspend-on-wayland.patch +Patch8002: 0002-background-rebuild-background-not-just-animation-on-.patch +Patch8003: 0003-st-texture-cache-purge-on-resume.patch +Patch8004: 0004-background-refresh-background-on-gl-video-memory-pur.patch # Allow login screen extensions (#1651378) -Patch20001: 0001-extensionSystem-Handle-added-or-removed-sessionMode-.patch -Patch20002: 0002-extensionSystem-Get-rid-of-_enabled-boolean-optimiza.patch -Patch20003: 0003-extensionSystem-Allow-extensions-to-run-on-the-login.patch -Patch20004: 0004-sessionMode-Allow-extensions-at-the-login-and-unlock.patch +Patch9001: 0001-extensionSystem-Handle-added-or-removed-sessionMode-.patch +Patch9002: 0002-extensionSystem-Get-rid-of-_enabled-boolean-optimiza.patch +Patch9003: 0003-extensionSystem-Allow-extensions-to-run-on-the-login.patch +Patch9004: 0004-sessionMode-Allow-extensions-at-the-login-and-unlock.patch # CVE-2020-17489 -Patch30001: 0001-loginDialog-Reset-auth-prompt-on-vt-switch-before-fa.patch +Patch10001: 0001-loginDialog-Reset-auth-prompt-on-vt-switch-before-fa.patch # Disable captive portal helper if WebKitGTK is not installed (RHEL-10488) -Patch40001: portal-notify.patch +Patch11001: portal-notify.patch %define libcroco_version 0.6.8 %define eds_version 3.17.2 @@ -306,6 +307,10 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %endif %changelog +* Wed Jun 17 2026 Joan Torres Lopez - 3.32.2-60 +- Backport fix to recover userVerifier + Resolves: RHEL-185731 + * Wed May 13 2026 Florian Müllner - 3.32.2-59 - Fix dropping menu grab on destroy Resolves: RHEL-171948