Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3839977pxv; Mon, 19 Jul 2021 10:00:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwK8Eq1zR2cqFOkQdrupJZT+hHcscskQDE+r1NQc1f0NgAqGVVEsFoWz3zlwSeBQltfHDzO X-Received: by 2002:aa7:c14e:: with SMTP id r14mr35045620edp.251.1626714015981; Mon, 19 Jul 2021 10:00:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626714015; cv=none; d=google.com; s=arc-20160816; b=PGZ/R3Ko8AWFvE4qsXzxBAQM+bBn8slp+oRB8OdF+jSkXQnTTpfjO5HVT3wb/I1KOw 0i6gAd5P63xLfU+6O6HFM0MjuNx7robxOVJvpOyJILyUyFgMNAqadbcMV5wljI96bduH om3QBzev7/s26LHt/BAcphfwagQaSF6VeaTRF+/WWwQhwmvThcb4lkc5hd6477av5p2C CCdTYzjC6ZbnitGA5ofkB8DpMX4AKvEwtAazTO6QCTdkX0mD/9z19RMOG9Q4syTrmjW4 YKYMNnrN1QoDaJskxhJYsk/ZPs+jRTZSRbFflPA2P4cT3V+Jzjm9maDSInDdgfsRbSAX vWhA== 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=Tu6lO3CG36DLflZiJ/qLwcylB+ZqC9O90AaA9bRnYTs=; b=VL2CdYEM9WEDhk/GRRQhtUm3fpdA5iS1gZpbl3xRlg64jtQI9V1IHhtr+t8YnFFg1v 97q1AjO2kfYLHq+zhvLiy+DWxy4Cqrw1po9yLu0EPSJsyhdydrVRXYuMO8xrKwMftafD 4bHITW8rrgSwIS1he16H4stJ2dtJJlwZHz63l6BPtUmE+h7mL5OY3ECAbg0Nt2r+YDcT qyswRRI8kaxRTS+mmf7z0zO4f2qB8ibpKFspR4rHw4n0zxBAqsyfbrHf2bnmi/iT/1ls 5rtg5g9VsM7m/0N/ee10eEr1vVyba+XC4O9BU4dpPhWKIQKRB84d9jHD7LLUaYc0KEDf jSiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="leOnoA5/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i17si23361546edv.516.2021.07.19.09.59.53; Mon, 19 Jul 2021 10:00:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="leOnoA5/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S1353659AbhGSQRJ (ORCPT + 99 others); Mon, 19 Jul 2021 12:17:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:47456 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344581AbhGSPKr (ORCPT ); Mon, 19 Jul 2021 11:10:47 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id B88D761279; Mon, 19 Jul 2021 15:51:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626709884; bh=uBaSx1lWFnDdSLBAAROd3n+w/eciqLPZR3T7VwOFT7U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=leOnoA5/gn3LPSbIqlq6aM/AhxF0xR23L/FMnTEhxs3uGc45HyDLaInw+ssx5RO3N itwsnT2Md42UsZTof0K0Jx1NHTsTRioE/LlEc8KbAHAEFUNv792hKAe6oxfzh4xhQC C/5Oy168htwhNz5H6huJYS3bpy77hAF+97uuKBAU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Cristian Marussi , Sudeep Holla , Sasha Levin Subject: [PATCH 5.4 129/149] firmware: arm_scmi: Reset Rx buffer to max size during async commands Date: Mon, 19 Jul 2021 16:53:57 +0200 Message-Id: <20210719144931.866666804@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144901.370365147@linuxfoundation.org> References: <20210719144901.370365147@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Cristian Marussi [ Upstream commit 0cb7af474e0dbb2f500c67aa62b6db9fafa74de2 ] During an async commands execution the Rx buffer length is at first set to max_msg_sz when the synchronous part of the command is first sent. However once the synchronous part completes the transport layer waits for the delayed response which will be processed using the same xfer descriptor initially allocated. Since synchronous response received at the end of the xfer will shrink the Rx buffer length to the effective payload response length, it needs to be reset again. Raise the Rx buffer length again to max_msg_sz before fetching the delayed response to ensure full response is read correctly from the shared memory. Link: https://lore.kernel.org/r/20210601102421.26581-2-cristian.marussi@arm.com Fixes: 58ecdf03dbb9 ("firmware: arm_scmi: Add support for asynchronous commands and delayed response") Signed-off-by: Cristian Marussi [sudeep.holla: moved reset to scmi_handle_response as it could race with do_xfer_with_response] Signed-off-by: Sudeep Holla Signed-off-by: Sasha Levin --- drivers/firmware/arm_scmi/driver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 11078199abed..7b6903bad408 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -370,6 +370,10 @@ static void scmi_rx_callback(struct mbox_client *cl, void *m) xfer = &minfo->xfer_block[xfer_id]; + /* rx.len could be shrunk in the sync do_xfer, so reset to maxsz */ + if (msg_type == MSG_TYPE_DELAYED_RESP) + xfer->rx.len = info->desc->max_msg_size; + scmi_dump_header_dbg(dev, &xfer->hdr); scmi_fetch_response(xfer, mem); -- 2.30.2