From patchwork Wed Feb 26 08:12:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyesoo Yu X-Patchwork-Id: 13991723 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 75736C19776 for ; Wed, 26 Feb 2025 08:14:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DFE54280007; Wed, 26 Feb 2025 03:14:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D5FF8280001; Wed, 26 Feb 2025 03:14:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B15B7280007; Wed, 26 Feb 2025 03:14:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 90E42280001 for ; Wed, 26 Feb 2025 03:14:05 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 20CDF51E21 for ; Wed, 26 Feb 2025 08:14:05 +0000 (UTC) X-FDA: 83161382850.07.2D1CD00 Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by imf01.hostedemail.com (Postfix) with ESMTP id 082304000C for ; Wed, 26 Feb 2025 08:14:01 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=JSqww87L; spf=pass (imf01.hostedemail.com: domain of hyesoo.yu@samsung.com designates 203.254.224.33 as permitted sender) smtp.mailfrom=hyesoo.yu@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740557642; a=rsa-sha256; cv=none; b=PLW8SOSnPecSxIk/3B2eIKtQ27KGzDkoopZwwCyZ6UicVIPlNYxQ39vqCFsStOats01+qX Uh0aVXMVCsljFSCd/ZWHi4CcrRB3RiFS22j4hHwKv1/4XmHvYcGUOy1i/6200If2TrWBcL H2pTtqctnuczuObMG2CDhWF+qtWjCUc= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=JSqww87L; spf=pass (imf01.hostedemail.com: domain of hyesoo.yu@samsung.com designates 203.254.224.33 as permitted sender) smtp.mailfrom=hyesoo.yu@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740557642; 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=y/oMSuvRKepLmXTKGntS/Q0V/kBVdNCAFR/MpTdZ1o8=; b=jc8GeOaDD1oWkrvScl4L/hK6itJ1p1HiePjdEyxlPnLl1wf8POnEsgnVXkNieV+gNqxIm2 rqFUSY1gavCwoAb88m3w0puc5wXmhw8PMDWDp7xKUi6zFGElJ6AqbR3jHNfzkrT0R8x4Iv W8LNgm1QnjWQ9+fkV2/RyvP2RL2nOCo= Received: from epcas2p2.samsung.com (unknown [182.195.41.54]) by mailout3.samsung.com (KnoxPortal) with ESMTP id 20250226081359epoutp035cf6c40a476cbf5b2cb2b0260b4e3239~ns-NvmcgW1718817188epoutp03O for ; Wed, 26 Feb 2025 08:13:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout3.samsung.com 20250226081359epoutp035cf6c40a476cbf5b2cb2b0260b4e3239~ns-NvmcgW1718817188epoutp03O DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1740557639; bh=y/oMSuvRKepLmXTKGntS/Q0V/kBVdNCAFR/MpTdZ1o8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JSqww87LJh6TvIL0vN6mUf9sczbXExDkG4pPXBXqMnVxj2d8ZMF3GkDMoXAaWNrFv Qng2wJMNYQvzhVenHFseQcxAL05OJ5M8y3tz+YqD+AMO4JQYCJSnVU+OMaz1uXNXRp oZBvvD6Y/u6x+zkKebZhSbMBD+XfXrjXLd+kFRJQ= Received: from epsnrtp4.localdomain (unknown [182.195.42.165]) by epcas2p4.samsung.com (KnoxPortal) with ESMTP id 20250226081358epcas2p4e8cce881bccda9714b1e8ed47cc7a9a4~ns-NYqr812188621886epcas2p4l; Wed, 26 Feb 2025 08:13:58 +0000 (GMT) Received: from epsmgec2p1.samsung.com (unknown [182.195.36.68]) by epsnrtp4.localdomain (Postfix) with ESMTP id 4Z2nLG15ctz4x9QC; Wed, 26 Feb 2025 08:13:58 +0000 (GMT) Received: from epcas2p1.samsung.com ( [182.195.41.53]) by epsmgec2p1.samsung.com (Symantec Messaging Gateway) with SMTP id 46.7C.22938.64DCEB76; Wed, 26 Feb 2025 17:13:58 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas2p2.samsung.com (KnoxPortal) with ESMTPA id 20250226081357epcas2p2f4c462b215b75291a9aeeec23aa1eaca~ns-MYMWbM2578225782epcas2p2V; Wed, 26 Feb 2025 08:13:57 +0000 (GMT) Received: from epsmgmc1p1new.samsung.com (unknown [182.195.42.40]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250226081357epsmtrp16d2e4ae7b529aa45a4a725ea784d30d4~ns-MXYt4l0588005880epsmtrp1j; Wed, 26 Feb 2025 08:13:57 +0000 (GMT) X-AuditID: b6c32a43-99d9b2400000599a-34-67becd467a02 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgmc1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id 15.A9.23488.54DCEB76; Wed, 26 Feb 2025 17:13:57 +0900 (KST) Received: from localhost.localdomain (unknown [10.229.95.142]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250226081357epsmtip20c43f30dedbf8fdfe160e8d4337488e8~ns-MFlIWK2001620016epsmtip2S; Wed, 26 Feb 2025 08:13:57 +0000 (GMT) From: Hyesoo Yu To: Cc: janghyuck.kim@samsung.com, vbabka@suse.cz, harry.yoo@oracle.com, Hyesoo Yu , 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 Subject: [PATCH v4 1/2] mm: slub: Print the broken data before restoring slub. Date: Wed, 26 Feb 2025 17:12:00 +0900 Message-ID: <20250226081206.680495-2-hyesoo.yu@samsung.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20250226081206.680495-1-hyesoo.yu@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFJsWRmVeSWpSXmKPExsWy7bCmqa7b2X3pBhcPsFpM7DGwmLN+DZvF 9W9vGC3uL3vGYvG38wKrxcruZjaLzXOKLS7vmsNmcW/Nf1aLts//gMSSjUwWE9eIWsxu7GN0 4PXYOesuu8eCTaUem1Z1snls+jSJ3aPr7RUmjxMzfrN4PLkyncljYcNUZo+PT2+xePRtWcXo cWbBEXaPz5vkAniism0yUhNTUosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVc fAJ03TJzgH5QUihLzCkFCgUkFhcr6dvZFOWXlqQqZOQXl9gqpRak5BSYF+gVJ+YWl+al6+Wl llgZGhgYmQIVJmRn7Dv9j61ghVrFkRWtrA2M0+S6GDk5JARMJC7MnsTexcjFISSwg1Fi5eab rBDOJ0aJOecXsUE43xgltn36BlTGAdby6nAeRHwvo8STVWuZIJzPjBK7bt5kA5nLJqAucWLL MkYQW0SARWLl9+8sIEXMAuuYJVbOnwyWEBYIkPh1/hcziM0ioCox6dp5JhCbV8BaYvOFc0wQ B8pL3F5zkgXE5hSwkXiz+Q4LRI2gxMmZT8BsZqCa5q2zmUEWSAgc4ZBYf/gMG0Szi8TtTU9Y IWxhiVfHt7BD2FISL/vboOxiiW2LDzNBNDcwSmzuuM8MkTCWmPWsnRHkZ2YBTYn1u/Qh3leW OHILai+fRMfhv9BQ4ZXoaBOCaFSW2L9sHguELSnxaG071AUeEvMWLocGbz+jxMZT05gmMCrM QvLOLCTvzEJYvICReRWjWGpBcW56arJRgSE8ipPzczcxghO1lvMOxivz/+kdYmTiYDzEKMHB rCTCy5m5J12INyWxsiq1KD++qDQntfgQoykwsCcyS4km5wNzRV5JvKGJpYGJmZmhuZGpgbmS OG/1jpZ0IYH0xJLU7NTUgtQimD4mDk6pBqYGhwuWKQpXVxzXjnu29bNwEc/ZhbkeJ1ZXdVQu 9mgVubr9Vud2lgPGXSfXtF2eyaelmhZk6SC7Jny+LadcTfEi36dr74vs4lo7r/Z20VObh/zr 8+f2vIvwLHr0rebBEUG9ojfnNmiWXgvo+hHZMCXjS/NUrxN78y+ounvNmHyqqcrLvcN0Hgev zmadhWvijrw/WPf35PTNWZELtpvMlz98Syy34aVsxGaNuzkxNT3yYRnrHX/mJM775mxnHP2H xSA8via2qXX3wlk/ElJcpq19J8nxm2F+5OllX2frihjV/f33f2Ow9ueqR1NTI9eWL/NqnOJ3 6OvtSMb7Zz3zuRfzaxqkv/qktUPh17eTUr5KLMUZiYZazEXFiQDQBIrZXQQAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmkeLIzCtJLcpLzFFi42LZdlhJXtf17L50gzc75C0m9hhYzFm/hs3i +rc3jBb3lz1jsfjbeYHVYmV3M5vF5jnFFpd3zWGzuLfmP6tF2+d/QGLJRiaLiWtELWY39jE6 8HrsnHWX3WPBplKPTas62Tw2fZrE7tH19gqTx4kZv1k8nlyZzuSxsGEqs8fHp7dYPPq2rGL0 OLPgCLvH501yATxRXDYpqTmZZalF+nYJXBn7Tv9jK1ihVnFkRStrA+M0uS5GDg4JAROJV4fz uhi5OIQEdjNKLJt0jbWLkRMoLikx6/NJJghbWOJ+yxFWiKKPjBK3n89lAUmwCahLnNiyjBHE FhFgkVj5/TsLSBGzwB5miTfN28EmCQv4SSzcsResiEVAVWLStfNgU3kFrCU2XzgHtUFe4vaa k2BDOQVsJN5svsMCcp0QUM3RpTIQ5YISJ2c+ASthBipv3jqbeQKjwCwkqVlIUgsYmVYxSqYW FOem5yYbFhjmpZbrFSfmFpfmpesl5+duYgTHk5bGDsZ335r0DzEycTAeYpTgYFYS4eXM3JMu xJuSWFmVWpQfX1Sak1p8iFGag0VJnHelYUS6kEB6YklqdmpqQWoRTJaJg1OqgUkzaF3avzX8 zqfbou72OjZ9Sd4x55PA2TPGx9kDnX+KnFrS1p6Y/vHg+TTVhhcvVvG9FP5U387eMSOfc3Vn wlfWmawFpvHt3x9w/HuZOXk2/+3gk2/u/bFgPHhyyUVbPcnlZk8OsF06b/RzYi3n0ov/Na9E PT1Zbnc/61bS4cfq/RnhE/qNcx7ksYkUPI/hyn65bpXhgsboC7XSlv2yqoXBGw+ncx9TN4/W m7JK+VzD1eCwGtNKU++A9MC0sLOzwzcc+RrNGdcnq/T+oFz2sb/b2z0OcVvsvxSdvdJm5+yk DVMcLn66aM4q/+O8X57Vq183szpvLVh6c/6cwr9/X7Y9/3HnoV4Re2tO22a7biElluKMREMt 5qLiRAD25iFRFgMAAA== X-CMS-MailID: 20250226081357epcas2p2f4c462b215b75291a9aeeec23aa1eaca X-Msg-Generator: CA X-Sendblock-Type: AUTO_CONFIDENTIAL CMS-TYPE: 102P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20250226081357epcas2p2f4c462b215b75291a9aeeec23aa1eaca References: <20250226081206.680495-1-hyesoo.yu@samsung.com> X-Stat-Signature: hpym63hc4oag49rrybydbpzpe3ug8uqw X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 082304000C X-Rspam-User: X-HE-Tag: 1740557641-650426 X-HE-Meta: U2FsdGVkX18iSdUffoXI9kX1cM2i9gT1HZux0PTOAMHw3NtwE/GtGVjFbNIugt3+JKdYQVpTMEJ/96qI2/jWIj5b/wKAo+k13/FYPw9RfH8oSDnq2WjMqjK8/hGk0slcBPzMTpF0ZsDW6gs00KZmXV3OP2dlQGgjsxs1R7c2IPz5ce0AqyzskbjpDKrRrL6chnjisVy33RQ6kaRjhYfJvS4efC9UOrCNjRppYR7ew+ajOPEOFnvPNdtNC4OKwPqeOugiZ0XeT7/xbrLl8L9fNBdFmwhGhgdLZSt7tSzxXd6wCf+lzxiUXSSrdHUNfef7vYj22RO1jxWl9tHBFnHF6OHEsaR08RDNZPDsn4xosXjzFPRkYjKb+O9CNAj8xv2CSAAL9iuxLdEEeWN3hULVpWqEg0jPmN7W6aW0NcuphsvhQq4tzRGHbJF3Ir9BpefHlUYhBKKPvZXvzrdXbcYCYPMK5Y4UZNT6xeFo9/bxfrKo8gUXV6q8aL/d9pR/dDSmNd1pjpeFJZGjglqzuN7Gob7YaP9jyDgS6afkYpTEJ8J+6q5/oyZTcO4Sq6vJhkpmm1L7gI1mdWWmDvtPYZQ9N/H5NoSbjfNpHKR65WbE4gzmjHD5kGiZlL9d1c3jjygeikR9kSZmgEmaFbiOvYWQJIfoBObTA1RInhcr5RIoqB+0gEcjKNhqZRMjmDDFidKetAow+80QsSK5Ngx07WjyDVCZR1Y5cUCxoTG5JPyvTt+207cJrwvgq08IlfkvqdzYjyQ5Ijlh+2HpbIrnSWpLGLOnYOTcJxS26dbYOwvqfJKSLiBxOmq7ylk3wk31A+BAAxFVVfHCv4bR7SvkKpANXvwIPeDmVcffOyGe0KNIewttfBpC0laXhM48mOUjMPf1bTWH/an92A2jJg35GAKjQ/8br1k+4lMCMXe186XtTqJZI/lXSsBTsJrVecFH8keepqNy1YUj/oM36LhB5T7 kM6E6a26 JNzKQVdfs+U5Hci2RnRp2nsEd7WiAxoUwTNl6U/xs9uGoyGpgWiqjHfubT2uFnIigF3ESb6JJ5vRWTgRtn/MAA8NccULMus+y0glJHnpxmJrcpO8MZFdmAJvb2ZlK0xz5zLh6f9JOy01QgTN0vdQg24Q6+jGVyTTYAfNT 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: Previously, the restore occured after printing the object in slub. After commit 47d911b02cbe ("slab: make check_object() more consistent"), the bytes are printed after the restore. This information about the bytes before the restore is highly valuable for debugging purpose. For instance, in a event of cache issue, it displays byte patterns by breaking them down into 64-bytes units. Without this information, we can only speculate on how it was broken. Hence the corrupted regions should be printed prior to the restoration process. However if an object breaks in multiple places, the same log may be output multiple times. Therefore the slub log is reported only once to prevent redundant printing, by sending a parameter indicating whether an error has occurred previously. Changes in v4: - Change the print format to include specific error names. Changes in v3: - Change the parameter type of check_bytes_and_report. Changes in v2: - Instead of using print_section every time on check_bytes_and_report, just print it once for the entire slub object before the restore. Signed-off-by: Hyesoo Yu --- mm/slub.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index b3969d63cc04..8c13cd43c0fd 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1192,8 +1192,8 @@ static void restore_bytes(struct kmem_cache *s, char *message, u8 data, static pad_check_attributes int check_bytes_and_report(struct kmem_cache *s, struct slab *slab, - u8 *object, char *what, - u8 *start, unsigned int value, unsigned int bytes) + u8 *object, char *what, u8 *start, unsigned int value, + unsigned int bytes, bool slab_obj_print) { u8 *fault; u8 *end; @@ -1212,10 +1212,11 @@ check_bytes_and_report(struct kmem_cache *s, struct slab *slab, if (slab_add_kunit_errors()) goto skip_bug_print; - slab_bug(s, "%s overwritten", what); - pr_err("0x%p-0x%p @offset=%tu. First byte 0x%x instead of 0x%x\n", - fault, end - 1, fault - addr, - fault[0], value); + pr_err("[%s overwritten] 0x%p-0x%p @offset=%tu. First byte 0x%x instead of 0x%x\n", + what, fault, end - 1, fault - addr, fault[0], value); + + if (slab_obj_print) + object_err(s, slab, object, "Object corrupt"); skip_bug_print: restore_bytes(s, what, value, fault, end); @@ -1279,7 +1280,7 @@ static int check_pad_bytes(struct kmem_cache *s, struct slab *slab, u8 *p) return 1; return check_bytes_and_report(s, slab, p, "Object padding", - p + off, POISON_INUSE, size_from_object(s) - off); + p + off, POISON_INUSE, size_from_object(s) - off, true); } /* Check the pad bytes at the end of a slab page */ @@ -1329,11 +1330,11 @@ static int check_object(struct kmem_cache *s, struct slab *slab, if (s->flags & SLAB_RED_ZONE) { if (!check_bytes_and_report(s, slab, object, "Left Redzone", - object - s->red_left_pad, val, s->red_left_pad)) + object - s->red_left_pad, val, s->red_left_pad, ret)) ret = 0; if (!check_bytes_and_report(s, slab, object, "Right Redzone", - endobject, val, s->inuse - s->object_size)) + endobject, val, s->inuse - s->object_size, ret)) ret = 0; if (slub_debug_orig_size(s) && val == SLUB_RED_ACTIVE) { @@ -1342,7 +1343,7 @@ static int check_object(struct kmem_cache *s, struct slab *slab, if (s->object_size > orig_size && !check_bytes_and_report(s, slab, object, "kmalloc Redzone", p + orig_size, - val, s->object_size - orig_size)) { + val, s->object_size - orig_size, ret)) { ret = 0; } } @@ -1350,7 +1351,7 @@ static int check_object(struct kmem_cache *s, struct slab *slab, if ((s->flags & SLAB_POISON) && s->object_size < s->inuse) { if (!check_bytes_and_report(s, slab, p, "Alignment padding", endobject, POISON_INUSE, - s->inuse - s->object_size)) + s->inuse - s->object_size, ret)) ret = 0; } } @@ -1366,11 +1367,11 @@ static int check_object(struct kmem_cache *s, struct slab *slab, if (kasan_meta_size < s->object_size - 1 && !check_bytes_and_report(s, slab, p, "Poison", p + kasan_meta_size, POISON_FREE, - s->object_size - kasan_meta_size - 1)) + s->object_size - kasan_meta_size - 1, ret)) ret = 0; if (kasan_meta_size < s->object_size && !check_bytes_and_report(s, slab, p, "End Poison", - p + s->object_size - 1, POISON_END, 1)) + p + s->object_size - 1, POISON_END, 1, ret)) ret = 0; } /* @@ -1396,11 +1397,6 @@ static int check_object(struct kmem_cache *s, struct slab *slab, ret = 0; } - if (!ret && !slab_in_kunit_test()) { - print_trailer(s, slab, object); - add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); - } - return ret; } From patchwork Wed Feb 26 08:12:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyesoo Yu X-Patchwork-Id: 13991724 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 27F0AC021B8 for ; Wed, 26 Feb 2025 08:14:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A5495280008; Wed, 26 Feb 2025 03:14:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A036B280001; Wed, 26 Feb 2025 03:14:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6F80B280008; Wed, 26 Feb 2025 03:14:07 -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 4C65F280001 for ; Wed, 26 Feb 2025 03:14:07 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DFA12120CF7 for ; Wed, 26 Feb 2025 08:14:06 +0000 (UTC) X-FDA: 83161382892.30.B49EE42 Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by imf29.hostedemail.com (Postfix) with ESMTP id CA44912000A for ; Wed, 26 Feb 2025 08:14:03 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=gletJ3GK; spf=pass (imf29.hostedemail.com: domain of hyesoo.yu@samsung.com designates 203.254.224.25 as permitted sender) smtp.mailfrom=hyesoo.yu@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740557644; 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=ouCvGVz+UyYcyRbwwR2KSi8SaQSHfPFVtpF7i2zb2iA=; b=KkHgDZerYRcSXkCBpTxXR5G6S7TqMxgJbDFE6F4QZnRGzkdLCWgAhQ0HXe3QwaAH90I/P+ 41xTr1BJk8p7l1AgBGrQZeD3JQ27GXXDSq4okw9CzJ+Q8WrcaqayOtKhFOX6nhGlxMXB64 oHZ3FKBmUY5sSQDq56uocqmMpC7V4ns= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740557644; a=rsa-sha256; cv=none; b=hHEL1ICV3NaZKNvdxuvLUTIxCrjcuptCUTNR3S4aRCqVCkCKynJrYJhe3W4Z27bXVaxaf3 GFwHivDMRbh5MSz9vG0DJE+pJOvD2mFNxE4wHToqrP/4M9N8DQM7KXmv8ey4A0KuGtJGTb m3uilWND6Iy0KztURXFh0EoMGmLeSc8= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=gletJ3GK; spf=pass (imf29.hostedemail.com: domain of hyesoo.yu@samsung.com designates 203.254.224.25 as permitted sender) smtp.mailfrom=hyesoo.yu@samsung.com; dmarc=pass (policy=none) header.from=samsung.com Received: from epcas2p1.samsung.com (unknown [182.195.41.53]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20250226081400epoutp02c261f301679a7faa812457203d2315a4~ns-PbZpKe0190301903epoutp02H for ; Wed, 26 Feb 2025 08:14:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20250226081400epoutp02c261f301679a7faa812457203d2315a4~ns-PbZpKe0190301903epoutp02H DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1740557640; bh=ouCvGVz+UyYcyRbwwR2KSi8SaQSHfPFVtpF7i2zb2iA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gletJ3GKeFn3JS2fFyF2CQwACDYlFmonG+mVIJg5BHWcuDPREfvMX8xVNCS/ENg1h 6WiNEB10xCdhR3ExTWd9koP+25kme4Q9WPArdD7rqld04qTyFu8ZHgfT86vqJsitjd ZUlAwsA4nxWXtMCclLUfly6a8pNq3xMEDUO9+ET4= Received: from epsnrtp3.localdomain (unknown [182.195.42.164]) by epcas2p2.samsung.com (KnoxPortal) with ESMTP id 20250226081400epcas2p2032d6f1d8b4a712260f3cead3d481b54~ns-PETAAF3273832738epcas2p20; Wed, 26 Feb 2025 08:14:00 +0000 (GMT) Received: from epsmgec2p1-new.samsung.com (unknown [182.195.36.68]) by epsnrtp3.localdomain (Postfix) with ESMTP id 4Z2nLJ1Gdkz4x9Q8; Wed, 26 Feb 2025 08:14:00 +0000 (GMT) Received: from epcas2p4.samsung.com ( [182.195.41.56]) by epsmgec2p1-new.samsung.com (Symantec Messaging Gateway) with SMTP id 24.93.32010.84DCEB76; Wed, 26 Feb 2025 17:14:00 +0900 (KST) Received: from epsmtrp2.samsung.com (unknown [182.195.40.14]) by epcas2p2.samsung.com (KnoxPortal) with ESMTPA id 20250226081359epcas2p2a6a1f3f92540660129164734fa6eaa64~ns-OFgA-w3273432734epcas2p2w; Wed, 26 Feb 2025 08:13:59 +0000 (GMT) Received: from epsmgmcp1.samsung.com (unknown [182.195.42.82]) by epsmtrp2.samsung.com (KnoxPortal) with ESMTP id 20250226081359epsmtrp2621ee7ab8e35576876ef62cf52962a88~ns-ODvo2U2522125221epsmtrp2l; Wed, 26 Feb 2025 08:13:59 +0000 (GMT) X-AuditID: b6c32a4d-abdff70000007d0a-a4-67becd48fff5 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgmcp1.samsung.com (Symantec Messaging Gateway) with SMTP id C5.91.33707.74DCEB76; Wed, 26 Feb 2025 17:13:59 +0900 (KST) Received: from localhost.localdomain (unknown [10.229.95.142]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250226081359epsmtip29538791f5635c35baf910182ef65310a~ns-N1dgNy2366323663epsmtip2J; Wed, 26 Feb 2025 08:13:59 +0000 (GMT) From: Hyesoo Yu To: Cc: janghyuck.kim@samsung.com, vbabka@suse.cz, harry.yoo@oracle.com, Hyesoo Yu , 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 Subject: [PATCH v4 2/2] mm: slub: call WARN() when the slab detect an error Date: Wed, 26 Feb 2025 17:12:01 +0900 Message-ID: <20250226081206.680495-3-hyesoo.yu@samsung.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20250226081206.680495-1-hyesoo.yu@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDJsWRmVeSWpSXmKPExsWy7bCmha7H2X3pBj+nsFlM7DGwmLN+DZvF 9W9vGC3uL3vGYvG38wKrxcruZjaLzXOKLS7vmsNmcW/Nf1aLts//gMSSjUwWE9eIWsxu7GN0 4PXYOesuu8eCTaUem1Z1snls+jSJ3aPr7RUmjxMzfrN4PLkyncljYcNUZo+PT2+xePRtWcXo cWbBEXaPz5vkAniism0yUhNTUosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVc fAJ03TJzgH5QUihLzCkFCgUkFhcr6dvZFOWXlqQqZOQXl9gqpRak5BSYF+gVJ+YWl+al6+Wl llgZGhgYmQIVJmRnPL8rX3BWpWJT41aWBsYbsl2MnBwSAiYSm/c/ZOxi5OIQEtjDKHHpww82 kISQwCdGiVe7hCASQPbkkxtZYTpe3z/LCpHYyShxc+lDNgjnM6PElqetYFVsAuoSJ7YsYwSx RQRYJFZ+/84CUsQssI5ZYuX8yWAJYQFviVmND1lAbBYBVYnGicvBdvMKWEvcuLkXap28xO01 J8FqOAVsJN5svsMCUSMocXLmEzCbGaimeetsZpAFEgI7OCTOf93NDtHsItE6ew2ULSzx6vgW KFtK4vO7vWwQdrHEtsWHmSCaGxglNnfcZ4ZIGEvMetYOdCkH0AZNifW79EFMCQFliSO3oPby SXQc/ssOEeaV6GgTgmhUlti/bB4LhC0p8WhtO9QrHhLv3j9lhwRvPzCwHkVMYFSYheSbWUi+ mYWwdwEj8ypGqdSC4tz01GSjAkPdvNRyeCQn5+duYgQnay3fHYyv1//VO8TIxMF4iFGCg1lJ hJczc0+6EG9KYmVValF+fFFpTmrxIUZTYHhPZJYSTc4H5ou8knhDE0sDEzMzQ3MjUwNzJXHe 6h0t6UIC6YklqdmpqQWpRTB9TBycUg1M80U4zl//FPDPJP2Gb4fdrUdWPEfOKS6YzMT05Nyt PxMYLTatqD0cp3tE+fdNnvJ6Ntb+g9/E+YJnfnsltsGwYk2Y5c3Onrvz1vOeqk95OHXtgphV TyTO9mXbNml9neRuxb5HhmtaBtvv324Fm05NDjzZ2/+rMkuXdVaxU40zs99pGbPVxkxeH0U9 /z7ee6mw0dNju80kfslCD881rItWvatu3MhebT25vF9x24Wjb/7sv9q5sdh/08GdPDlM10Kk FvAGfdtSI9B49Jdi9dbyuF+7T4dKzipJCp999LxPxSSG5RXTUvcddegwvdu2qIX5YCmf3++n Nv38yyXNrfaq8KkrFlsUyS6v7lses/+lEktxRqKhFnNRcSIApxLoJl8EAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsWy7bCSvK772X3pBt2rxCwm9hhYzFm/hs3i +rc3jBb3lz1jsfjbeYHVYmV3M5vF5jnFFpd3zWGzuLfmP6tF2+d/QGLJRiaLiWtELWY39jE6 8HrsnHWX3WPBplKPTas62Tw2fZrE7tH19gqTx4kZv1k8nlyZzuSxsGEqs8fHp7dYPPq2rGL0 OLPgCLvH501yATxRXDYpqTmZZalF+nYJXBnP78oXnFWp2NS4laWB8YZsFyMnh4SAicTr+2dZ uxi5OIQEtjNKtMw9xQiRkJSY9fkkE4QtLHG/5QhU0UdGibXLfrOAJNgE1CVObFkG1iAiwCKx 8vt3FpAiZoE9zBJvmrezgiSEBbwlZjU+BGtgEVCVaJy4nA3E5hWwlrhxcy8rxAZ5idtrToLV cArYSLzZfAfI5gDaZi1xdKkMRLmgxMmZT8BKmIHKm7fOZp7AKDALSWoWktQCRqZVjKKpBcW5 6bnJBYZ6xYm5xaV56XrJ+bmbGMFxpBW0g3HZ+r96hxiZOBgPMUpwMCuJ8HJm7kkX4k1JrKxK LcqPLyrNSS0+xCjNwaIkzquc05kiJJCeWJKanZpakFoEk2Xi4JRqYAoxqo6WW/wz2V1r6Wwd 5VBr+YvPs0X4UqdF8x08vNrL1MfLzWrZq8jTN3pVuOXVnXue8Sw4sGB/rfPPxsWXvpQLvrkk z52k3X7o5nuX5/NtfRx+K85Yb6OwuuzUA9HNf3rfm2xZsMG4jVlLXP6LkMcldv/HeVvYORU0 NLo/ZkV7ReZqF3jJNcmJvp6RW5Ky9GL66yiedTxLa3Y+ucHSbShkInSez37CtoKTnFu8F617 U7Qzz/tDM7vwnBjbo5I+/a7sHo5cxmZVsllh5ziMHWP0XRwOaPKYvthYeu4Si9g07+91L71W ie9RvnqiTo6pNGOjePpTb6FtEUffKyoI8pw//YE9Q3D/2frpES+UWIozEg21mIuKEwFDz40I EgMAAA== X-CMS-MailID: 20250226081359epcas2p2a6a1f3f92540660129164734fa6eaa64 X-Msg-Generator: CA X-Sendblock-Type: AUTO_CONFIDENTIAL CMS-TYPE: 102P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20250226081359epcas2p2a6a1f3f92540660129164734fa6eaa64 References: <20250226081206.680495-1-hyesoo.yu@samsung.com> X-Rspam-User: X-Rspamd-Queue-Id: CA44912000A X-Rspamd-Server: rspam07 X-Stat-Signature: wo4wj5mtb5ui5uahiyj5pfrg1o117ujh X-HE-Tag: 1740557643-103887 X-HE-Meta: U2FsdGVkX19pDHJa9qCDJIq1urWR+xzzRpUn1g00Bnrz1wmi4ADMOJw1ATsHI0gX/ke4pvycP7MUpt9bJyrsShha+gdYIyR5MFyFK859gTEiYMkqH0kgPk6FY4Hjh8wLznoyuHKHesyI55PKA9TdrEpDy+ItkkA1j20KkpbdU9LJmIdJwcLaQhjkyfK02AXoXzFtVz9KPVy9yD9dbiN3+2cD/K4KO6iBqvni09rwr1kZQ2R69tvDxfth+mIEXMczrGPuvU/E9tkYgzMwiI17R0qSBvaD347HYgu6Bfd4cSmgGoaqefqVIJvktRjEn000bWWnJAFqaSzCw4K5VNbQRa1h+ObzkQpdRk+1V4piCDA3vpQNALAZaF5LxlAYyJw9W4P1bSDgph+AH7F9rCTPnQw7+HzenyEYW6UQwWc3lTdDmFVPOPG9aO03btEgO5hzfJJeRulPUZ5+FeNVo4+czaL85xqMiJ75kSoYWQNr8QgF36IMdA30nLb4WqBsqKxNj1Dmm9nRS8XUWUrcxOb6GEai7MuBXJrp9P4sNOPJcjIJ22rKzDGZx2H9lfbUjt/kp+a+RF7f46DBWInXPc5ATcIRzRol8Eej22Pg82NuDM3Icm7vuegV8SgWTxaWt8AiuLdB2K8VDd8EADn+TQyNdT3aRAIl8Gnzy1Aqb9L9Dt/hKumz5EZtrjbzUnq/YlIckg5JmAkAE3P68fWcPLsFjJdd9DZc8UkiYVlG9i0+xzABnezzz3tfLN6zmlo5FwDEX3Zi7zRuKw6CQ+wlUtpWEtTgLOzjnANsNpltndSHDOEu4PRcjKUKMElDbhn2YxqKp8ILjauJ5zqWYccVzB3Xy0R4XRSWIzBMW9OqDK/9v4ZdpmwU7Kh/IC1T+shScja63HSR4bFVMNzFZMSbiiAc8wLZR9Xfpni+ANWuJna2gGPOdR81yvmg6wlxNT2MHxOXWCM3V6A52xrnq4wytNS EdYZjEJB imHH9lNblhldHfn8L/0D+Ge7XW9hL6dqhm4biMISnB+OXQIDnKCfDGtHCW+K9ejJGK0wnX8ap61pylrG0qTJ24IypnmFjGpKlIpf+VEUiwmaICKCHHlNoWbtd0tUgfWzl22rbaYWXBw/KYndnj23vZBVlZYL/65/iQMHm 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: 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 useful to use WARN() to catch errors at the point of issue because WARN() could trigger panic for system debugging when panic_on_warn is enabled. WARN() is added where to detect the error on slab_err and object_err. It makes sense to only do the WARN() after printing the logs. slab_err is splited to __slab_err that calls the WARN() and it is called after printing logs. Changes in v4: - Remove WARN() in kmem_cache_destroy to remove redundant warning. Changes in v3: - move the WARN from slab_fix to slab_err, object_err and check_obj to use WARN on all error reporting paths. Changes in v2: - Replace direct calling with BUG_ON with the use of WARN in slab_fix. Signed-off-by: Hyesoo Yu --- mm/slab_common.c | 3 --- mm/slub.c | 31 +++++++++++++++++++------------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index 477fa471da18..d13f4ffe252b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -517,9 +517,6 @@ void kmem_cache_destroy(struct kmem_cache *s) kasan_cache_shutdown(s); err = __kmem_cache_shutdown(s); - if (!slab_in_kunit_test()) - WARN(err, "%s %s: Slab cache still has objects when called from %pS", - __func__, s->name, (void *)_RET_IP_); list_del(&s->list); diff --git a/mm/slub.c b/mm/slub.c index 8c13cd43c0fd..4961eeccf3ad 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1096,8 +1096,6 @@ static void print_trailer(struct kmem_cache *s, struct slab *slab, u8 *p) /* Beginning of the filler is the free pointer */ print_section(KERN_ERR, "Padding ", p + off, size_from_object(s) - off); - - dump_stack(); } static void object_err(struct kmem_cache *s, struct slab *slab, @@ -1109,6 +1107,8 @@ static void object_err(struct kmem_cache *s, struct slab *slab, slab_bug(s, "%s", reason); print_trailer(s, slab, object); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); + + WARN_ON(1); } static bool freelist_corrupted(struct kmem_cache *s, struct slab *slab, @@ -1125,6 +1125,14 @@ static bool freelist_corrupted(struct kmem_cache *s, struct slab *slab, return false; } +static void __slab_err(struct slab *slab) +{ + print_slab_info(slab); + add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); + + WARN_ON(1); +} + static __printf(3, 4) void slab_err(struct kmem_cache *s, struct slab *slab, const char *fmt, ...) { @@ -1138,9 +1146,7 @@ static __printf(3, 4) void slab_err(struct kmem_cache *s, struct slab *slab, vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); slab_bug(s, "%s", buf); - print_slab_info(slab); - dump_stack(); - add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); + __slab_err(slab); } static void init_object(struct kmem_cache *s, void *object, u8 val) @@ -1313,9 +1319,10 @@ slab_pad_check(struct kmem_cache *s, struct slab *slab) while (end > fault && end[-1] == POISON_INUSE) end--; - slab_err(s, slab, "Padding overwritten. 0x%p-0x%p @offset=%tu", - fault, end - 1, fault - start); + slab_bug(s, "Padding overwritten. 0x%p-0x%p @offset=%tu", + fault, end - 1, fault - start); print_section(KERN_ERR, "Padding ", pad, remainder); + __slab_err(slab); restore_bytes(s, "slab padding", POISON_INUSE, fault, end); } @@ -5428,14 +5435,13 @@ static int calculate_sizes(struct kmem_cache_args *args, struct kmem_cache *s) return !!oo_objects(s->oo); } -static void list_slab_objects(struct kmem_cache *s, struct slab *slab, - const char *text) +static void list_slab_objects(struct kmem_cache *s, struct slab *slab) { #ifdef CONFIG_SLUB_DEBUG void *addr = slab_address(slab); void *p; - slab_err(s, slab, text, s->name); + slab_bug(s, "Objects remaining on __kmem_cache_shutdown()"); spin_lock(&object_map_lock); __fill_map(object_map, s, slab); @@ -5450,6 +5456,8 @@ static void list_slab_objects(struct kmem_cache *s, struct slab *slab, } } spin_unlock(&object_map_lock); + + __slab_err(slab); #endif } @@ -5470,8 +5478,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n) remove_partial(n, slab); list_add(&slab->slab_list, &discard); } else { - list_slab_objects(s, slab, - "Objects remaining in %s on __kmem_cache_shutdown()"); + list_slab_objects(s, slab); } } spin_unlock_irq(&n->list_lock);