From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9EE7C433FE for ; Fri, 18 Feb 2022 13:34:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235747AbiBRNeQ (ORCPT ); Fri, 18 Feb 2022 08:34:16 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:40090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232474AbiBRNeN (ORCPT ); Fri, 18 Feb 2022 08:34:13 -0500 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC99736330 for ; Fri, 18 Feb 2022 05:33:56 -0800 (PST) Received: by mail-lf1-x12a.google.com with SMTP id f37so5465549lfv.8 for ; Fri, 18 Feb 2022 05:33:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=yBG3V/eig43ynBk5iiTnHrDbLKGL4LoM/wYLee8FQvQ=; b=b9UM2dxgLaVQjKx09mKUZcKnQ5FmD1WUxECvpsjrYzpnOTEWmIRvSotU7JPHAeWA+t ctqIRJPNPYxj8kpJL1wHF5zV4jXzna1/R3759oSi4h8mV2EkRRTPpgi8/kJnUbaHRLyy cA26oMJwDiFAPyc7TVPD4cFXPMNuKZA+PcWAivtkoByEGXANmZwJd4W6mKGmiBShWPP9 gemCGNvATWt7Z+n/1T+IE4JXSozCNgVoHzPqB00b/rJX5fGjoGbAGDvW/EjluUBXdziz FtOn2cMqkFi18KLo+LQ6hrz6FnGP4O766oLd5Y/W1VntzVEmAf00mpiKV7ToAhCV0LCi Wwew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=yBG3V/eig43ynBk5iiTnHrDbLKGL4LoM/wYLee8FQvQ=; b=UvwEFifAJaCXTDGsqs3YrIii9ah+fCmdW99QM6befiDJdlCq5sPsw1a5ra3qVeOpvI R2yN7+gkktXtvPv5km7Qe8qW1pRnI3FME5WI9cn1pBTqsikgdgahFmsMbNH6qWiKCaIh j1s525JAYgpD9otgysrRTkjUQTIxISTEQ5iwNM+OvA3z/pU5WKdOPVmplLnBrgAnxJXL 2uPAji4hh+Y0eA+wXEtT1OfkJ3SpoWkEXlauhpN59qH2XKjpyzhSNN2UcWLf2HRI2Tst TpmK62fy1VCPqpoN26RevIssWFNqToXsjlinkIyT+F21XWD847mS1iizn5HBd93mIx3D hxcg== X-Gm-Message-State: AOAM533w7nIC3laYuwNcHhPZqgfjVB4+5594aUJPFenGdEDgcueNoFm1 HGPGusaSp0AyAQui9OF1dqrW1uz2/CHQZw== X-Google-Smtp-Source: ABdhPJwoar327tKUyukECeIPFAPFswuL2KC74HU5i3o7bgqnlFODh3dymJ3/E0TcDl01f3KZJueEqg== X-Received: by 2002:a05:6512:39d5:b0:439:750e:4541 with SMTP id k21-20020a05651239d500b00439750e4541mr5278628lfu.497.1645191234732; Fri, 18 Feb 2022 05:33:54 -0800 (PST) Received: from dabros-l.roam.corp.google.com ([185.157.14.92]) by smtp.gmail.com with ESMTPSA id h26sm32256lfp.217.2022.02.18.05.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Feb 2022 05:33:54 -0800 (PST) From: Jan Dabros To: linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, jarkko.nikula@linux.intel.com, andriy.shevchenko@linux.intel.com Cc: wsa@kernel.org, rrangel@chromium.org, upstream@semihalf.com, jsd@semihalf.com, kernel test robot Subject: [PATCH -next] i2c: designware: Fix improper usage of readl Date: Fri, 18 Feb 2022 14:33:48 +0100 Message-Id: <20220218133348.628962-1-jsd@semihalf.com> X-Mailer: git-send-email 2.35.1.265.g69c8d7142f-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kernel test robot reported incorrect type in argument 1 of readl(), but more importantly it brought attention that MMIO accessor shouldn't be used in this case, since req->hdr.status is part of a command-response buffer in system memory. Since its value may be altered by PSP outside of the scope of current thread (somehow similar to IRQ handler case), we need to use READ_ONCE() to ensure compiler won't optimize this call. Fix also 'status' variable type to reflect that corresponding field in command-response buffer is platform-independent u32. Signed-off-by: Jan Dabros Reported-by: kernel test robot --- drivers/i2c/busses/i2c-designware-amdpsp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-designware-amdpsp.c b/drivers/i2c/busses/i2c-designware-amdpsp.c index 752e0024db03..c64e459afb5c 100644 --- a/drivers/i2c/busses/i2c-designware-amdpsp.c +++ b/drivers/i2c/busses/i2c-designware-amdpsp.c @@ -160,9 +160,10 @@ static int psp_send_cmd(struct psp_i2c_req *req) /* Helper to verify status returned by PSP */ static int check_i2c_req_sts(struct psp_i2c_req *req) { - int status; + u32 status; - status = readl(&req->hdr.status); + /* Status field in command-response buffer is updated by PSP */ + status = READ_ONCE(req->hdr.status); switch (status) { case PSP_I2C_REQ_STS_OK: -- 2.35.1.265.g69c8d7142f-goog