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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89AA8C3ABBC for ; Tue, 6 May 2025 14:45:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B6526B000A; Tue, 6 May 2025 10:45:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 263FF6B0082; Tue, 6 May 2025 10:45:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 12B906B0085; Tue, 6 May 2025 10:45:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E76586B000A for ; Tue, 6 May 2025 10:45:36 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 310C51404D6 for ; Tue, 6 May 2025 14:45:37 +0000 (UTC) X-FDA: 83412756714.14.C535DB1 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf23.hostedemail.com (Postfix) with ESMTP id 71303140002 for ; Tue, 6 May 2025 14:45:35 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=hnaTGXRj; dmarc=none; spf=pass (imf23.hostedemail.com: domain of groeck7@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=groeck7@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746542735; a=rsa-sha256; cv=none; b=I6SM79MRRYkZ0v/GKDtahHfBe4I+NuDSJM4G6DLKkFNpVWQonVGuJo19I7XLPEl4d7TCNh Tqx6sYyETMt53s03bAYQO0hmWRvDFkFJtTPOZxr8/Eo16m0zdzrJ7WAjjVZMbLTbKq6Rcv uu4npND8YfmtY21lAl4pH49ZLYjtZ08= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=hnaTGXRj; dmarc=none; spf=pass (imf23.hostedemail.com: domain of groeck7@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=groeck7@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746542735; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=lJgYZIz4fBAZgGi+cbkSlJEx6wDoPnaEG1+0PCFG2m4=; b=5i/3/qaCZ2mmrMCcQqu8AHo2Ua19trMHK2bGkdva5Lhe//Dc0ITNygg/6jlBz5Au4JwoRL f/edZlYiEuZ18YMX8UYRUlNUYIvAce0zhwJkxwI0VPky0GPNQY21DDhmJnouzhBSx84SJb cip3k9U7JbU9f2ks8s1vdJTpr5gaLsM= Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2241053582dso89046765ad.1 for ; Tue, 06 May 2025 07:45:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746542734; x=1747147534; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:from:to:cc:subject:date:message-id:reply-to; bh=lJgYZIz4fBAZgGi+cbkSlJEx6wDoPnaEG1+0PCFG2m4=; b=hnaTGXRjY+Ez9yIyH7kmUMxVEA/onX4q9lLBEnVg7Rx95LemxlrXE7d/0RcLuRgFNk xXTyeVHtzVL+b1IEFxhJPhLDQm9R6hDQYWqO+JF+AcPSXW8K5vsx1Q7uXQPyAqpSVhmv xmW3pnjJrQpDYn8mMd9f8eXXjC+YV6+xwctO5soFb2n9Ie7xEEzQVTk8lHWyx025j09W aG+oEkSzwp3fmvDOxtOyMFA7qM2yNWPd4pbKqXSxOOWU1j5ekME4wx7m5x/KC87JRGND 7+w1FjQRs9fvZ2Zzh1rb2wzW3fo/IKs0M2V+kP/QA4GYnp+UDJ55j4DeIFqcHfbbSU7e LNDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746542734; x=1747147534; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lJgYZIz4fBAZgGi+cbkSlJEx6wDoPnaEG1+0PCFG2m4=; b=AOHRfY613dpA6b8xLupGv51Zc/8kvSmN6psk6srnhhQg4UQsOYZG1Kk0UJhF6lY8kJ PSlJ4TmntEbYGqeLn6pJRbnnjhAnpS4Fof0aztXRuo76OCQdDEE9noLiKfFqJrvrVbzR uUJAhqWqn9+Es03yFWMh843qVNyZzctdFyk1MyPNBdo92sKE4HnTAiJAcQqjqv80e9eI nAhtaw1uOZ2vBusOzq5TsVZhZAedqhb3PX2KYz3ZGyGRWhccHzXyerZxN7sI5Ol4tw5Q y3Skkbg69l1QFLxeNW2ICPa8UOfbqwHvVgOTIm07CGy7Fybs4G6ks/glb6tD1go5oh0Y q39g== X-Forwarded-Encrypted: i=1; AJvYcCWNrDrJ3qthTWzd5gn7pmITVOOnNFyzo8135ddVwhonQJmFQ+mNZw5f/LdHBXuSJ1QTZlDqH+lOEQ==@kvack.org X-Gm-Message-State: AOJu0Yymichax9O9mLCdnKKwguzoIkTERf9PTaOdqR7KrTy01FfsXJYr xclDFfKy5yZozIhRBrIdv7yiqhabS8rjFwQYv3WAXGlY15n2Vk7e X-Gm-Gg: ASbGnctrA1+rsN+/X7xe5Guq0TKwvw1vAND21lc8zYCgh55K3wKEPuZ+jn2Qwp1Bmlx 9MXa4RQ4S2MF9UxxYFu4GQUZ3IN5mmgHav7rwG0UsX40ekENaaRE73m6OwYvg1mHU+MeztSGAUd jJFiYGbnpGOks/N0tSTwvKpJBZpha610MMkd9FOgZxBPSMufYauJXtXJIBysUNoDHzDJK5JNJM1 JJ5Kp7WaxxfPKopg07HwzVttO55Q2X6V6CNWfTgnA8vKeFk8BGaGpYLR0t4cDsYlWuulBAPAOE0 SLJj2Hz6W0tpBdpUzGiq5WwAQndxSRGvlZKHQnFl9if5/UeCVQPbWdHa0MQxf0Y6 X-Google-Smtp-Source: AGHT+IH7DhWXw+Nw06LRBmzyc+Uoo0IKiFMI6q9a1xqv6nU8hVVLYfeQbemWe2K5N77Po+7ln46QWg== X-Received: by 2002:a17:903:18c:b0:220:e023:8fa6 with SMTP id d9443c01a7336-22e33135b52mr42552335ad.50.1746542734226; Tue, 06 May 2025 07:45:34 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:da43:aeff:fecc:bfd5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22e152326f7sm74607275ad.227.2025.05.06.07.45.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 07:45:33 -0700 (PDT) From: Guenter Roeck To: Christoph Lameter Cc: David Rientjes , Andrew Morton , Vlastimil Babka , Roman Gushchin , Harry Yoo , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Guenter Roeck Subject: [PATCH] mm: Fix up memory allocation tracing Date: Tue, 6 May 2025 07:45:31 -0700 Message-ID: <20250506144531.3434190-1-linux@roeck-us.net> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 71303140002 X-Stat-Signature: k63zha3xoen4w7wc5ase6ryh7idfmknj X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1746542735-186659 X-HE-Meta: U2FsdGVkX1+AcgUWC3rCgk9zwL6t/pcdxA7IxEPjR81/Z4445acO8pK93O4Ifu0DQVM5U+YRbhqzLmxM135ssHWuFurmfqu8oKnx6S3YxbdQsfObMzU+7H/iHHTH2ma2n758evBjZ6AU/6JUg1r7Ev9W4jqlef8JJ3WVYG/oY5gfFwBInDjCfYueiLlr+APQuaXF2Xw67nEmEwZfBcyaZ1bZNPDDfovAW23YPxtht6Brq95ya0gkx7Ky7DjzDp+Y2stzZf6ywcqzhoAJ1JhBZa/Ale7n/1TTAjsdtaqSb7oL2camMbaCrimOBC2E9yLI2+FravXr94IwEfOWREbP1umEiNcAinaKVejagbDKWfz+wpDsQIJMUbh5RSl2S9mOYOjpdBNh6X5klc9RFBdMxmKthbG0/kKpXrdHn1W4Actxm7PC7gPcKAxKXksC5gc2hj4vYLRV3Uf8nub7kv32oOnVH+Z9nTuH2n8mqnG3stGnQBHibOyJPs52VnrGD+QlbmTA5GDRfleX8y3qsrijIRGAPNklguJjZ1bgjzgHEsdobN3zPOl3Z1Zz9QUpSvNv222HTqQHxeCUDnpSqBsEWbyhelSPtg5FgNa2nQJNvbFijWCMSMn+0I5/hpnKqwjrpSzY1qw8HpHS3jAQkXYAZpIx1bap5x92jV1kOUM/FPAs24orpokQ9mSRNx5/RpLSKKCSXquyUOxRBgxU7AEf3m/u1H7+KWOIENvvnMaJWC+9R9cZNg2r9x6/Byid0wt0H3x8OEstaKi08prVglbm6TLDUo3GRg084Ag1OGftAWvy9p2iVBKK6GXDPQeoULF2Qwu86gOdik/y56ufN8bZvHyrW8wqUBp++BgdkcIhcpfGkOFWkxUD9+OQeXsAvBKkyjU9eQmbBzzSlq7/vzyHIUlV1eVi2m18RCN5XoCz6Hoe8AGR84hJfeYtzSb8f0eIyPHMAjy2/DR+QcC6AYx UGGyspdn Qxb+QA+/ub/5H78hRGB0y2MoP7KWj64SEY9yLM/G92EGUWaVfxWfRD64J/g1TK/Hs4Nk2Ax6uloR096A+H6UNX35ogk49kxmRag9YTJ8T2y57z5hpmyTM4ODTC6F5w5gm6dV0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: intcp_init_early() calls syscon_regmap_lookup_by_compatible() which in turn calls of_syscon_register(). This function allocates memory. intcp_init_early() is called well before kmalloc caches are initialized. As consequence, kmalloc_caches[] entries are NULL, and NULL is passed as kmem_cache argument to __kmalloc_cache_noprof(). While slab_alloc_node() handles this just fine, the trace code unconditionally dereferences it. This results in crashes such as Unable to handle kernel NULL pointer dereference at virtual address 0000000c when read [0000000c] *pgd=00000000 Internal error: Oops: 5 [#1] ARM Modules linked in: CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 6.15.0-rc5-00026-g5fcc9bf84ee5 #1 PREEMPT Hardware name: ARM Integrator/CP (Device Tree) PC is at __kmalloc_cache_noprof+0xec/0x39c LR is at __kmalloc_cache_noprof+0x34/0x39c ... Call trace: __kmalloc_cache_noprof from of_syscon_register+0x7c/0x310 of_syscon_register from device_node_get_regmap+0xa4/0xb0 device_node_get_regmap from intcp_init_early+0xc/0x40 intcp_init_early from start_kernel+0x60/0x688 start_kernel from 0x0 The problem is not seen with all versions of gcc. Some versions such as gcc 9.x apparently do not dereference the pointer, presumably if tracing is disabled. The problem has been reproduced with gcc 10.x, 11.x, and 13.x. Fix the problem by only dereferencing the kmem_cache pointer if it is not NULL, and pass a dummy parameter otherwise. Only add the check to __kmalloc_cache_noprof() since it is the only function known to be affected. The problem affects all supported branches of Linux. The crashing function depends on the kernel version, and some versions are only affected if CONFIG_TRACING is enabled. Signed-off-by: Guenter Roeck --- I only changed a single call of trace_kmalloc() because it is the only one known to be affected. I'll be happy to change the remaining callers if that is preferred. I have seen this problem for a long time. I always thought it is a compiler problem because it is not seen with gcc 9.x. However, it turns out that the problem is real. mm/slub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/slub.c b/mm/slub.c index be8b09e09d30..627aa8d2b9fd 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -4353,7 +4353,7 @@ void *__kmalloc_cache_noprof(struct kmem_cache *s, gfp_t gfpflags, size_t size) void *ret = slab_alloc_node(s, NULL, gfpflags, NUMA_NO_NODE, _RET_IP_, size); - trace_kmalloc(_RET_IP_, ret, size, s->size, gfpflags, NUMA_NO_NODE); + trace_kmalloc(_RET_IP_, ret, size, s ? s->size : -1, gfpflags, NUMA_NO_NODE); ret = kasan_kmalloc(s, ret, size, gfpflags); return ret; -- 2.45.2