Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4557572imu; Tue, 29 Jan 2019 03:46:02 -0800 (PST) X-Google-Smtp-Source: ALg8bN7rHwgB4x8K2TwFuIEAT3nv6uo0/HpItYgzYxmxdJAFkdfsrcjkPeOOqwogCRQ45pKpEQVe X-Received: by 2002:a62:cd44:: with SMTP id o65mr25700437pfg.222.1548762362420; Tue, 29 Jan 2019 03:46:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548762362; cv=none; d=google.com; s=arc-20160816; b=alSP9dLX2LmfBSHI/BnZBHUDKK2jjFNycLcPxx5QPWvPQn9u4exii3UJQlWx4oCOGv +eEy9IJX11eX4G/I7HO4YE/zQ+3czJhloinfw5KS6bxXsLjeYHDvBnFQ4H79our2jnDf yzPmPaKXZ5ZvU2mRdh1L31y1Kn3nQzj8Jp/ixp2xxGGrKr6l1K1I622TX35QUsxjXBfB E7lGDfwhaH+pyt4jw+7x1NV8hEl9vqgY0+/egmhTBacfJhSSJTKDmK2O5fq5SI2Cuilw YV7z0UIgRtl+2Fuh1YCsQOMEwFL4jVh+pg7ZiKiNgg9NW7KtNIR4wFLRFStKQyvn2Zf4 9sdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=UC8zpaf83i8R/r7sRd46qHqkBp4UeNF7TCjaZpJZwC8=; b=OqtDVSLvESxCX53+Bi19UI+ZA8/CaPvvyVJAF8mH6xuckuNna7uvIlI7istb5QNiA7 Z6UmpI6S+FtZoaRCQj7zb1oqBGEaJW0EEFbbACYiokW1TmMoYm8+jxJdnXOGrjxJgvfI yxnsj0TVxg5ZFvFGf+ANRVXyC+HIPxTq98BAK1HVk6i1GoTl7+9Q4LN3AuiKp/QTJkM5 xsrI/IgDTOrxHoh8mwwNh16GJMjjGb+Ye1nVlQEoYlOAUSYmRok9u1n+Rs8Eh5hwpsjl X1s5a9cknTS2Y34pkSt4ky2NK7/vKhsbzNEhCMHfLj0g0vkyhTmh9SHdG1/mP/jkA77K QbJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=XN04dzq9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v35si6191702pgl.130.2019.01.29.03.45.46; Tue, 29 Jan 2019 03:46:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=XN04dzq9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730632AbfA2Lor (ORCPT + 99 others); Tue, 29 Jan 2019 06:44:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:35120 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730091AbfA2Lop (ORCPT ); Tue, 29 Jan 2019 06:44:45 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2FC712083B; Tue, 29 Jan 2019 11:44:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548762284; bh=usRqYTpjvka2c9XeYCyKMr5YuSuZ7tT8X+Q770Lybew=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XN04dzq9UuzNglKpnr3uN1WclkqPrqe6XUTNTnqrhUK47tU372DeoChvP9BsnmzDu ZtrrxXfFkmVizG8CGsjZ1Qzic5McB6r2WdOIWhId9PVmkvHsdRQzHRiC+ev0idZc5H zfTIyf65UiqpLtycLenIoKpiLsaK/Zy/UQaht8Vg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Shilovsky , Steve French Subject: [PATCH 4.19 053/103] CIFS: Fix possible hang during async MTU reads and writes Date: Tue, 29 Jan 2019 12:35:30 +0100 Message-Id: <20190129113203.133987889@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190129113159.567154026@linuxfoundation.org> References: <20190129113159.567154026@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Pavel Shilovsky commit acc58d0bab55a50e02c25f00bd6a210ee121595f upstream. When doing MTU i/o we need to leave some credits for possible reopen requests and other operations happening in parallel. Currently we leave 1 credit which is not enough even for reopen only: we need at least 2 credits if durable handle reconnect fails. Also there may be other operations at the same time including compounding ones which require 3 credits at a time each. Fix this by leaving 8 credits which is big enough to cover most scenarios. Was able to reproduce this when server was configured to give out fewer credits than usual. The proper fix would be to reconnect a file handle first and then obtain credits for an MTU request but this leads to bigger code changes and should happen in other patches. Cc: Signed-off-by: Pavel Shilovsky Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman --- fs/cifs/smb2ops.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -154,14 +154,14 @@ smb2_wait_mtu_credits(struct TCP_Server_ scredits = server->credits; /* can deadlock with reopen */ - if (scredits == 1) { + if (scredits <= 8) { *num = SMB2_MAX_BUFFER_SIZE; *credits = 0; break; } - /* leave one credit for a possible reopen */ - scredits--; + /* leave some credits for reopen and other ops */ + scredits -= 8; *num = min_t(unsigned int, size, scredits * SMB2_MAX_BUFFER_SIZE);