mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-04 18:27:36 +00:00
af_unix: Set drop reason in manage_oob().
AF_UNIX SOCK_STREAM socket supports MSG_OOB.
When OOB data is sent to a socket, recv() will break at that point.
If the next recv() does not have MSG_OOB, the normal data following
the OOB data is returned.
Then, the OOB skb is dropped.
Let's define a new drop reason for that case in manage_oob().
# echo 1 > /sys/kernel/tracing/events/skb/kfree_skb/enable
# python3
>>> from socket import *
>>> s1, s2 = socketpair(AF_UNIX)
>>> s1.send(b'a', MSG_OOB)
>>> s1.send(b'b')
>>> s2.recv(2)
b'b'
# cat /sys/kernel/tracing/trace_pipe
...
python3-223 ... kfree_skb: ... location=unix_stream_read_generic+0x59e/0xc20 reason: UNIX_SKIP_OOB
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250116053441.5758-6-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
c49a157c33
commit
533643b091
@@ -9,6 +9,7 @@
|
||||
FN(SOCKET_CLOSE) \
|
||||
FN(SOCKET_FILTER) \
|
||||
FN(SOCKET_RCVBUFF) \
|
||||
FN(UNIX_SKIP_OOB) \
|
||||
FN(PKT_TOO_SMALL) \
|
||||
FN(TCP_CSUM) \
|
||||
FN(UDP_CSUM) \
|
||||
@@ -145,6 +146,11 @@ enum skb_drop_reason {
|
||||
SKB_DROP_REASON_SOCKET_FILTER,
|
||||
/** @SKB_DROP_REASON_SOCKET_RCVBUFF: socket receive buff is full */
|
||||
SKB_DROP_REASON_SOCKET_RCVBUFF,
|
||||
/**
|
||||
* @SKB_DROP_REASON_UNIX_SKIP_OOB: Out-Of-Band data is skipped by
|
||||
* recv() without MSG_OOB so dropped.
|
||||
*/
|
||||
SKB_DROP_REASON_UNIX_SKIP_OOB,
|
||||
/** @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small */
|
||||
SKB_DROP_REASON_PKT_TOO_SMALL,
|
||||
/** @SKB_DROP_REASON_TCP_CSUM: TCP checksum error */
|
||||
|
||||
Reference in New Issue
Block a user