Message ID | 20230515161723.705585300@linuxfoundation.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp7082631vqo; Mon, 15 May 2023 10:33:02 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ79stDWSCT18dtZzj66/BlIvBo4vMuU47UUhAMBkih6L8mollHNN7eAAw1e1Nm30eokityo X-Received: by 2002:a17:90b:4b90:b0:250:78d0:f78c with SMTP id lr16-20020a17090b4b9000b0025078d0f78cmr33348233pjb.9.1684171981684; Mon, 15 May 2023 10:33:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684171981; cv=none; d=google.com; s=arc-20160816; b=ZBTjGGcMTvUCLxvcgq8P0zI5Yqqeh7AAXwL41L0wr6ePaPzhwMAkrz5lEHEF0sF60G dg644ljhjdqakO2rsRrhs7QQz9aFnr8J6d/bw7DD4wIqLJJpcbzIP5Rt0K+qOZgWLX4Q qxf3QGr48+iYDffclVjHfaCX3QYoIn7R9ZLG7PVXDZq7SOxjw3+JojsqhT6utmuyW6MR i4d7oOdz1fiafbZc6B8ND4WAubyIrREonVRFULAkfYMcH0Jv+9UfWUy3zkKkGXZO2/Qy +u9bY8raj/8lL6C0nUXyG5Bfmw+w1POJVETUL7Zeoo4Wtwe+dzdFnKxO7P/ZSilzlHUL HGGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=M/TwYp5UKQC2RpmAGPOscHqgja+MF9HXWG5kbECG0Wk=; b=WJYfCCYO37GRBNKvTyWMN4FoEakcFhRfWPlD1M8mTOnex9U04c5V/P5Cqo1XYxqbKb xcFTqs2o6KvA8zuFg9zjp6dPuNQhmfnvi+3cP1YkKhnKO8FEP20QCx1v5aWuoE41p2Gp e+ChMP1ZdrejwhMUwi4p83SKC92svXE5vLOvLVQDIlpiIJnXmaXbR1QyraN3hDmsHjRP dyzG4pytVj6B6P9RzWzXCcxfrvjfBJTgHLZLy/YXggi5oJnY6JaX/QXh3g6xzLHM22c7 nAwgDaTMORM8sVfo+4H2sUEmlqumgGF7SnmxwkQ3BHD1H14Qw8iW2fAo8m7EANzoxI7K DOCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=EoNvkkhN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j5-20020a63b605000000b00524d6d12581si17562322pgf.691.2023.05.15.10.32.47; Mon, 15 May 2023 10:33:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=EoNvkkhN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243872AbjEORSX (ORCPT <rfc822;peekingduck44@gmail.com> + 99 others); Mon, 15 May 2023 13:18:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243841AbjEORR7 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 15 May 2023 13:17:59 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54587100F4; Mon, 15 May 2023 10:16:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9EAB662BF0; Mon, 15 May 2023 17:16:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F9EBC4339B; Mon, 15 May 2023 17:16:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1684170975; bh=tlJPUuUVRpEZGnrbkGEflL2jwDkHI9CNFTJwvu+RQuA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EoNvkkhNNEtj4MidLvuCqOKRtMRDqJR7uzZPdSY6vaCDaExWpDd/TgJFwSwdKHhTw BLBCORIFQ9ye0UvqxXAPQpNUCX7exf6YScxWq9mYvaAjSOXMTUgJUII+BccRRiyMf/ B7is7rFmxxd1aqpVaxQWgXbN9n6sTZEJucZduwdU= From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> To: stable@vger.kernel.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, patches@lists.linux.dev, Marc Dionne <marc.dionne@auristor.com>, David Howells <dhowells@redhat.com>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, linux-afs@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Sasha Levin <sashal@kernel.org> Subject: [PATCH 6.2 060/242] rxrpc: Make it so that a waiting process can be aborted Date: Mon, 15 May 2023 18:26:26 +0200 Message-Id: <20230515161723.705585300@linuxfoundation.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230515161721.802179972@linuxfoundation.org> References: <20230515161721.802179972@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765982319917004028?= X-GMAIL-MSGID: =?utf-8?q?1765982319917004028?= |
Series |
None
|
|
Commit Message
Greg KH
May 15, 2023, 4:26 p.m. UTC
From: David Howells <dhowells@redhat.com> [ Upstream commit 0eb362d254814ce04848730bf32e75b8ee1a4d6c ] When sendmsg() creates an rxrpc call, it queues it to wait for a connection and channel to be assigned and then waits before it can start shovelling data as the encrypted DATA packet content includes a summary of the connection parameters. However, sendmsg() may get interrupted before a connection gets assigned and further sendmsg() calls will fail with EBUSY until an assignment is made. Fix this so that the call can at least be aborted without failing on EBUSY. We have to be careful here as sendmsg() mustn't be allowed to start the call timer if the call doesn't yet have a connection assigned as an oops may follow shortly thereafter. Fixes: 540b1c48c37a ("rxrpc: Fix deadlock between call creation and sendmsg/recvmsg") Reported-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> cc: "David S. Miller" <davem@davemloft.net> cc: Eric Dumazet <edumazet@google.com> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: linux-kernel@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org> --- net/rxrpc/sendmsg.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c index 7498a77b5d397..c1b074c17b33e 100644 --- a/net/rxrpc/sendmsg.c +++ b/net/rxrpc/sendmsg.c @@ -656,10 +656,13 @@ int rxrpc_do_sendmsg(struct rxrpc_sock *rx, struct msghdr *msg, size_t len) goto out_put_unlock; } else { switch (rxrpc_call_state(call)) { - case RXRPC_CALL_UNINITIALISED: case RXRPC_CALL_CLIENT_AWAIT_CONN: - case RXRPC_CALL_SERVER_PREALLOC: case RXRPC_CALL_SERVER_SECURING: + if (p.command == RXRPC_CMD_SEND_ABORT) + break; + fallthrough; + case RXRPC_CALL_UNINITIALISED: + case RXRPC_CALL_SERVER_PREALLOC: rxrpc_put_call(call, rxrpc_call_put_sendmsg); ret = -EBUSY; goto error_release_sock;