modemmanager: check status of report-kernel-event

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>
This commit is contained in:
Oliver Sedlbauer 2023-10-16 16:42:25 +02:00
parent 9ae43c14e8
commit 01fb59f4e2
2 changed files with 10 additions and 6 deletions

View file

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager PKG_NAME:=modemmanager
PKG_SOURCE_VERSION:=1.22.0 PKG_SOURCE_VERSION:=1.22.0
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git

View file

@ -277,7 +277,7 @@ mm_report_event() {
local sysfspath="$4" local sysfspath="$4"
# Do not save virtual devices # Do not save virtual devices
local virtual local virtual result
virtual="$(echo "$sysfspath" | cut -d'/' -f4)" virtual="$(echo "$sysfspath" | cut -d'/' -f4)"
[ "$virtual" = "virtual" ] && { [ "$virtual" = "virtual" ] && {
mm_log "debug" "sysfspath is a virtual device ($sysfspath)" mm_log "debug" "sysfspath is a virtual device ($sysfspath)"
@ -298,11 +298,15 @@ mm_report_event() {
esac esac
# Report the event # Report the event
mm_log "debug" "event reported: action=${action}, name=${name}, subsystem=${subsystem}" mm_log "debug" "Report event: action=${action}, name=${name}, subsystem=${subsystem}"
mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 & 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() { mm_report_event_from_cache_line() {