net/x25: Fix to not accept on connected socket
Subsystems (3)
PATCH v2 1/1 net/x25: Fix to not accept on connected socket
When listen() and accept() are called on an x25 socket that connect() succeeds, accept() succeeds immediately. This is because x25_connect() queues the skb to sk->sk_receive_queue, and x25_accept() dequeues it.
This creates a child socket with the sk of the parent x25 socket, which can cause confusion.
Fix x25_listen() to return -EINVAL if the socket has already been successfully connect()ed to avoid this issue.
--- net/x25/af_x25.c | 6 ++++++ 1 file changed, 6 insertions(+)
net/x25/af_x25.c +6 -0
@@ -482,6 +482,12 @@ static int x25_listen(struct socket *sock, int backlog)int rc = -EOPNOTSUPP ;lock_sock (sk); +if (sock->state !=SS_UNCONNECTED ) { + rc = -EINVAL ; +release_sock (sk); +return rc; + } +if (sk->sk_state !=TCP_LISTEN ) {memset (&x25_sk (sk)->dest_addr,0 ,X25_ADDR_LEN ); sk->sk_max_ack_backlog = backlog;
Signature · 1 line
2.25.1
This patch was applied to netdev/net.git (master) by David S. Miller <[email protected]>:
Hello:
This patch was applied to netdev/net.git (master)
by David S. Miller <[email protected]>:
Quoted 9 lines · On Mon, 23 Jan 2023 11:43:23 -0800 you wrote:
When
listen()andaccept()are called on an x25 socket thatconnect()succeeds,accept()succeeds immediately. This is becausex25_connect()queues the skb tosk->sk_receive_queue, andx25_accept()dequeues it.This creates a child socket with the sk of the parent x25 socket, which can cause confusion.
[...]
Here is the summary with links:
- [v2] net/x25: Fix to not accept on connected socket
https://git.kernel.org/netdev/net/c/f2b0b5210f67
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
Dear,
This patch's description is incorrect and should not be applied.
Newly submitted corrected v3 patch:
https://lore.kernel.org/all/20230125110514.GA134174@ubuntu/
Regards,
Hyunwoo Kim