Since commit 179d0ba0c454 ("net: qrtr: fix error return code of qrtr_sendmsg()"), qrtr_sendmsg() returns -ENOMEM whenever sock_alloc_send_skb() fails. The helper already sets rc on every failure path, so this overwrites the real error. In particular, sock_alloc_send_skb() consumes a pending sk_err, so the ENETRESET set by qrtr_reset_ports() is lost and userspace never learns that a new controller came up. -EAGAIN, -EPIPE and signal errors are hidden as well. Return the error from sock_alloc_send_skb() as is. Signed-off-by: Chunkai Deng --- net/qrtr/af_qrtr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c index 2d7339338e460..09c1cb443f5cb 100644 --- a/net/qrtr/af_qrtr.c +++ b/net/qrtr/af_qrtr.c @@ -959,10 +959,8 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) plen = (len + 3) & ~3; skb = sock_alloc_send_skb(sk, plen + QRTR_HDR_MAX_SIZE, msg->msg_flags & MSG_DONTWAIT, &rc); - if (!skb) { - rc = -ENOMEM; + if (!skb) goto out_node; - } skb_reserve(skb, QRTR_HDR_MAX_SIZE); -- 2.43.0