Skip to content

Commit 4a15d57

Browse files
oleremmarckleinebudde
authored andcommitted
can: j1939: warn if resources are still linked on destroy
j1939_session_destroy() and __j1939_priv_release() should be called only if session, ecu or socket are not linked or used by any one else. If at least one of these resources is linked, then the reference counting is broken somewhere. This warning will be triggered before KASAN will do, and will make it easier to debug initial issue. This works on platforms without KASAN support. Signed-off-by: Oleksij Rempel <[email protected]>
1 parent ddeeb7d commit 4a15d57

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

net/can/j1939/main.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ static void __j1939_priv_release(struct kref *kref)
152152

153153
netdev_dbg(priv->ndev, "%s: 0x%p\n", __func__, priv);
154154

155+
WARN_ON_ONCE(!list_empty(&priv->active_session_list));
156+
WARN_ON_ONCE(!list_empty(&priv->ecus));
157+
WARN_ON_ONCE(!list_empty(&priv->j1939_socks));
158+
155159
dev_put(ndev);
156160
kfree(priv);
157161
}

net/can/j1939/transport.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ static void j1939_session_destroy(struct j1939_session *session)
267267

268268
netdev_dbg(session->priv->ndev, "%s: 0x%p\n", __func__, session);
269269

270+
WARN_ON_ONCE(!list_empty(&session->sk_session_queue_entry));
271+
WARN_ON_ONCE(!list_empty(&session->active_session_list_entry));
272+
270273
skb_queue_purge(&session->skb_queue);
271274
__j1939_session_drop(session);
272275
j1939_priv_put(session->priv);

0 commit comments

Comments
 (0)