Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2482833imj; Mon, 18 Feb 2019 06:48:15 -0800 (PST) X-Google-Smtp-Source: AHgI3IbfAyGKhMXmVk4AVcdoaWihsYH/TGqTxLMP/sX/6fwTkRPwUSf8l3OkAS4uD89fV9LNbzgv X-Received: by 2002:a63:d904:: with SMTP id r4mr19321886pgg.207.1550501295197; Mon, 18 Feb 2019 06:48:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550501295; cv=none; d=google.com; s=arc-20160816; b=TawAE8wZRba/NQbRltvgQA9oOlLOzHQAbRzLwnYOiBblJPmxSLIk8DaMUyq/FzV1G7 tJtJP6qHo3Sjw5KpVBpYWdx1LZN1QaISrv61xQXNBsz8TuamydPUlM0xFOW031XTZgUT xpo/SoZXFkOwUAfsTMzcD1rEKkLlyB1ZoMQnOz0avOtS48XRzIrJZIqfI58oexrU7DvE ZnSWYzTmpIGwlF7TQdWZyWs6MT/XESDRNmwKCba40Q/jpcSJGQk1PL4Wb6cjhOttvZau l1MCgUpjRyB5g12rdn+jFJSKXGt4E7/8Z03mviHLmyrpTCXKzOr8yFurwQLNGDiF0F9b 0wyg== 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=VSJAMZkRRRWYkyfUNN0AEiPxOhvxqK5lRPAS+9dJyBk=; b=ajaLCm/kpBHBqd7TnG8zMMvtvhPBq+HuN3rOl6f4GtRLJnt7rX24SReJihntxAxNkM Rri7sjKNBuEgKeRpTm69dRZd+uRrmFaRZ3b9f8H/Mn4TsFyCPkaEIltysYuJ7BKlD++0 k6t1wikO232F8RfJ7NJzK69bhT7ekc06e8iJ5Hk6Zto+8e9e+B/lRS45sjDQKwcjn0tN pfqwkTGsD3C3L1hZwAU+1Q7V4hh7iOsKQKfcbAtgs2wcc9odZj7uDFO7sCqCEq6CV+5p tXkAt9uECWm3nyCKeiB2jzJc9EWMXH4BjdAGzMb/SuCaTwlZi7u/6BXpGDkrlJBvY//S V/FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zXNoEEol; 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 v10si13615007plp.424.2019.02.18.06.47.59; Mon, 18 Feb 2019 06:48:15 -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=zXNoEEol; 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 S1731711AbfBRNqz (ORCPT + 99 others); Mon, 18 Feb 2019 08:46:55 -0500 Received: from mail.kernel.org ([198.145.29.99]:53346 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729672AbfBRNqv (ORCPT ); Mon, 18 Feb 2019 08:46:51 -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 7E75021901; Mon, 18 Feb 2019 13:46:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550497611; bh=TplG2/ThW7x8vkZKnuJ4qSZu0CUu8r3t+hMxWwJvPjw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zXNoEEolPnKQWm5I6qrywqyDq64qbA6/Bci++mjeksyPRfJ7NkmZvLhEL0drSguHc /vjYqdoEh9wugMA87qMLdSjKvFEvQiSu1UkhzAhxwym4b1XZI8SydygUhUMEzTNvo/ LEWleGbVFFTHRz7aj5wzDChxKwx4qr0uW08c4W+E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Shilovsky , Ronnie Sahlberg , Steve French , Sasha Levin Subject: [PATCH 4.20 46/92] CIFS: Fix credit calculations in compound mid callback Date: Mon, 18 Feb 2019 14:42:49 +0100 Message-Id: <20190218133459.016625465@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218133454.668268457@linuxfoundation.org> References: <20190218133454.668268457@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.20-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 3d3003fce8e837acc4e3960fe3cbabebc356dcb5 ] The current code doesn't do proper accounting for credits in SMB1 case: it adds one credit per response only if we get a complete response while it needs to return it unconditionally. Fix this and also include malformed responses for SMB2+ into accounting for credits because such responses have Credit Granted field, thus nothing prevents to get a proper credit value from them. Signed-off-by: Pavel Shilovsky Reviewed-by: Ronnie Sahlberg Signed-off-by: Steve French Signed-off-by: Sasha Levin --- fs/cifs/smb2ops.c | 6 +++++- fs/cifs/transport.c | 11 +---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index d7dd7d38fad6..aa71e620f3cd 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -154,7 +154,11 @@ smb2_get_credits(struct mid_q_entry *mid) { struct smb2_sync_hdr *shdr = (struct smb2_sync_hdr *)mid->resp_buf; - return le16_to_cpu(shdr->CreditRequest); + if (mid->mid_state == MID_RESPONSE_RECEIVED + || mid->mid_state == MID_RESPONSE_MALFORMED) + return le16_to_cpu(shdr->CreditRequest); + + return 0; } static int diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c index 0dab276eced8..6f937e826910 100644 --- a/fs/cifs/transport.c +++ b/fs/cifs/transport.c @@ -784,17 +784,8 @@ static void cifs_compound_callback(struct mid_q_entry *mid) { struct TCP_Server_Info *server = mid->server; - unsigned int optype = mid->optype; - unsigned int credits_received = 0; - if (mid->mid_state == MID_RESPONSE_RECEIVED) { - if (mid->resp_buf) - credits_received = server->ops->get_credits(mid); - else - cifs_dbg(FYI, "Bad state for cancelled MID\n"); - } - - add_credits(server, credits_received, optype); + add_credits(server, server->ops->get_credits(mid), mid->optype); } static void -- 2.19.1