modemmanager: check status of report-kernel-event 22485/head
authorOliver Sedlbauer <osedlbauer@tdt.de>
Mon, 16 Oct 2023 14:42:25 +0000 (16:42 +0200)
committerOliver Sedlbauer <osedlbauer@tdt.de>
Wed, 25 Oct 2023 07:33:22 +0000 (09:33 +0200)
At mm_report_modem_wait a wait status is set. When attempting to report
an event (via hotplug or during startup) and the DBus is not yet available,
the status in the sysfs cache is set to 'processed' incorrectly, even
if mmcli fails.
This is fixed by aborting the operation and logging an error when
the kernel report fails.

Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
net/modemmanager/Makefile
net/modemmanager/files/modemmanager.common

index bdbdd236ea955ce651e6a11575c19148c9eefb99..82216ae4c1123be77a9b600f03895b9852290e14 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=modemmanager
 PKG_SOURCE_VERSION:=1.22.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git
index 2a604c9b68c1012c64853431494c9a4c37a749c2..d157cebf86cde524ad157460da46aa5f40362e13 100644 (file)
@@ -277,7 +277,7 @@ mm_report_event() {
        local sysfspath="$4"
 
        # Do not save virtual devices
-       local virtual
+       local virtual result
        virtual="$(echo "$sysfspath" | cut -d'/' -f4)"
        [ "$virtual" = "virtual" ] && {
                mm_log "debug" "sysfspath is a virtual device ($sysfspath)"
@@ -298,11 +298,15 @@ mm_report_event() {
        esac
 
        # Report the event
-       mm_log "debug" "event reported: action=${action}, name=${name}, subsystem=${subsystem}"
-       mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 &
+       mm_log "debug" "Report event: action=${action}, name=${name}, subsystem=${subsystem}"
+       result=$(mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 2>&1)
+       if [ "$?" -eq "0" ]; then
+               # Wait for added modem if a sysfspath is given
+               [ -n "${sysfspath}" ] && [ "$action" = "add" ] && mm_report_modem_wait "${sysfspath}"
+       else
+               mm_log "error" "Couldn't report kernel event: ${result}"
+       fi
 
-       # Wait for added modem if a sysfspath is given
-       [ -n "${sysfspath}" ] && [ "$action" = "add" ] && mm_report_modem_wait "${sysfspath}"
 }
 
 mm_report_event_from_cache_line() {