Re: [PATCH] core/pppd-plugin: wait to recover port settings before notifying death

On Thu, 2019-06-13 at 18:23 +0200, Alfonso Sánchez-Beato via
networkmanager-list wrote:
pppd restores the previous settings for the serial port it uses right
before exiting. It is especially important to do so because otherwise
ModemManager is not able to recover the port as it can receive a
event from the port due to CLOCAL not being restored.  However, there
currently a race condition that produces this issue. This is because
when PHASE_DEAD is notified, pppd still has not restored the port
settings - it does that a bit later, in the die() function.

This patch delays notifying PHASE_DEAD until when the exitnotify()
is called by pppd: when this happens the port settings have already

There were previously efforts to fix this in commit fe090c3, so
PHASE_DEAD was used instead of PHASE_DISCONNECT to notify MM that the
port was disconnected, but that still early to ensure that the port
settings are restored.

The MM traces seen when the bug is triggered are:

ModemManager[2158]: <warn>  (ttyACM1): could not re-acquire serial
port lock: (5) Input/output error
ModemManager[2158]: <warn>  Couldn't load Operator Code: 'Cannot run
sequence: 'Could not open serial device ttyACM1: it has been forced
 src/ppp/nm-pppd-plugin.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)


merged to master as

thanks for the patch!!

Attachment: signature.asc
Description: This is a digitally signed message part

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]