Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp4031651rdg; Wed, 18 Oct 2023 12:49:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFAXN0ewMFCHVnOXEAVY9TrISDQRyqn/74co5vslfFOaGjgk6fvgc4+bEddl6Pdnm255wqh X-Received: by 2002:a05:6a00:230b:b0:6bd:254a:8876 with SMTP id h11-20020a056a00230b00b006bd254a8876mr72800pfh.23.1697658555424; Wed, 18 Oct 2023 12:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697658555; cv=none; d=google.com; s=arc-20160816; b=icTpUab/jUYKDCvLMhNvHFEF9zeRVL9VuqOCm8/Hs5ie6vcSCIk8a6v6PPZ/ud60DH l2/cqDAgKPGuGQAnctpj0SgGxLAoPYxI/iBNBPQGNBE+ZoVEBrx+RZS/wJy2SRBrxEo8 r+xBSt3sICGhhz8d9OIwYUAwdwcQe8pcg6t6t/P8RdgUlHr03qcS0cQBaOoQecZeK7GU oeSGhf2o1m9WOgOFgqFkt+eAPmlvfGeaplZSpznsbWBbJCkhI3W/sUU1dG6m3J8RbqY7 ZAgTXRXI8Mhh+UwCexWPksPFE68YSK21GMjs0YohKZX26IbXf+4Qopp+gcFP2XkYlfQ0 OSEg== 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=/IVYZ1A9AUMVA/ZaFju9t9TXf8Tzupe5AWHRYxLqdYI=; fh=M4e5elwlmv1h793o3/1JJR/oUsyg4p6mL9PUF0hbIQs=; b=IPOhKp4PXs2AimTEiiudB2KP6Zb89J+aaRvPSvodtCWXp9Qq1LiYLgpQsquGRFjmNg wcGxs/JTftBhp7hRzxYEttyrK0TUetixuG/Ke9Du1+x/xvR++YkFGPQbKaEByyjC7nnY tDxbCm1RiTSntrPyEvsfy3zVnZAhMRrKkvfcAkahutj+ezKpzzBVvthugqfInoEsDMdB 1Ab2tcH/pW2amLi8mf++BDPbXxTVsosH6E+5xVhBMwLbY22p1aw7/v/anYjiome4YYQf n7ZYLExsg7PeD9BjchsRBLQxDWRklNLdGGs84XUJi1N7KvDKcE261m5i/IvB50iA8o0q 2yNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=Ln+uLWOU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id d22-20020a056a00199600b006bd82e2d31dsi4784074pfl.384.2023.10.18.12.49.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 12:49:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=Ln+uLWOU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 7F2B181BEEB5; Wed, 18 Oct 2023 12:49:14 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231775AbjJRTtE (ORCPT + 99 others); Wed, 18 Oct 2023 15:49:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231823AbjJRTsu (ORCPT ); Wed, 18 Oct 2023 15:48:50 -0400 Received: from smtp-relay-canonical-0.canonical.com (smtp-relay-canonical-0.canonical.com [185.125.188.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7741F133; Wed, 18 Oct 2023 12:48:47 -0700 (PDT) Received: from smtp.gmail.com (1.general.jsalisbury.us.vpn [10.172.66.188]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-0.canonical.com (Postfix) with ESMTPSA id 001884166C; Wed, 18 Oct 2023 19:48:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1697658523; bh=/IVYZ1A9AUMVA/ZaFju9t9TXf8Tzupe5AWHRYxLqdYI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ln+uLWOUDIQFyId+viJZjW4JnD553+0BKtsBfFdk/KnQt7Hhkvc/iQP2SWfH5Li5K UbWSRfa61088kygrFctzraqM9+DXZZirJWONz2zvScjX9kCFerhGDxQnGwbXS4X7Gd EtUANnPo4ReoSScFYc5VRQMj96RBO5ZbC4VyeeeRkA+Oz0qXvuj7BixudGt5rIuL+F i6Z6DOG7TW0gdcPO50IIYE986ZHPP30fMB023pbYOc51fTIOQMQlN1/+K+Ez/6d6Ns C3LUmO2zwm7HiTGtpVQpml7g9mxXlDOfK54/31CayVxUegDscZOce2Sr9wEz62IKx8 uHZnZt+OKr6Dg== From: Joseph Salisbury To: LKML , linux-rt-users , Steven Rostedt , Thomas Gleixner , Carsten Emde , John Kacur , Sebastian Andrzej Siewior , Daniel Wagner , Tom Zanussi , Clark Williams , Pavel Machek , Joseph Salisbury Cc: Ido Schimmel Subject: [PATCH RT 04/12] debugobject: Ensure pool refill (again) Date: Wed, 18 Oct 2023 15:48:25 -0400 Message-Id: <20231018194833.651674-5-joseph.salisbury@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231018194833.651674-1-joseph.salisbury@canonical.com> References: <20231018194833.651674-1-joseph.salisbury@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Wed, 18 Oct 2023 12:49:14 -0700 (PDT) From: Thomas Gleixner v5.15.133-rt70-rc1 stable review patch. If anyone has any objections, please let me know. ----------- The recent fix to ensure atomicity of lookup and allocation inadvertently broke the pool refill mechanism. Prior to that change debug_objects_activate() and debug_objecs_assert_init() invoked debug_objecs_init() to set up the tracking object for statically initialized objects. That's not longer the case and debug_objecs_init() is now the only place which does pool refills. Depending on the number of statically initialized objects this can be enough to actually deplete the pool, which was observed by Ido via a debugobjects OOM warning. Restore the old behaviour by adding explicit refill opportunities to debug_objects_activate() and debug_objecs_assert_init(). Fixes: 63a759694eed ("debugobject: Prevent init race with static objects") Reported-by: Ido Schimmel Signed-off-by: Thomas Gleixner Tested-by: Ido Schimmel Link: https://lore.kernel.org/r/871qk05a9d.ffs@tglx (cherry picked from commit 0af462f19e635ad522f28981238334620881badc) Signed-off-by: Joseph Salisbury --- lib/debugobjects.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 579406c1e9ed..4c39678c03ee 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -590,6 +590,16 @@ static struct debug_obj *lookup_object_or_alloc(void *addr, struct debug_bucket return NULL; } +static void debug_objects_fill_pool(void) +{ + /* + * On RT enabled kernels the pool refill must happen in preemptible + * context: + */ + if (!IS_ENABLED(CONFIG_PREEMPT_RT) || preemptible()) + fill_pool(); +} + static void __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack) { @@ -598,12 +608,7 @@ __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack struct debug_obj *obj; unsigned long flags; - /* - * On RT enabled kernels the pool refill must happen in preemptible - * context: - */ - if (!IS_ENABLED(CONFIG_PREEMPT_RT) || preemptible()) - fill_pool(); + debug_objects_fill_pool(); db = get_bucket((unsigned long) addr); @@ -688,6 +693,8 @@ int debug_object_activate(void *addr, const struct debug_obj_descr *descr) if (!debug_objects_enabled) return 0; + debug_objects_fill_pool(); + db = get_bucket((unsigned long) addr); raw_spin_lock_irqsave(&db->lock, flags); @@ -897,6 +904,8 @@ void debug_object_assert_init(void *addr, const struct debug_obj_descr *descr) if (!debug_objects_enabled) return; + debug_objects_fill_pool(); + db = get_bucket((unsigned long) addr); raw_spin_lock_irqsave(&db->lock, flags); -- 2.34.1