can: add drop reasons in CAN protocols receive path
authorDavide Caratti <dcaratti@redhat.com>
Wed, 4 Jun 2025 16:06:05 +0000 (18:06 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Tue, 10 Jun 2025 08:23:56 +0000 (10:23 +0200)
commit81807451c2a6af59bbc58adfd0da69870c30d4ab
treea5f1ec7a866594dbd3bd5b18a63451072d419994
parent127c49624a0980ee7b8a5ba9094d6942332a48da
can: add drop reasons in CAN protocols receive path

sock_queue_rcv_skb() can fail because of lack of memory resources: use
drop reasons and pass the receiving socket to the tracepoint, so that
it's possible to better locate/debug such events.

Tested with:

| # modprobe vcan echo=1
| # ip link add name vcan2 type vcan
| # ip link set dev vcan2 up
| # ./netlayer/tst-proc 1 &
| # bg
| # while true ; do perf record -e skb:kfree_skb -aR  -- \
| > ./raw/tst-raw-sendto vcan2 ; perf script ; done
| [...]
| tst-raw-sendto 10942 [000] 506428.431856: skb:kfree_skb: skbaddr=0xffff97cec38b4200 rx_sk=0xffff97cf0f75a800 protocol=12 location=raw_rcv+0x20e reason: SOCKET_RCVBUF

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Link: https://patch.msgid.link/20250604160605.1005704-3-dcaratti@redhat.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/bcm.c
net/can/isotp.c
net/can/j1939/socket.c
net/can/raw.c