All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Paulo Alcantara <pc@manguebit.com>,
	Rickard Andersson <rickaran@axis.com>,
	Steve French <stfrench@microsoft.com>,
	Sasha Levin <sashal@kernel.org>,
	sfrench@samba.org, linux-cifs@vger.kernel.org,
	samba-technical@lists.samba.org
Subject: [PATCH AUTOSEL 6.10 16/18] smb: client: fix hang in wait_for_response() for negproto
Date: Tue, 10 Sep 2024 13:22:01 -0400	[thread overview]
Message-ID: <20240910172214.2415568-16-sashal@kernel.org> (raw)
In-Reply-To: <20240910172214.2415568-1-sashal@kernel.org>

From: Paulo Alcantara <pc@manguebit.com>

[ Upstream commit 7ccc1465465d78e6411b7bd730d06e7435802b5c ]

Call cifs_reconnect() to wake up processes waiting on negotiate
protocol to handle the case where server abruptly shut down and had no
chance to properly close the socket.

Simple reproducer:

  ssh 192.168.2.100 pkill -STOP smbd
  mount.cifs //192.168.2.100/test /mnt -o ... [never returns]

Cc: Rickard Andersson <rickaran@axis.com>
Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/smb/client/connect.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index d2307162a2de..e325e06357ff 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -656,6 +656,19 @@ allocate_buffers(struct TCP_Server_Info *server)
 static bool
 server_unresponsive(struct TCP_Server_Info *server)
 {
+	/*
+	 * If we're in the process of mounting a share or reconnecting a session
+	 * and the server abruptly shut down (e.g. socket wasn't closed, packet
+	 * had been ACK'ed but no SMB response), don't wait longer than 20s to
+	 * negotiate protocol.
+	 */
+	spin_lock(&server->srv_lock);
+	if (server->tcpStatus == CifsInNegotiate &&
+	    time_after(jiffies, server->lstrp + 20 * HZ)) {
+		spin_unlock(&server->srv_lock);
+		cifs_reconnect(server, false);
+		return true;
+	}
 	/*
 	 * We need to wait 3 echo intervals to make sure we handle such
 	 * situations right:
@@ -667,7 +680,6 @@ server_unresponsive(struct TCP_Server_Info *server)
 	 * 65s kernel_recvmsg times out, and we see that we haven't gotten
 	 *     a response in >60s.
 	 */
-	spin_lock(&server->srv_lock);
 	if ((server->tcpStatus == CifsGood ||
 	    server->tcpStatus == CifsNeedNegotiate) &&
 	    (!server->ops->can_echo || server->ops->can_echo(server)) &&
-- 
2.43.0


  parent reply	other threads:[~2024-09-10 17:22 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-10 17:21 [PATCH AUTOSEL 6.10 01/18] can: m_can: Limit coalescing to peripheral instances Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 02/18] can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing configuration Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 03/18] ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less strict Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 04/18] ASoC: intel: fix module autoloading Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 05/18] ASoC: google: " Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 06/18] ASoC: tda7419: " Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 07/18] ASoC: " Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 08/18] ASoC: mediatek: mt8188-mt6359: Modify key Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 09/18] spi: spidev: Add an entry for elgin,jg10309-01 Sasha Levin
2024-09-10 17:27   ` Mark Brown
2024-09-18 22:43     ` Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 10/18] ASoC: amd: yc: Add a quirk for MSI Bravo 17 (D7VEK) Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 11/18] clk: qcom: gcc-sm8650: Don't use shared clk_ops for QUPs Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 12/18] ALSA: hda: add HDMI codec ID for Intel PTL Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 13/18] drm: komeda: Fix an issue related to normalized zpos Sasha Levin
2024-09-10 17:21 ` [PATCH AUTOSEL 6.10 14/18] spi: bcm63xx: Enable module autoloading Sasha Levin
2024-09-10 17:22 ` [PATCH AUTOSEL 6.10 15/18] Revert "wifi: ath11k: restore country code during resume" Sasha Levin
2024-09-10 17:22 ` Sasha Levin [this message]
2024-09-10 17:22 ` [PATCH AUTOSEL 6.10 17/18] platform/x86/amd: pmf: Make ASUS GA403 quirk generic Sasha Levin
2024-09-10 17:22 ` [PATCH AUTOSEL 6.10 18/18] ice: check for XDP rings instead of bpf program when unconfiguring Sasha Levin
2024-09-10 17:22   ` [Intel-wired-lan] " Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240910172214.2415568-16-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pc@manguebit.com \
    --cc=rickaran@axis.com \
    --cc=samba-technical@lists.samba.org \
    --cc=sfrench@samba.org \
    --cc=stable@vger.kernel.org \
    --cc=stfrench@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.