Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3899911pxv; Mon, 19 Jul 2021 11:28:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy55k3ssUKUhnas2syoa+Qn8nHA5zCG9+gon5M+21mVsAX+ZFoXivPfGCTVr7daL7ZPdljS X-Received: by 2002:a92:c7d0:: with SMTP id g16mr17650743ilk.278.1626719334118; Mon, 19 Jul 2021 11:28:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626719334; cv=none; d=google.com; s=arc-20160816; b=grpaQ5fRGbNVIfr9P09yLxwfzdPqPaU82prAkjr7iYFnfrFHJqU/BnPKsP3L8tQ43j HrXuJeif0HeBp9WfckgATSd7F0h0OwqSBzPLlQSOzakjUJY0zsEYKn5hFqBgdC72e5/P 8TgNAKLDC23dOKAgnN/AeZjrNzWCHwFPrzbLQaMd1NZMBvVB3MWVA2k8ZS+WCnEhub29 ufVn+D8DY3lu69FDTWo+l4aKzKuizttuvmXXg+nZUg4ulzBahXPUCZ7XdowQN6bEC1lC LZpVykhwdhKRbol2v04DPd2fyLGVLosL25GYaE09T7wNu59zyYhjrTAJUuJAiF+XBPqY aJpw== 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=SjHjyznY1PprKWm+Rs4lBbstWaa3r9BzUXkQSgFLSzM=; b=LkeqvCK63LgYVZwMd9PYoXi2uZAi91MYfpsj9CLmAGbrokTVzv9odnk/1MYBXWX/eM NB5z7k+Owd6ebl4drAIV45vfpyGlgI+TisxoOm5B87ah/mlg91vCyeuqCfA6XPi47yBP BMR2IGZQjzsUHbh5PyvB+ocfjM1FACEtRvT+WRVGqqC23jRV1eN60Lee1zu2JiD6RwyJ wACWiqZ90hydaYjjVHC+07eNBPzEHbyUIiqYhrvHGjjbHwQM1JQgfNia2C012GqLF4zP 7VZlvbulFGkI2/crhbTlgK3Fu5aFfynBf1GsENfC5WUEZZHqspW0x1PJkR500HeuDYYA aEUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fDZT5szB; 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 q10si24342564ilu.60.2021.07.19.11.28.42; Mon, 19 Jul 2021 11:28:54 -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=fDZT5szB; 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 S1379728AbhGSRfi (ORCPT + 99 others); Mon, 19 Jul 2021 13:35:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:47934 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348464AbhGSPtb (ORCPT ); Mon, 19 Jul 2021 11:49:31 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A32CB61627; Mon, 19 Jul 2021 16:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626712106; bh=7QT1U953bYvLCzbE4HFNoLoGBw5K7L8I4mTsCqrarsk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fDZT5szBT3q/qvsN5YwZNsaIRvv+MIloTVCkhzlyvsbLv4Ezx86QR5b1wg+tw1ySo AtlatJskD2HLsG6EqRkSH9SAiwgJMAx6/pF4tHs3Sum5gZhhQ/3gYMLMrSljdk11E5 jHxz/+AhKPDqNz7keiiFwcEWMyE0EnZ9fsgr2UMk= 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.12 252/292] firmware: arm_scmi: Reset Rx buffer to max size during async commands Date: Mon, 19 Jul 2021 16:55:14 +0200 Message-Id: <20210719144951.227448524@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.514164272@linuxfoundation.org> References: <20210719144942.514164272@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 cacdf1589b10..9485e0f1f05f 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -268,6 +268,10 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo, return; } + /* 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); info->desc->ops->fetch_response(cinfo, xfer); -- 2.30.2