Merge pull request #22485 from osedl/modemmanager-fix-race-condition
authorFlorian Eckert <fe@dev.tdt.de>
Fri, 27 Oct 2023 06:22:56 +0000 (08:22 +0200)
committerGitHub <noreply@github.com>
Fri, 27 Oct 2023 06:22:56 +0000 (08:22 +0200)
Modemmanager fix race condition

net/modemmanager/Makefile
net/modemmanager/files/modemmanager.common

index fa6f1ea60f9285e50a39164828dd70976ec05ac3..82216ae4c1123be77a9b600f03895b9852290e14 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=modemmanager
 PKG_SOURCE_VERSION:=1.22.0
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git
index d46ee72430f1eae7e250ec5c4a47d2ee72bd9ff4..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() {
@@ -319,9 +323,6 @@ mm_report_event_from_cache_line() {
 }
 
 mm_report_events_from_cache() {
-       # Remove the sysfs cache
-       rm -f "${MODEMMANAGER_SYSFS_CACHE}"
-
        local n=60
        local step=1
        local mmrunning=0
@@ -346,6 +347,9 @@ mm_report_events_from_cache() {
                return
        }
 
+       # Remove the sysfs cache
+       rm -f "${MODEMMANAGER_SYSFS_CACHE}"
+
        # Report cached kernel events
        while IFS= read -r event_line; do
                mm_report_event_from_cache_line "${event_line}"