Commit d119775f authored by Jiexun Wang's avatar Jiexun Wang Committed by Jakub Kicinski
Browse files

af_unix: Reject SIOCATMARK on non-stream sockets



SIOCATMARK reports whether the receive queue is at the urgent mark for
MSG_OOB.

In AF_UNIX, MSG_OOB is supported only for SOCK_STREAM sockets.
SOCK_DGRAM and SOCK_SEQPACKET reject MSG_OOB in sendmsg() and recvmsg(),
so they should not support SIOCATMARK either.

Return -EOPNOTSUPP for non-stream sockets before checking the receive
queue.

Fixes: 314001f0 ("af_unix: Add OOB support")
Cc: stable@kernel.org
Reported-by: default avatarYuan Tan <yuantan098@gmail.com>
Reported-by: default avatarYifan Wu <yifanwucs@gmail.com>
Reported-by: default avatarJuefei Pu <tomapufckgml@gmail.com>
Reported-by: default avatarXin Liu <bird@lzu.edu.cn>
Suggested-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Signed-off-by: default avatarJiexun Wang <wangjiexun2025@gmail.com>
Signed-off-by: default avatarRen Wei <n05ec@lzu.edu.cn>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260506140825.2987635-1-n05ec@lzu.edu.cn


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 08f566e8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3323,6 +3323,9 @@ static int unix_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
			struct sk_buff *skb;
			int answ = 0;

			if (sk->sk_type != SOCK_STREAM)
				return -EOPNOTSUPP;

			mutex_lock(&u->iolock);

			skb = skb_peek(&sk->sk_receive_queue);