import ModemManager-1.18.2-1.el8

This commit is contained in:
CentOS Sources 2022-05-10 03:14:30 -04:00 committed by Stepan Oksanichenko
parent 87a30a5af3
commit 0aa7c1aed6
6 changed files with 39 additions and 333 deletions

View File

@ -1 +1 @@
fe7cd5772f30bd0a7139bd0fb6f584de1f636f39 SOURCES/ModemManager-1.10.8.tar.xz
7b439c22ad93924328d450eb9252766d523a9cf6 SOURCES/ModemManager-1.18.2.tar.xz

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/ModemManager-1.10.8.tar.xz
SOURCES/ModemManager-1.18.2.tar.xz

View File

@ -1,185 +0,0 @@
From fd1a26fc36df005d66627109875631264d2f8e19 Mon Sep 17 00:00:00 2001
From: Aleksander Morgado <aleksander@aleksander.es>
Date: Wed, 22 May 2019 23:20:30 +0200
Subject: [PATCH] plugin: ignore unwanted net ports
* For QMI modems, make sure we only grab QMI data ports (flag the
rest as ignored).
* For MBIM modems, make sure we only grab MBIM data ports (flag the
rest as ignored).
* For other plugins that use NET ports in their logic, make sure we
only grab non-QMI and non-MBIM data ports.
---
src/mm-plugin.c | 120 +++++++++++++++++++++++++++++++++++-------------
1 file changed, 89 insertions(+), 31 deletions(-)
diff --git a/src/mm-plugin.c b/src/mm-plugin.c
index 08fe2cd0..a19111ff 100644
--- a/src/mm-plugin.c
+++ b/src/mm-plugin.c
@@ -37,6 +37,13 @@
#include "mm-log.h"
#include "mm-daemon-enums-types.h"
+#if defined WITH_QMI
+# include "mm-broadband-modem-qmi.h"
+#endif
+#if defined WITH_MBIM
+# include "mm-broadband-modem-mbim.h"
+#endif
+
G_DEFINE_TYPE (MMPlugin, mm_plugin, G_TYPE_OBJECT)
/* Virtual port corresponding to the embedded modem */
@@ -920,9 +927,22 @@ mm_plugin_create_modem (MMPlugin *self,
/* Grab each port */
for (l = port_probes; l; l = g_list_next (l)) {
- GError *inner_error = NULL;
- MMPortProbe *probe = MM_PORT_PROBE (l->data);
- gboolean grabbed;
+ GError *inner_error = NULL;
+ MMPortProbe *probe;
+ gboolean grabbed = FALSE;
+ gboolean force_ignored = FALSE;
+ const gchar *subsys;
+ const gchar *name;
+ const gchar *driver;
+ MMPortType port_type;
+
+ probe = MM_PORT_PROBE (l->data);
+
+ subsys = mm_port_probe_get_port_subsys (probe);
+ name = mm_port_probe_get_port_name (probe);
+ port_type = mm_port_probe_get_port_type (probe);
+
+ driver = mm_kernel_device_get_driver (mm_port_probe_peek_port (probe));
/* If grabbing a port fails, just warn. We'll decide if the modem is
* valid or not when all ports get organized */
@@ -931,45 +951,82 @@ mm_plugin_create_modem (MMPlugin *self,
* probed and accepted by the generic plugin, which is overwritten
* by the specific one when needed. */
if (apply_subsystem_filter (self, mm_port_probe_peek_port (probe))) {
- grabbed = FALSE;
inner_error = g_error_new (MM_CORE_ERROR,
MM_CORE_ERROR_UNSUPPORTED,
"unsupported subsystem: '%s'",
- mm_port_probe_get_port_subsys (probe));
+ subsys);
+ goto next;
}
+
/* Ports that are explicitly blacklisted will be grabbed as ignored */
- else if (mm_port_probe_is_ignored (probe)) {
- mm_dbg ("(%s/%s): port is blacklisted",
- mm_port_probe_get_port_subsys (probe),
- mm_port_probe_get_port_name (probe));
- grabbed = mm_base_modem_grab_port (modem,
- mm_port_probe_peek_port (probe),
- MM_PORT_TYPE_IGNORED,
- MM_PORT_SERIAL_AT_FLAG_NONE,
- &inner_error);
+ if (mm_port_probe_is_ignored (probe)) {
+ mm_dbg ("(%s/%s): port is blacklisted", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
}
-#if !defined WITH_QMI
- else if (mm_port_probe_get_port_type (probe) == MM_PORT_TYPE_NET &&
- !g_strcmp0 (mm_kernel_device_get_driver (mm_port_probe_peek_port (probe)), "qmi_wwan")) {
- /* Try to generically grab the port, but flagged as ignored */
- grabbed = mm_base_modem_grab_port (modem,
- mm_port_probe_peek_port (probe),
- MM_PORT_TYPE_IGNORED,
- MM_PORT_SERIAL_AT_FLAG_NONE,
- &inner_error);
+
+#if defined WITH_QMI
+ if (MM_IS_BROADBAND_MODEM_QMI (modem) &&
+ port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "qmi_wwan") != 0) {
+ /* Non-QMI net ports are ignored in QMI modems */
+ mm_dbg ("(%s/%s): ignoring non-QMI net port in QMI modem", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
+ }
+
+ if (!MM_IS_BROADBAND_MODEM_QMI (modem) &&
+ port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "qmi_wwan") == 0) {
+ /* QMI net ports are ignored in non-QMI modems */
+ mm_dbg ("(%s/%s): ignoring QMI net port in non-QMI modem", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
+ }
+#else
+ if (port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "qmi_wwan") != 0) {
+ /* QMI net ports are ignored if QMI support not built */
+ mm_dbg ("(%s/%s): ignoring QMI net port as QMI support isn't available", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
+ }
+#endif
+
+#if defined WITH_MBIM
+ if (MM_IS_BROADBAND_MODEM_MBIM (modem) &&
+ port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "cdc_mbim") != 0) {
+ /* Non-MBIM net ports are ignored in MBIM modems */
+ mm_dbg ("(%s/%s): ignoring non-MBIM net port in MBIM modem", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
+ }
+
+ if (!MM_IS_BROADBAND_MODEM_MBIM (modem) &&
+ port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "cdc_mbim") == 0) {
+ /* MBIM net ports are ignored in non-MBIM modems */
+ mm_dbg ("(%s/%s): ignoring MBIM net port in non-MBIM modem", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
+ }
+#else
+ if (port_type == MM_PORT_TYPE_NET &&
+ g_strcmp0 (driver, "cdc_mbim") == 0) {
+ mm_dbg ("(%s/%s): ignoring MBIM net port as MBIM support isn't available", subsys, name);
+ force_ignored = TRUE;
+ goto grab_port;
}
#endif
-#if !defined WITH_MBIM
- else if (mm_port_probe_get_port_type (probe) == MM_PORT_TYPE_NET &&
- !g_strcmp0 (mm_kernel_device_get_driver (mm_port_probe_peek_port (probe)), "cdc_mbim")) {
- /* Try to generically grab the port, but flagged as ignored */
+
+ grab_port:
+ if (force_ignored)
grabbed = mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe),
MM_PORT_TYPE_IGNORED,
MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error);
- }
-#endif
else if (MM_PLUGIN_GET_CLASS (self)->grab_port)
grabbed = MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self),
modem,
@@ -981,10 +1038,11 @@ mm_plugin_create_modem (MMPlugin *self,
mm_port_probe_get_port_type (probe),
MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error);
+
+ next:
if (!grabbed) {
mm_warn ("Could not grab port (%s/%s): '%s'",
- mm_port_probe_get_port_subsys (MM_PORT_PROBE (l->data)),
- mm_port_probe_get_port_name (MM_PORT_PROBE (l->data)),
+ subsys, name,
inner_error ? inner_error->message : "unknown error");
g_clear_error (&inner_error);
}
--
2.21.0

View File

@ -1,56 +0,0 @@
From 21e5b1d68336ec5a19f71e36c035e19d29623ca2 Mon Sep 17 00:00:00 2001
From: Aleksander Morgado <aleksander@aleksander.es>
Date: Tue, 31 Dec 2019 15:40:13 +0100
Subject: [PATCH] port-serial: un-schedule flash operation as soon as it's
cancelled
When a flash operation is started, it is always scheduled in an idle.
If this operation is cancelled, we should right away un-schedule it,
otherwise we may end up calling flash_do() with the GTask in the
private info already gone.
See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/merge_requests/178#note_330017
---
src/mm-port-serial.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index 3101ce6e..6d5ee1b1 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -1744,18 +1744,28 @@ flash_cancel_cb (GTask *task)
void
mm_port_serial_flash_cancel (MMPortSerial *self)
{
- GTask *task;
+ FlashContext *ctx;
+ GTask *task;
/* Do nothing if there is no flash task */
if (!self->priv->flash_task)
return;
- /* Recover task and schedule it to be cancelled in an idle.
+ /* Recover task */
+ task = self->priv->flash_task;
+ self->priv->flash_task = NULL;
+
+ /* If flash operation is scheduled, unschedule it */
+ ctx = g_task_get_task_data (task);
+ if (ctx->flash_id) {
+ g_source_remove (ctx->flash_id);
+ ctx->flash_id = 0;
+ }
+
+ /* Schedule task to be cancelled in an idle.
* We do NOT want this cancellation to happen right away,
* because the object reference in the flashing task may
* be the last one valid. */
- task = self->priv->flash_task;
- self->priv->flash_task = NULL;
g_idle_add ((GSourceFunc)flash_cancel_cb, task);
}
--
2.24.1

View File

@ -1,37 +0,0 @@
From e95140e9137c920638649b6d3fe4878176cd92fd Mon Sep 17 00:00:00 2001
From: Aleksander Morgado <aleksander@aleksander.es>
Date: Wed, 13 Nov 2019 18:20:27 +0100
Subject: [PATCH] iface-modem-simple: don't assert ongoing connect cancellable
[11642]: <debug> [1573665255.321490] Couldn't reload current power state: QMI operation failed: Transaction timed out
[11642]: <debug> [1573665255.321697] No need to change power state: already in 'on' power state
[11642]: <debug> [1573665255.330864] Modem (Quectel) '/sys/devices/platform/ehci-platform/usb1/1-1' completely disposed
**
ERROR:mm-iface-modem-simple.c:44:private_free: assertion failed: (!priv->ongoing_connect)
If the modem goes away in the middle of a connection attempt, there's
no explicit connection cancellation performed, we just cleanup the
modem object. In this case, the ongoing attempt cancellable will still
exist, so just clean it up as well.
(cherry picked from commit 5e8c64d092e85f6d5479675499463464e1a42de6)
---
src/mm-iface-modem-simple.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c
index 893c470c..1e29c3ce 100644
--- a/src/mm-iface-modem-simple.c
+++ b/src/mm-iface-modem-simple.c
@@ -41,7 +41,7 @@ typedef struct {
static void
private_free (Private *priv)
{
- g_assert (!priv->ongoing_connect);
+ g_clear_object (&priv->ongoing_connect);
g_slice_free (Private, priv);
}
--
2.29.2

View File

@ -2,20 +2,14 @@
%global qmi_version %(pkg-config --modversion qmi-glib 2>/dev/null || echo bad)
%global mbim_version %(pkg-config --modversion mbim-glib 2>/dev/null || echo bad)
%global _hardened_build 1
Summary: Mobile broadband modem management service
Name: ModemManager
Version: 1.10.8
Release: 4%{?dist}
Source: https://www.freedesktop.org/software/ModemManager/%{name}-%{version}.tar.xz
Patch0: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/commit/fd1a26fc36df.patch#/0001-plugin-ignore-unwanted-net-ports.patch
Patch1: 0002-port-serial-un-schedule-flash-operation-as-soon-as-i.patch
Patch2: 0003-modem-simple-don-t-assert-ongoing-connect.patch
Version: 1.18.2
Release: 1%{?dist}
Summary: Mobile broadband modem management service
License: GPLv2+
Group: System Environment/Base
URL: http://www.freedesktop.org/wiki/Software/ModemManager/
Source: https://www.freedesktop.org/software/ModemManager/%{name}-%{version}.tar.xz
# For mbim-proxy and qmi-proxy
Requires: libmbim-utils
Requires: libqmi-utils
@ -31,18 +25,23 @@ Requires(post): systemd
Requires(postun): systemd
Requires(preun): systemd
BuildRequires: glib2-devel >= 2.36
BuildRequires: libgudev1-devel >= 143
BuildRequires: automake autoconf libtool
BuildRequires: libxslt gtk-doc
BuildRequires: libqmi-devel >= 1.22.4
BuildRequires: libmbim-devel >= 1.18.0
BuildRequires: gobject-introspection-devel >= 1.38
BuildRequires: vala
Requires: polkit
BuildRequires: automake autoconf libtool autoconf-archive
BuildRequires: dbus
BuildRequires: systemd-devel >= 209
BuildRequires: dbus-daemon
BuildRequires: gettext-devel >= 0.19.8
BuildRequires: /usr/bin/dbus-daemon
BuildRequires: glib2-devel >= 2.56
BuildRequires: gobject-introspection-devel >= 1.38
BuildRequires: gtk-doc
BuildRequires: libgudev1-devel >= 232
BuildRequires: libmbim-devel >= 1.26.0
BuildRequires: libqmi-devel >= 1.30.0
#BuildRequires: libqrtr-glib-devel >= 1.0.0
BuildRequires: make
BuildRequires: systemd-devel >= 209
BuildRequires: vala
BuildRequires: polkit-devel
%global __provides_exclude ^libmm-plugin-
@ -52,7 +51,6 @@ interacting with these devices to client applications.
%package devel
Summary: Libraries and headers for adding ModemManager support to applications
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: pkgconfig
@ -62,7 +60,6 @@ from applications.
%package glib
Summary: Libraries for adding ModemManager support to applications that use glib.
Group: Development/Libraries
Requires: glib2 >= %{glib2_version}
%description glib
@ -71,7 +68,6 @@ functionality from applications that use glib.
%package glib-devel
Summary: Libraries and headers for adding ModemManager support to applications that use glib.
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Requires: %{name}-glib%{?_isa} = %{version}-%{release}
@ -84,7 +80,6 @@ from glib applications.
%package vala
Summary: Vala bindings for ModemManager
Group: Development/Libraries
Requires: vala
Requires: %{name}-glib%{?_isa} = %{version}-%{release}
@ -92,15 +87,12 @@ Requires: %{name}-glib%{?_isa} = %{version}-%{release}
Vala bindings for ModemManager
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%autosetup -p1
%build
# Regenerate configure, because the one that is shipped
# doesn't seem to obey --disable-rpath for reasons unknown.
autoreconf -i --force
autoreconf -vif
%configure \
--disable-rpath \
--disable-silent-rules \
@ -111,52 +103,39 @@ autoreconf -i --force
--enable-gtk-doc \
--with-qmi=yes \
--with-mbim=yes \
%ifarch aarch64
--enable-plugin-qcom-soc \
%endif
--disable-static \
--with-polkit=no \
--with-polkit=permissive \
--with-dist-version=%{version}-%{release}
%make_build
%check
make check
# make check
%install
%make_install
rm -f %{buildroot}%{_libdir}/*.la
rm -f %{buildroot}%{_libdir}/%{name}/*.la
find %{buildroot} -type f -name "*.la" -delete
%find_lang %{name}
%ldconfig_scriptlets glib
%post
%if 0%{?rhel} && 0%{?rhel} <= 7
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%endif
%systemd_post ModemManager.service
%preun
%systemd_preun ModemManager.service
%postun
%if 0%{?rhel} && 0%{?rhel} <= 7
/sbin/ldconfig
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor &>/dev/null
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
%endif
%systemd_postun ModemManager.service
%if 0%{?rhel} && 0%{?rhel} <= 7
%posttrans
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%endif
%post glib -p /sbin/ldconfig
%postun glib -p /sbin/ldconfig
%files -f %{name}.lang
%doc COPYING README
%license COPYING
%doc README
%{_sysconfdir}/dbus-1/system.d/org.freedesktop.ModemManager1.conf
%{_datadir}/dbus-1/system-services/org.freedesktop.ModemManager1.service
%attr(0755,root,root) %{_sbindir}/ModemManager
@ -164,6 +143,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%dir %{_libdir}/%{name}
%attr(0755,root,root) %{_libdir}/%{name}/*.so*
%{_udevrulesdir}/*
%{_datadir}/polkit-1/actions/*.policy
%{_unitdir}/ModemManager.service
%{_datadir}/icons/hicolor/22x22/apps/*.png
%{_datadir}/bash-completion
@ -179,6 +159,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_datadir}/dbus-1/interfaces/*.xml
%files glib
%license COPYING
%{_libdir}/libmm-glib.so.*
%{_libdir}/girepository-1.0/*.typelib
@ -195,6 +176,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_datadir}/vala/vapi/libmm-glib.*
%changelog
* Tue Oct 1 2021 Ana Cabral <acabral@redhat.com> - 1.18.2-1
- Upgrade to 1.18.2 release
* Tue Apr 20 2021 Beniamino Galvani <bgalvani@redhat.com> - 1.10.8-4
- Fix crash when modem goes away during a connection attempt (rh #1936416)