diff options
author | Oleksij Rempel | 2019-11-07 18:51:40 +0100 |
---|---|---|
committer | Marc Kleine-Budde | 2019-11-13 10:42:34 +0100 |
commit | 62ebce1dc1fa649a1c54db02f1a3c409bb0529ec (patch) | |
tree | aff58be68e2a401a47eae4a1562c529fe8174430 | |
parent | d966635b384b9571a43bd38c61f280c47eb564ad (diff) |
can: j1939: make sure socket is held as long as session exists
We link the socket to the session to be able provide socket specific
notifications. For example messages over error queue.
We need to keep the socket held, while we have a reference to it.
Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
-rw-r--r-- | net/can/j1939/transport.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/can/j1939/transport.c b/net/can/j1939/transport.c index ecdedfc0b10c..afc2adfd97e4 100644 --- a/net/can/j1939/transport.c +++ b/net/can/j1939/transport.c @@ -255,6 +255,7 @@ static void __j1939_session_drop(struct j1939_session *session) return; j1939_sock_pending_del(session->sk); + sock_put(session->sk); } static void j1939_session_destroy(struct j1939_session *session) @@ -1875,6 +1876,7 @@ struct j1939_session *j1939_tp_send(struct j1939_priv *priv, return ERR_PTR(-ENOMEM); /* skb is recounted in j1939_session_new() */ + sock_hold(skb->sk); session->sk = skb->sk; session->transmission = true; session->pkt.total = (size + 6) / 7; |