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 87714C02192 for ; Wed, 5 Feb 2025 17:10:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B052280003; Wed, 5 Feb 2025 12:10:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 160DE280001; Wed, 5 Feb 2025 12:10:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 027B8280003; Wed, 5 Feb 2025 12:10:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D0899280001 for ; Wed, 5 Feb 2025 12:10:37 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 76546805D7 for ; Wed, 5 Feb 2025 17:10:37 +0000 (UTC) X-FDA: 83086530114.30.C8E8B54 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by imf20.hostedemail.com (Postfix) with ESMTP id 917891C0016 for ; Wed, 5 Feb 2025 17:10:35 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=S2L3AMJL; spf=pass (imf20.hostedemail.com: domain of rientjes@google.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738775435; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7Ayw6qczz4qDcAnQoj+msV8DhDXq1GcMA4NpMhdl7bU=; b=QCLfdN5LH4V6NiWs1nODdWjUHrHd7NxB3eoNHBPp1ljnmnIPJgPiR+Q/V3v36eQtBm1g0P caTXu68R7CGHxPpfQERBlANhRanzlHpRNXPkinCRxrugLGNKufltNZawWakDfUBQ1S/cM3 2iEcq1mq3pgSpDao7VTwrAYPwW/wZww= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738775435; a=rsa-sha256; cv=none; b=3T9WRKs84tL8K/x0BIxTMMtzCYoUTCDwih2eohj3oB+UUn4ke4pd7UFVnMP3uzrteXJ2zH iudvxz5SpysFdm23Uf4wL3v6ommGqqgs/3Pf/Y08UdRX6h7EaOhr9BDTYvgHNJHbJcLHAI drzJjGrVt7OghPPgzzuZIXEzgi8XCL8= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=S2L3AMJL; spf=pass (imf20.hostedemail.com: domain of rientjes@google.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-219f6ca9a81so302095ad.1 for ; Wed, 05 Feb 2025 09:10:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738775434; x=1739380234; darn=kvack.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=7Ayw6qczz4qDcAnQoj+msV8DhDXq1GcMA4NpMhdl7bU=; b=S2L3AMJLjfS0R7agywVIrQw3va36jXMlHpPxgYXETeTBnPWdagtWMoGwFfD3XFw18e oN13r9sEIOP0nNGZt8Pj/RoF62LQZqfcGR1FvRYzoNXS2xAoU7WvY4iBVY8FzfrP963i uzWTGHrTFHt/KvHnR9vWxUi8IOwg3YxysRVMS5fVfSRHibK7c+MvfMEDnKHbCMoDhlSn REA8mYbvmUTYuPvwpTcBanU6sy5yle303GqYFs4BsvW0/1AAc/ys2VMTKM3FeiAOTePz xsflOrD2cZpU/vBqpLiZW2JRPyik4Uj/W/1O4xDP03j+wecDBU6lLQ9FzjUdoxbfLX/i /Kpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738775434; x=1739380234; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7Ayw6qczz4qDcAnQoj+msV8DhDXq1GcMA4NpMhdl7bU=; b=f6wGkxs2nYsxfouu9/fkpcVUGGBKKliGCjABd8E5S7ikxZweDW28udIUKJhXxORPxe Q/P193cvIELbgnrJcuueZnd7MVsiGJiOI2k7awEiTRFed92ReJdiIGnf3IRFk9wRG1ij avpGWV0FNUirU2c1kTkEdApwxYhYgb0KYZe9QMRDFPzmBXle2jqblfuqRt4hOlOQIxyV EAHd6WS30ZABWY+wEvw/+gs3Jf9ZbNojec8T3wwSPyflmWutyuq7ObJd9CqNlmZEC64G oc+pFeCoRCSElJLjCZC1p1nUI7y/ZS8Dh0LJ7po+NhY3EXf5kJ9ef2oLCxxoPHYHnjWJ 6tuA== X-Forwarded-Encrypted: i=1; AJvYcCUIW/374KY/2N7rf+UTvnW175ioOaoA/PtbhHk8XCaSbtvlc9YlYdl96Oc8tFtkufQOVkXez50TEQ==@kvack.org X-Gm-Message-State: AOJu0YxEWXvMPYangm8sUxJPkaYGaNwLBNaWufoQXTqfrqwTxqqaOG9/ SpWchiUETwB4dtRGAUYseYIUvFFKm3xIAUea4zxDUEAsLQQpXkQNYT+KKRftpg== X-Gm-Gg: ASbGncvQ4eWJgVVuwsj8I2rVJv92q1zwPtPD3nZK6pJ+rtQKnJqfhsWFTgI9nX+8npI WyuOIrz0cdMkOQJrJPSKd2pfypy8LUlEFzZoQFcJ3/sxV/kGTjOkKKj7fEd2QMSQYA+EAYsFn+A jesjpSAhC89i1Kk18NEtc5QQ6NC5MEAFsJll7g0kYDfs+v5C/aprNymLoE5qpuZwuOTTata/tZh 1s2cr7Ii41eiP55rC+sJOWbBLTArjKty2ddc/ryE4udIxdiOMJ8ryBt9ZXaQ+sMH9c8I9T5tc1T XJdmZyKy7ij7eIJzlbGHYZzIF21uIuQ3f1Lbc/gtsXyn6G5yZru5uK2VmGEVy4CfMnZKJcW+SHQ aTm0iIpi25A== X-Google-Smtp-Source: AGHT+IFrbF9lqfMOOkSUjVEHTZOA83bFrb3jA9riWnv70B7MEFE0qPjQ/1M0KgApO8HvHduIDhQwwg== X-Received: by 2002:a17:903:3253:b0:21f:54d:14b0 with SMTP id d9443c01a7336-21f054d15bfmr6182765ad.14.1738775434169; Wed, 05 Feb 2025 09:10:34 -0800 (PST) Received: from [2a00:79e0:2eb0:8:23ad:2d69:b4a0:1176] ([2a00:79e0:2eb0:8:23ad:2d69:b4a0:1176]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f0dd8cc20sm26773525ad.11.2025.02.05.09.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Feb 2025 09:10:33 -0800 (PST) Date: Wed, 5 Feb 2025 09:10:32 -0800 (PST) From: David Rientjes To: Hyesoo Yu cc: janghyuck.kim@samsung.com, Christoph Lameter , Pekka Enberg , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mm: slub: call WARN() instead of pr_err on slab_fix. In-Reply-To: <20250205004615.1253389-1-hyesoo.yu@samsung.com> Message-ID: <55522d9a-7fd2-1df0-19df-1552644b009e@google.com> References: <20250205004615.1253389-1-hyesoo.yu@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspamd-Queue-Id: 917891C0016 X-Stat-Signature: ameudgnfiaj8robsnqb3tm9t91kswkhf X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1738775435-142016 X-HE-Meta: U2FsdGVkX19vz6XE8L45AEj79Xjoc4Fs/5u3TEtl6on2uWtth+nA/LY1sQoJZcWWDOieDNcchoXvZRPESlvGDQF3dn1JbHWJJdYFKubUCVETOb5yveUAdJpXtuvy44bRsuypNLSlK0VUS0baPGAEQ+L4jl6MESKaqEurtTiEIVQL9kCyPmhK4vXCHiz23jv8FLLPVvQ9c428MP/7Unda42DDccE5LBZIokbSc1tL2bOfWbqOKI4QpAYWOdZ2aNUmXQpSFWQVydaoxd0GLx+oI2BAtPsciHSoIMJ4FognuWOG8Lr9koDtTiK4tycMJGDYKIXSCPMTKyPuTbmaAtwBvFbT1gaLGmokIZ7/Wasv6YsVwmjF+fhJFrPQMWVkGHnKSvKJyLl4DHK2MNP3jPn2lyqBzOctwwdjIcmSpfPaDDj7kCrGi3V8MI8WJmIAPBhrG6irtDEQ0fyGEunCQLBweETLWw3Qt/gx7zNW19voF9uBdYil6PXudbtay+GBkR93tCvVZU54A/PAckZCn0kBbX2u70113BahFDDo5z4ju44NPaxXhLpuJdrH4GWFUioAQwNKYsXsCgG949gMGdUGSJ5K8r8t/ca15lb3pDOh9N9xDXn1XyT0TqhWQSbXdbHcgKJLBaQklhfG5C3LPBuwFVCADXRt05SU4G7v9dgWu1bR25y2e+k+Yft89eQo1+frMmkz9donDaIAmKRwS3+ARqQszTWQ1yRQnzCqs34Fk60hvQzYkDy4nHmpiYptgWK8qt3oBofeqpd6KubL7wiZQs2wPPpINFciKNjyqcZqdspj27mM4nrFCxJr3JUT186Ev8xVUHJ2rt0kcX/OWC4uJWMHMRD0UEmcJcY6vFuQjJtCSheCHfJsFx/XnfbQcrfkyzaTkWxgmmVf2S7FaDYhAgFm/NbpWpkZgF40oGub+Pmpnkzpn8OQ48ML8KMxyDCjoddzoHW9tDo+DNABIYj Rl31WWDO cuBUpuPXOvqGHKHrovYJwEDfD6sC8H7bcLiE8CZoFMlIN8NGOhHlZXT/WEE40C5BQChptkZdzL61d+6Rq4nthqQb2ZILkEdetg9cUKPCQo3WD0c8dwVcmWq7ejiJinBJvrgCtDorm97SvXCjp9AxRqlkarMECnwsI/6WyyhyHWMTTiJXDzIqgAlIJSUKUn8blo7YYwq/1fyuf7l2uoV3UKbyUKSBnyJ7TszirLXfzVAnjR2lkdP+urQsTutl17mjPQlNOAkgjicf3BWosgomOwAROnXY9d+z9ctKoKMXQGr7xTsAfPh9iIcZSIvwLeGO9CEeOwF6DVVIbNV+qQRwuLlIubDw99Jk08YRuaZ2hLbkVY8N4y73zOj5ObvF1fAxoi/l6bTM/DCmZfVS+OptfukYN49htGtp7/yHuQ++e2F1eLSv97+Sd4e+LCLXGdQYHNJ8l0qGsFGBSRPtsZeW/S9NofTi58qnTvQS01sHfFzJ4dWTvMV5elvjb3uhmNuMnScef 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: On Wed, 5 Feb 2025, Hyesoo Yu wrote: > If a slab object is corrupted or an error occurs in its internal > value, continuing after restoration may cause other side effects. > At this point, it is difficult to debug because the problem occurred > in the past. It is better to use WARN() instead of pr_err to catch > errors at the point of issue because WARN() could trigger panic for > system debugging when panic_on_warn is enabled. WARN() should be > called prior to fixing the value because when a panic is triggered by WARN(), > it allows us to check corrupted data. > I think this makes sense, but it doesn't document why the other changes are being made, like moving the setting of *freelist to NULL. This is presumably something that you want in the crash dump when kernel.panic_on_warn is enabled. Probably best to call that out, but to also indicate what you're relying on in the crash dump to make forward progress on in diagnosing the issue. > Changes in v2: > - Replace direct calling with BUG_ON with the use of WARN in slab_fix. > > Signed-off-by: Hyesoo Yu > --- > mm/slub.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 1f50129dcfb3..ea956cb4b8be 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1043,7 +1043,7 @@ static void slab_fix(struct kmem_cache *s, char *fmt, ...) > va_start(args, fmt); > vaf.fmt = fmt; > vaf.va = &args; > - pr_err("FIX %s: %pV\n", s->name, &vaf); > + WARN(1, "FIX %s: %pV\n", s->name, &vaf); > va_end(args); > } > > @@ -1106,8 +1106,8 @@ static bool freelist_corrupted(struct kmem_cache *s, struct slab *slab, > if ((s->flags & SLAB_CONSISTENCY_CHECKS) && > !check_valid_pointer(s, slab, nextfree) && freelist) { > object_err(s, slab, *freelist, "Freechain corrupt"); > - *freelist = NULL; > slab_fix(s, "Isolate corrupted freechain"); > + *freelist = NULL; > return true; > } > > @@ -1445,9 +1445,9 @@ static int on_freelist(struct kmem_cache *s, struct slab *slab, void *search) > set_freepointer(s, object, NULL); > } else { > slab_err(s, slab, "Freepointer corrupt"); > + slab_fix(s, "Freelist cleared"); > slab->freelist = NULL; > slab->inuse = slab->objects; > - slab_fix(s, "Freelist cleared"); > return 0; > } > break; > @@ -1464,14 +1464,14 @@ static int on_freelist(struct kmem_cache *s, struct slab *slab, void *search) > if (slab->objects != max_objects) { > slab_err(s, slab, "Wrong number of objects. Found %d but should be %d", > slab->objects, max_objects); > - slab->objects = max_objects; > slab_fix(s, "Number of objects adjusted"); > + slab->objects = max_objects; > } > if (slab->inuse != slab->objects - nr) { > slab_err(s, slab, "Wrong object count. Counter is %d but counted were %d", > slab->inuse, slab->objects - nr); > - slab->inuse = slab->objects - nr; > slab_fix(s, "Object count adjusted"); > + slab->inuse = slab->objects - nr; > } > return search == NULL; > } > -- > 2.48.0 > >