can: isotp: handle wait_event_interruptible() return values
Subsystems (3)
Oliver Hartkopp
maintainerPATCH v4 1/1 can: isotp: handle wait_event_interruptible() return values
When wait_event_interruptible() has been interrupted by a signal the tx.state value might not be ISOTP_IDLE. Force the state machines into idle state to inhibit the timer handlers to continue working.
Fixes 866337865f37 ("can: isotp: fix tx state handling for echo tx
processing")
Signed-off-by Oliver Hartkopp <[email protected]>
---
V2: fixed checkpatch warnings m(
V3: added 'Fixes:' tag
V4: change 'Fixes:' tag to reduce WARN(1) possibility
net/can/isotp.c | 4 ++++ 1 file changed, 4 insertions(+)
net/can/isotp.c +4 -0
@@ -1150,10 +1150,14 @@ static int isotp_release(struct socket *sock) net =sock_net (sk);/* wait for complete transmission of current pdu */ wait_event_interruptible (so->wait, so->tx.state ==ISOTP_IDLE ); +/* force state machines to be idle also when a signal occurred */ + so->tx.state =ISOTP_IDLE ; + so->rx.state =ISOTP_IDLE ; +spin_lock (&isotp_notifier_lock);while (isotp_busy_notifier == so) {spin_unlock (&isotp_notifier_lock);schedule_timeout_uninterruptible (1 );spin_lock (&isotp_notifier_lock);
Signature · 1 line
2.30.2