From patchwork Fri Oct 13 11:58:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 152555 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1836077vqb; Fri, 13 Oct 2023 05:01:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGDfiopguEh5bRFemnf+HYMpQQs4sswFCrwdOeTRiEQnK+3i4LkKP+SxobhbbgV2byiSUYu X-Received: by 2002:a17:90a:e7c8:b0:27d:193f:2130 with SMTP id kb8-20020a17090ae7c800b0027d193f2130mr5472518pjb.3.1697198506173; Fri, 13 Oct 2023 05:01:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697198506; cv=none; d=google.com; s=arc-20160816; b=AM1EePXHaui9EHMuYCvCG2aqOfhkFo9ijmEfMSc/4CfHcTUuSmb3+ECQo1u1/Y0GFE AENM7x3sVIaClh0qtKMcg2+aKhpzLuiIdqwd0MlbpKo8tcCWEesMg0Fm2eOTiT5AXLFn XAlkj3uFYrPk7gkOFKbcmv3pTczhTg8Ke7uBGv6Q6qn6xD+i+0DES4eVSQFTUWDw4rYb qqWBtuax76GjxJqVaef51L+HH0RKPNlKTAzpeFDHmjSvI7CXOrRd+kG5/2CyiCMK8t03 FsCdvyjmBnhCsZy1Oig46H7umECum//WOqDbVmz9Ep55WOkjppzf2cs1AugkKkINegeo qWXQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=R/Sw9FfTZe1474Cz8POWQbBaAm75ih+JhaEBLGhnX98=; fh=jK9ixGRUU8raHpPCWxwbiA62zUtZcZpLBtwcIoKuB+A=; b=otf5Hxrp8dkE7MYqTvOGtfgJ+eJAIDwI36qLU4GcoY2D87xhSJOTK9ngZSFfIe387S idm1zgYs9DqgwkFe0akzOuqYagPGc6xpZrhyGR6w7Zfcd4dbgLj8QFHdH/fhpsbMhfZb NQmGjz7nZV9otRl8CSiiSZsTZsB+gASvLKjZ98aKUJ/FSmIXcJVSMAmDwvre6+gtqPuA gSgLYGK3PbOwoeWRZoLZiow7+VipD64p/0eGvBaG1YQd4rV1x8hkYPC6kQNx0wDalum5 TImY3/BBJD53LKrGqjLOsERb/j+NO79O+2543sJZpaIGRCZ51IwU9DQodLtMIp77GawS AfMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ovliKqTX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id ce13-20020a17090aff0d00b002792831692csi4320472pjb.58.2023.10.13.05.01.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 05:01:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ovliKqTX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id CC88C805F5E1; Fri, 13 Oct 2023 05:00:37 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231656AbjJMMAO (ORCPT + 19 others); Fri, 13 Oct 2023 08:00:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231522AbjJML7s (ORCPT ); Fri, 13 Oct 2023 07:59:48 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7104F10D8; Fri, 13 Oct 2023 04:59:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 281D9C433CB; Fri, 13 Oct 2023 11:59:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697198378; bh=rCN4+iCoVX4jAGs7s+XIp9Rriuj5msPrP6NA95JLYbU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ovliKqTXYm9ZYVDaU9YCJen8c0uPB5I5KkvcUh/pIuFXCeqwgg0J9HJoZqsXWgoZT RKOrBm+E/4wowCXIiQA9tImmtOtIThJHQVRpdXzcHG2aFHZEHMl9I4cdixYdhZp+ha r3y2S2qPXMXFG3RYOPUEWfjb1P+OZGnxQQWX1p7C+2Q5V8yfAjIQNYU9g9Ti5OKjhO BZXFXH2jN1uME3IdN+JHHE8EXjk1JCkYI+vS1NsiVa/wrGUA70vjCm+/WvNM6+oPSy yJ/C+1ku0C1YknO82v7AzPqK41BYopgsZ3QFQ3KXIH1rg9WCF6L+4W6OfS/WKU8gAY bwtQM7d7Nq/zw== From: Frederic Weisbecker To: LKML Cc: Catalin Marinas , Boqun Feng , Joel Fernandes , Josh Triplett , Mathieu Desnoyers , Neeraj Upadhyay , "Paul E . McKenney" , Steven Rostedt , Uladzislau Rezki , rcu , Christoph Paasch , stable@vger.kernel.org, Frederic Weisbecker Subject: [PATCH 10/18] rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects Date: Fri, 13 Oct 2023 13:58:54 +0200 Message-Id: <20231013115902.1059735-11-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231013115902.1059735-1-frederic@kernel.org> References: <20231013115902.1059735-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Fri, 13 Oct 2023 05:00:38 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779641621082722950 X-GMAIL-MSGID: 1779641621082722950 From: Catalin Marinas Since the actual slab freeing is deferred when calling kvfree_rcu(), so is the kmemleak_free() callback informing kmemleak of the object deletion. From the perspective of the kvfree_rcu() caller, the object is freed and it may remove any references to it. Since kmemleak does not scan RCU internal data storing the pointer, it will report such objects as leaks during the grace period. Tell kmemleak to ignore such objects on the kvfree_call_rcu() path. Note that the tiny RCU implementation does not have such issue since the objects can be tracked from the rcu_ctrlblk structure. Signed-off-by: Catalin Marinas Reported-by: Christoph Paasch Closes: https://lore.kernel.org/all/F903A825-F05F-4B77-A2B5-7356282FBA2C@apple.com/ Cc: Tested-by: Christoph Paasch Reviewed-by: Paul E. McKenney Signed-off-by: Joel Fernandes (Google) Signed-off-by: Frederic Weisbecker --- kernel/rcu/tree.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index a83ecab77917..4dd7df30df31 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -3389,6 +3390,14 @@ void kvfree_call_rcu(struct rcu_head *head, void *ptr) success = true; } + /* + * The kvfree_rcu() caller considers the pointer freed at this point + * and likely removes any references to it. Since the actual slab + * freeing (and kmemleak_free()) is deferred, tell kmemleak to ignore + * this object (no scanning or false positives reporting). + */ + kmemleak_ignore(ptr); + // Set timer to drain after KFREE_DRAIN_JIFFIES. if (rcu_scheduler_active == RCU_SCHEDULER_RUNNING) schedule_delayed_monitor_work(krcp);