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 477D8C02194 for ; Thu, 6 Feb 2025 11:35:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA5396B0082; Thu, 6 Feb 2025 06:35:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B549F6B0083; Thu, 6 Feb 2025 06:35:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9F5126B0085; Thu, 6 Feb 2025 06:35:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7B3186B0082 for ; Thu, 6 Feb 2025 06:35:27 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E2216141057 for ; Thu, 6 Feb 2025 11:35:26 +0000 (UTC) X-FDA: 83089314252.18.86DDA26 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf09.hostedemail.com (Postfix) with ESMTP id 6725B140057 for ; Thu, 6 Feb 2025 11:35:24 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=YEXSm6rh; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="/s5HOzpf"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=YEXSm6rh; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="/s5HOzpf"; spf=pass (imf09.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738841724; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=aXuELRlGmTe2UpXOqpsEpwKWst7ihyZh1qroSp+CUOU=; b=bLwalFkiHfajKVAao0CV9DBWU0CUpr2AvYU9AbBXTog0xipe53zE8i1VL8a7QIVvbJlBPe EFNMMbUD/5Yi3ad58YuNvzsgKQOsIYeRYqW0WGgqL0HJL3jSuwfLguZ/Als1gYPT7vTFo+ klXljXxlbyKFpnCyT2s2vkaLz2Y/DtU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738841724; a=rsa-sha256; cv=none; b=pNNYYuvrdcX4iBam3BFhQMiW9X9Q+dtJbS+qggrF+VTv0cFxeWa/GUQ7Yv9sBhlOUyVlFF aH/1dNCAugidg/bLM3XziO4t7nnCPH74KkCq8I3VFV4mxXuDTsMF2fsZxjl+RmCOw3Plrm 8ahvulLvUX9mQMciHyxxVpTmk+q1QQo= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=YEXSm6rh; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="/s5HOzpf"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=YEXSm6rh; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="/s5HOzpf"; spf=pass (imf09.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 933912115F; Thu, 6 Feb 2025 11:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1738841722; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=aXuELRlGmTe2UpXOqpsEpwKWst7ihyZh1qroSp+CUOU=; b=YEXSm6rhWudt0Dkj15/o6l5y9xvyjDt0qUVMgVQfKxGtJMby0oXG4tm6v+Iwdjt1DfJFha BjLUEEHvD7qVOBW8yU7qrmmWvxlqcAfxMazEd97xRmiNhbBz9rrNxUfAN/6ZOakYKAk12p YcbCzXreDS8POFq6CUpf4dHvUB6J9h4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1738841722; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=aXuELRlGmTe2UpXOqpsEpwKWst7ihyZh1qroSp+CUOU=; b=/s5HOzpf+aEQnxclWh2HkcCZw0rgoYNr785MRp4cAYQ5L1hkmIidYULELT9r8sENoDtw1n FysKWHM84121cSDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1738841722; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=aXuELRlGmTe2UpXOqpsEpwKWst7ihyZh1qroSp+CUOU=; b=YEXSm6rhWudt0Dkj15/o6l5y9xvyjDt0qUVMgVQfKxGtJMby0oXG4tm6v+Iwdjt1DfJFha BjLUEEHvD7qVOBW8yU7qrmmWvxlqcAfxMazEd97xRmiNhbBz9rrNxUfAN/6ZOakYKAk12p YcbCzXreDS8POFq6CUpf4dHvUB6J9h4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1738841722; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=aXuELRlGmTe2UpXOqpsEpwKWst7ihyZh1qroSp+CUOU=; b=/s5HOzpf+aEQnxclWh2HkcCZw0rgoYNr785MRp4cAYQ5L1hkmIidYULELT9r8sENoDtw1n FysKWHM84121cSDw== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7035613697; Thu, 6 Feb 2025 11:35:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id ri0OG3qepGf1bAAAD6G6ig (envelope-from ); Thu, 06 Feb 2025 11:35:22 +0000 Message-ID: <47de9f52-e66a-4ecd-b561-6b97d2eab671@suse.cz> Date: Thu, 6 Feb 2025 12:35:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] mm: slub: call WARN() instead of pr_err on slab_fix. Content-Language: en-US To: Hyesoo Yu Cc: janghyuck.kim@samsung.com, Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20250205004615.1253389-1-hyesoo.yu@samsung.com> From: Vlastimil Babka Autocrypt: addr=vbabka@suse.cz; keydata= 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 EP+ylKVEKb0Q2A== In-Reply-To: <20250205004615.1253389-1-hyesoo.yu@samsung.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: o7rrpkp6xcygtx4wa1gkpkzsxmhkiqcy X-Rspam-User: X-Rspamd-Queue-Id: 6725B140057 X-Rspamd-Server: rspam03 X-HE-Tag: 1738841724-661833 X-HE-Meta: U2FsdGVkX18RsvglK+Y8uHzIh32z6f57W48s3iHjW1Lyh+i9wbI2Qzt//QOugG6ye7VMZhU5m/5df6bngG2DZr+VN0Oy0WExcOXyNfnwV0X9n1QVGAr11eQ1oO+Me6vH2mjWtdjvR5fYEv443G2gYt6N3GtS+8xzAod/62ebBHQlYsfDPFMb808lj1MQNmF3Sz9LGiypFKkSf8s6ZogXwdVkV51a7j+mCH/ldjAPIwaRYOEIMXWiCrPNj+jl97otw7p7JoHZyYU7maIDisW7UYma/7p/EBPrC7YZm4t09rYP5a82PVu+4qDHEqp/iCLORN+rax4kuyf4IO3XpW96TqM/FLVxMpi3/Jewlj6q0X2OdWTb33lsHcOr5k2TPDGm4PYswPwzZs7hEiI1OVzXt6pq1xeILr06F2mMQhXMYhJdfx28pb89BIx+tesb31M6b2Pac8CnDNXoOtG4K4KUQBOWk+6PbmGNRpI/f3Vd3nqtAGQVXXsFHorKE/U+HuUJu3QBSc1CyKHh4mDUofzSdQRljXqxIlZw6txng0W3zDPwpTikZWDQMIiP5v8crmA9nd+xsHX4BvsdxmG6HCTE0ypB3fsxiXBy5SAHqz7muONQVv8pJH47eez2eyBTwxzY1OpxdpAu9aOIZOB9bNRJeffADtWPSg7wK7Khz4P3H56wF0HuKOty5qaNi9pHCVDNUN8b4+tiHXhuZHSCgJMyAQyyVGHzMhGHrRCY5v7dOk5VYfZjceaF7Sxpn+qvp/l3AnIRWkUlZdJ1WRJtsSTuBsba7C78cXU285w2lhbyTgdWfdh7TM5l5NjfnbTpPQNItSwn3zlT3Ajepa+ks3u3asWHD8Yor0k6xfGhr7z/Kv5Wub+t8IEsPbTHwDRC3LDkuIk6rEwW237efji9hVmPzpFTH+SUN0J6/SiIme9w8owWVSDkue4WpE1PjhZZp3oReAhK1LMgclGT3/H8P8f 9P4/BXQ8 lYwdQEYlvGApeS0/2d0wO7oZffLoIXx3iqmscJK/A+G2+2s0uQYOBFpoSq5JtbaRLE6AF8B+v9bhVJsLKn81F9b9qmKKFktbiR8Tr02lNtyLcfUxo3Pl1qkoBjmCSbGH0esVHbh/5ybnLn6RSM//XCxbhJjZCLkYKH40Rs707B89jWQ9tIdlH04QKZ6IjEKS813ilqfFSmaTxa0j6IBPRCHn4OeXSoyaCU5kGIsYXNf+9+PP176KH06QehGaZQfnRDc2NMvlCOs9EIT2mg1sbjXFYB2Du/Wvt/XNsjs/CoEIaSdDqWCOHK6OQ3WPmSXTmACx+C6uK/M5VHuFkvmz0RS+uMTV98jwrJ+GjbeoxhPGHKifaknuMc3vs1KzG0makYQ00Msxc626rAWwa4ewd+U2h+AY/qVwoLXrcgdOo2DIZDGY= 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 2/5/25 01:46, 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. > > Changes in v2: > - Replace direct calling with BUG_ON with the use of WARN in slab_fix. > > Signed-off-by: Hyesoo Yu Hi and thanks for the patch, I wonder if it would be better not to change slab_fix() but rather slab_err() and object_err(). It wouldn't then require to rearrange the fixup code. Also I think some error reporting paths don't go through slab_fix() and we still would like them to become a WARN too. Basically it would mean the last line in slab_err() would be a WARN and we'd drop the dump_stack() as that's redundant. Same in object_err() (no dump_stack() there). It would be a bit noisier as a result, but hopefully acceptable. The slab specific debugging info would still be printed before the WARN hits (and potentially results in a panic) so anyone investigating the crash dump would have that information. Hm but I see some places print stuff after slab_err(). slab_pad_check() and list_slab_objects(). We could create slab_err_start() and slab_err_end() for those, and slab_err() would just call both at once. > --- > 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; > }