From 3b51a670ecb94c92e2fdfb67b536a5f6b4f03be7 Mon Sep 17 00:00:00 2001 From: Arnav Singh <me@arnavion.dev> Date: Sun, 22 Dec 2024 16:51:40 -0800 Subject: [PATCH] community/modemmanager: fix crash when resuming from suspend Ref: - https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1274 - https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/commit/5eb8203f8eba57aca55f67d63b309522c281e353 --- community/modemmanager/0001-mr-1274.patch | 34 +++++++++++++++++++++++ community/modemmanager/APKBUILD | 4 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 community/modemmanager/0001-mr-1274.patch diff --git a/community/modemmanager/0001-mr-1274.patch b/community/modemmanager/0001-mr-1274.patch new file mode 100644 index 000000000000..7f4fbda24635 --- /dev/null +++ b/community/modemmanager/0001-mr-1274.patch @@ -0,0 +1,34 @@ +From 5eb8203f8eba57aca55f67d63b309522c281e353 Mon Sep 17 00:00:00 2001 +From: Arnav Singh <me@arnavion.dev> +Date: Sun, 22 Dec 2024 16:48:06 -0800 +Subject: [PATCH] suspend: support logind not sending PrepareForSleep(true) + +elogind sends PrepareForSleep(false) when resuming but doesn't necessarily +send PrepareForSleep(true) when sleeping. This means we didn't necessarily +drop our previous inhibitor when it's time to take a new one. So instead of +asserting that we dropped our previous inhibitor, just reuse it. +--- + src/mm-sleep-monitor-systemd.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/mm-sleep-monitor-systemd.c b/src/mm-sleep-monitor-systemd.c +index 99814386..c432a416 100644 +--- a/src/mm-sleep-monitor-systemd.c ++++ b/src/mm-sleep-monitor-systemd.c +@@ -114,7 +114,12 @@ inhibit_done (GObject *source, + static void + take_inhibitor (MMSleepMonitor *self) + { +- g_assert (self->inhibit_fd == -1); ++ if (self->inhibit_fd != -1) { ++ // logind didn't send us a `PrepareForSleep(true)` so we didn't drop our previous inhibitor. ++ // Just reuse it. ++ mm_obj_warn (self, "logind did not send sleep notification! Taking over existing inhibitor."); ++ return; ++ } + + mm_obj_dbg (self, "taking systemd sleep inhibitor"); + g_dbus_proxy_call_with_unix_fd_list (self->sd_proxy, +-- +2.48.1 + diff --git a/community/modemmanager/APKBUILD b/community/modemmanager/APKBUILD index fff5cf75ab60..a4dbd6c389d3 100644 --- a/community/modemmanager/APKBUILD +++ b/community/modemmanager/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Stuart Cardall <developer@it-offshore.co.uk> pkgname=modemmanager pkgver=1.22.0 -pkgrel=1 +pkgrel=2 pkgdesc="ModemManager library" url="https://www.freedesktop.org/wiki/Software/ModemManager" arch="all" @@ -36,6 +36,7 @@ subpackages=" source="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/archive/$pkgver/ModemManager-$pkgver.tar.gz $pkgname.rules $pkgname.initd + 0001-mr-1274.patch " builddir="$srcdir"/ModemManager-$pkgver @@ -87,4 +88,5 @@ sha512sums=" f612ec26fc42943abc546fb246619b03d1a8d4f925edfb78231ffa9ee5f559d701e547fd8152f77d3aee16a78b397464abb948c72764ac2d2846edf07d8c0fcc ModemManager-1.22.0.tar.gz 6fab86c27502b29be0c6610d835a3249a4a81993eb986cff2c3ea9393fadd3f693ba4bb0532ae0e50a83d359559511859dd05f7ea2f0cb52839f535a7e49f8a0 modemmanager.rules 9f74a2473b9cc7be42a467809639f5720ab251d13f29f8bbd4fd9a13edb80c10c5ee50fbe50819bfe67f231805b92f007c3e7403c46ab998dc843e1f9549659b modemmanager.initd +d88c9cbff67a36ff559b9e1a7d6b121a4a816e80044874bfcc460667ea792dd9fcc4148115a146d0cdd82f7c5fbaf8341f2e580031349a968e8b6f537bd13dc6 0001-mr-1274.patch " -- GitLab