From patchwork Fri Sep 22 15:37:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Fitzgerald X-Patchwork-Id: 143568 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5775210vqi; Fri, 22 Sep 2023 11:08:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGrIln7wawoxP6ScXqUI9Aur/hDPn1XDMBoSi9NvDutEWwo/z2nu+NWILdYCGekU0vz8hZG X-Received: by 2002:a05:6358:9917:b0:13f:2833:bf41 with SMTP id w23-20020a056358991700b0013f2833bf41mr395826rwa.23.1695406085767; Fri, 22 Sep 2023 11:08:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695406085; cv=none; d=google.com; s=arc-20160816; b=WWKa+QBHml6Og3KkyhAkgLEGYvzOoGi+zK7wNy+6eu7Y2F2wmwp4CyBAFe4ON0hjR0 BRpegCcszWDkWbUnOdcY0bnSbEOoxCcUGP+sa6mjCCmtd/qbsotu44WobYOsTG4zYgXF UE3nTmFpJ6l02yVfGDtKK7dkYc4imiO01Xq0PBj1GetSFMFUjpKux0XAt8fEg4aAaD4w VaHKqBKnjGsFMHcCGsN14Nc2Xh5m4QHWE7OXsN5jB0gafRRZfjzrNGsFCy5ywetOPYnB ZrPDIjx6D0glSlwXqxLUAkV2iEYqNRc/s2v/dRDlM3uFayxciLf/V9I8qyku/zWeXodU HaAA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=nKhM77gqNSy8Ek4opOM5KZqnhQBhQZLQUyl0L4NNigk=; fh=CpWGL0kPt/6lZb0GWvNT7y2IVz7KXjXP5Oh3nfa9mcg=; b=nY5UQXiRqOOBwns5NNIr535HkofwkMkmjetyTqcrLGH1JZIJuz7OOqChQ0pjeS6Poe k3uNmbaVvB2/B0kGXuDCf5YOLtkchyzhbqUJ1OltTrnACwibtmjvOAZ9rXL46sD3w3vc KOrMfcghfyIMFGLK1MTcCvWk9Av2Z1n/tX1+HMXAoeWeu7W17aYnpX4gRIBZlrSGhXrJ fyl/s5dKShz/ZmBmabAHN54I2/QAWbotgSxVDGXSVfBzbCo8VTN4ZuaZkGJqp8nozkwB Pl3Ad99fwSISG1ZhN4FS8MWGfA3UVsbeY3YKicDSlu1abyXKPbo5PL6boyBvF6/ytfty LC9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=gEOh2xPk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id k12-20020a6568cc000000b00577a073a80fsi4182925pgt.293.2023.09.22.11.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 11:08:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=gEOh2xPk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id D790A803DAF0; Fri, 22 Sep 2023 08:37:57 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231847AbjIVPh1 (ORCPT + 29 others); Fri, 22 Sep 2023 11:37:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231604AbjIVPh0 (ORCPT ); Fri, 22 Sep 2023 11:37:26 -0400 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7329122 for ; Fri, 22 Sep 2023 08:37:19 -0700 (PDT) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 38MC0AqK016187; Fri, 22 Sep 2023 10:37:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h= from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding:content-type; s=PODMain02222019; bh=n KhM77gqNSy8Ek4opOM5KZqnhQBhQZLQUyl0L4NNigk=; b=gEOh2xPkoFKemoYtx r+m6uFs4NSKVCBXN7bEgk99Uubibfw2i4FaAklPUKuA3+LzBrplnWRqlZaHpd64p vfp98uVmDLJD/blv8Oxi//jC2DjVyLG0FDdKOJNcIxbx5iEMbUEXv6qgYQz2Vyjl cI9pELGbIAS7gxBPPdc8A/idZfmhtLvVVanVFYpcLExUi6qsPWCX5+DEToExwV61 6Bfg9zZwRTw7mQW+qGrXrkjxzXKJwsCQRIgok9LFDK7RSwVBEepKOBOd9J70xNwU qtEFMjr1sVoUb5YdRxJ7Eum4asLHpEW0QU/V1+J7sp+OlT/2DCWWzMwUzN9RXYRo pZfCA== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3t8tvhsdan-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Sep 2023 10:37:17 -0500 (CDT) Received: from ediex02.ad.cirrus.com (198.61.84.81) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.37; Fri, 22 Sep 2023 16:37:15 +0100 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by anon-ediex02.ad.cirrus.com (198.61.84.81) with Microsoft SMTP Server id 15.2.1118.37 via Frontend Transport; Fri, 22 Sep 2023 16:37:15 +0100 Received: from EDIN4L06LR3.ad.cirrus.com (unknown [198.90.238.129]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id B363911AA; Fri, 22 Sep 2023 15:37:14 +0000 (UTC) From: Richard Fitzgerald To: CC: , , "Richard Fitzgerald" Subject: [PATCH] regmap: rbtree: Fix wrong register marked as in-cache when creating new node Date: Fri, 22 Sep 2023 16:37:11 +0100 Message-ID: <20230922153711.28103-1-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: -zK9O-u8XVrb3s-yA7IUBGANnrLMlZ9K X-Proofpoint-GUID: -zK9O-u8XVrb3s-yA7IUBGANnrLMlZ9K X-Proofpoint-Spam-Reason: safe X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Fri, 22 Sep 2023 08:37:57 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777762132144648720 X-GMAIL-MSGID: 1777762132144648720 When regcache_rbtree_write() creates a new rbtree_node it was passing the wrong bit number to regcache_rbtree_set_register(). The bit number is the offset __in number of registers__, but in the case of creating a new block regcache_rbtree_write() was not dividing by the address stride to get the number of registers. Fix this by dividing by map->reg_stride. Compare with regcache_rbtree_read() where the bit is checked. This bug meant that the wrong register was marked as present. The register that was written to the cache could not be read from the cache because it was not marked as cached. But a nearby register could be marked as having a cached value even if it was never written to the cache. Signed-off-by: Richard Fitzgerald Fixes: 3f4ff561bc88 ("regmap: rbtree: Make cache_present bitmap per node") --- drivers/base/regmap/regcache-rbtree.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/base/regmap/regcache-rbtree.c b/drivers/base/regmap/regcache-rbtree.c index db716ffd083e..3db88bbcae0f 100644 --- a/drivers/base/regmap/regcache-rbtree.c +++ b/drivers/base/regmap/regcache-rbtree.c @@ -453,7 +453,8 @@ static int regcache_rbtree_write(struct regmap *map, unsigned int reg, if (!rbnode) return -ENOMEM; regcache_rbtree_set_register(map, rbnode, - reg - rbnode->base_reg, value); + (reg - rbnode->base_reg) / map->reg_stride, + value); regcache_rbtree_insert(map, &rbtree_ctx->root, rbnode); rbtree_ctx->cached_rbnode = rbnode; }