From patchwork Thu Feb 20 03:39:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyesoo Yu X-Patchwork-Id: 13983275 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 81221C021B1 for ; Thu, 20 Feb 2025 03:42:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 159C54401C4; Wed, 19 Feb 2025 22:42:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 06AE14401AE; Wed, 19 Feb 2025 22:42:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E289F4401C4; Wed, 19 Feb 2025 22:42:01 -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 BF60C4401AE for ; Wed, 19 Feb 2025 22:42:01 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 822EEB16DA for ; Thu, 20 Feb 2025 03:42:01 +0000 (UTC) X-FDA: 83138924442.23.16D97F5 Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by imf30.hostedemail.com (Postfix) with ESMTP id 7430980005 for ; Thu, 20 Feb 2025 03:41:58 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=plkFSWtX; spf=pass (imf30.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=1740022919; 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=H4azcLXLwKXZ7Rp0EynOTNSZHZ93h+/31V07oqrMJzE=; b=xNS6AyNTrUMEwchMmFCUiDljQAYNNxvkfiUEb7MAkSMnqvxAwjr5xbRFCsMCLHZgwxi70V loEw+1R8YVwGm+4rwi4xEq5IAGDS/PpXYhtvyTEj09z3AEik+NsGDPx0GejKWEJclFI+0O 3BrinhZAB2Cy34NihHgHuOBbwnOugio= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740022919; a=rsa-sha256; cv=none; b=7yFg3IHs203lZmZkftlkqlWrgdarPME8ET81976+tgXaABeR3KPxs2AzT0oQxzicfb/Ao6 bz/J+3nu0yYhp7pLBcVDaiTNTPS8icKM0B7lhZaxCRSrEbvN97ihN/HjAzcE703vZiCutM DSg2lXmoJ2a1eh6x6JSfVIaKfrrY2Hg= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=plkFSWtX; spf=pass (imf30.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 epcas2p2.samsung.com (unknown [182.195.41.54]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20250220034155epoutp0266deb7d277bcf993c2cf8847318062bb~lzZ9Uq7b51268312683epoutp02P for ; Thu, 20 Feb 2025 03:41:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20250220034155epoutp0266deb7d277bcf993c2cf8847318062bb~lzZ9Uq7b51268312683epoutp02P DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1740022915; bh=H4azcLXLwKXZ7Rp0EynOTNSZHZ93h+/31V07oqrMJzE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=plkFSWtXZj5cGCjGL3BRt/+08UsrXpYzNJo9D3v9oGlxEuUhesuH9mBLp9UaAYS/B kxUtY8DnA2ryO80PyiSlpRJ7jH/WImsMxEOqRgkkGdmqRDgoSNOVefCsc5rxLTe0wg QM6L0JI5acNbrZW2vKBmb2gBbq4t+PgokbV1aIGw= Received: from epsnrtp4.localdomain (unknown [182.195.42.165]) by epcas2p2.samsung.com (KnoxPortal) with ESMTP id 20250220034154epcas2p23b341bf96d32260f088e3f3990446018~lzZ8zkyUU2078020780epcas2p2I; Thu, 20 Feb 2025 03:41:54 +0000 (GMT) Received: from epsmges2p1.samsung.com (unknown [182.195.36.97]) by epsnrtp4.localdomain (Postfix) with ESMTP id 4Yyzb60hr1z4x9Pw; Thu, 20 Feb 2025 03:41:54 +0000 (GMT) Received: from epcas2p2.samsung.com ( [182.195.41.54]) by epsmges2p1.samsung.com (Symantec Messaging Gateway) with SMTP id FB.DE.23368.184A6B76; Thu, 20 Feb 2025 12:41:54 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas2p2.samsung.com (KnoxPortal) with ESMTPA id 20250220034153epcas2p286194dda687b47a3dec8fb89b868f96f~lzZ7tCD2q2078020780epcas2p2F; Thu, 20 Feb 2025 03:41:53 +0000 (GMT) Received: from epsmgmc1p1new.samsung.com (unknown [182.195.42.40]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250220034153epsmtrp1cbab2796f3f2a97c7397666d4f981bd1~lzZ7sUnvk1425814258epsmtrp1X; Thu, 20 Feb 2025 03:41:53 +0000 (GMT) X-AuditID: b6c32a45-db1ed70000005b48-49-67b6a4818df1 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgmc1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id F3.DF.23488.184A6B76; Thu, 20 Feb 2025 12:41:53 +0900 (KST) Received: from localhost.localdomain (unknown [10.229.95.142]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250220034153epsmtip2f87312153609b5094ae5e8f81ba45d09~lzZ7cjPLm1561715617epsmtip2G; Thu, 20 Feb 2025 03:41:53 +0000 (GMT) From: Hyesoo Yu To: Cc: janghyuck.kim@samsung.com, vbabka@suse.cz, 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 v3 1/2] mm: slub: Print the broken data before restoring slub. Date: Thu, 20 Feb 2025 12:39:43 +0900 Message-ID: <20250220033953.1606820-2-hyesoo.yu@samsung.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20250220033953.1606820-1-hyesoo.yu@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPJsWRmVeSWpSXmKPExsWy7bCmmW7Tkm3pBhOnM1lM7DGwmLN+DZvF 9W9vGC3+dl5gtVjZ3cxmsXlOscXlXXPYLO6t+c9q0fb5H5BYshGofo2oxezGPkYHHo+ds+6y eyzYVOqxaVUnm8emT5PYPbreXmHyODHjN4vHkyvTmTwWNkxl9ujbsorR48yCI+wenzfJBXBH ZdtkpCampBYppOYl56dk5qXbKnkHxzvHm5oZGOoaWlqYKynkJeam2iq5+AToumXmAF2upFCW mFMKFApILC5W0rezKcovLUlVyMgvLrFVSi1IySkwL9ArTswtLs1L18tLLbEyNDAwMgUqTMjO uPH2JlvBUbWKk9PbmRoYd8h1MXJySAiYSPzo/8DYxcjFISSwg1HizZKHUM4nRomO6dvYQaqE BL4xSny6ZQHT0burmR2iaC+jxKudncwQzmdGidYPk9lAqtgE1CVObFnGCGKLCLBIrPz+nQWk iFlgBrPE9kO7mUASwgIBEp2H1jKD2CwCqhLPLh8Ca+YVsJFonD+JDWKdvMTtNSdZQGxOAVuJ N23L2CFqBCVOznwCFmcGqmneOhvsCgmBLRwSC5ovAC3gAHJcJHZvFoWYIyzx6vgWdghbSuJl fxuUXSyxbfFhJojeBkaJzR33mSESxhKznrUzgsxhFtCUWL9LH2KkssSRW1Br+SQ6Dv9lhwjz SnS0CUE0KkvsXzaPBcKWlHi0tp0VwvaQuHBqKyskrCYwSjw4+I59AqPCLCTfzELyzSyExQsY mVcxiqUWFOempxYbFRjCYzg5P3cTIzgla7nuYJz89oPeIUYmDsZDjBIczEoivG31W9KFeFMS K6tSi/Lji0pzUosPMZoCw3ois5Rocj4wK+SVxBuaWBqYmJkZmhuZGpgrifNW72hJFxJITyxJ zU5NLUgtgulj4uCUamDa+j9Qd07fnz8Tkl7f0D5Qv21i3/njR58/9dwkOHFnxM1g38tzxa4r vJ7DMuPbXqdFc59ZxTV3rU/ne6PG9Dgs6eDrRK3ko3MaHs1yn/B34b/4241R8051MHw97u/0 QGmKWwCzxMvtDwqel2dqNCyY82Dq5ufLvu1T+3Rtek36hiiVu0+emxwNC9xVEe0X+bRJ1rZn sfDE7NnTtJUdMlVz323c/KZiIs8LjeNndmlf9+Od3XWzuCrMaV3xrs/H3ZKcswNeaxyfM0n/ 2w35v/ZlGmdXf3XXYLDMVGG6WRX140qL2tkDv5zm7En9Ou/tyYl2f7QenNp9btLVk2cjPOYt OHdAzU9abt5U9VmxVt/EK6qVWIozEg21mIuKEwENL4GwUgQAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNLMWRmVeSWpSXmKPExsWy7bCSvG7jkm3pBgs+iVpM7DGwmLN+DZvF 9W9vGC3+dl5gtVjZ3cxmsXlOscXlXXPYLO6t+c9q0fb5H5BYspHJYuIaUYvZjX2MDjweO2fd ZfdYsKnUY9OqTjaPTZ8msXt0vb3C5HFixm8WjydXpjN5LGyYyuzRt2UVo8eZBUfYPT5vkgvg juKySUnNySxLLdK3S+DKuPH2JlvBUbWKk9PbmRoYd8h1MXJySAiYSPTuambvYuTiEBLYzSgx 93MXG0RCUmLW55NMELawxP2WI6wQRR8ZJQ7/ms4MkmATUJc4sWUZI4gtIsAisfL7dxaQImaB JcwSx+ZPAysSFvCTWPj2LwuIzSKgKvHs8iGwDbwCNhKN8ydBbZOXuL3mJFgNp4CtxJu2Zewg thBQzbl9x5kg6gUlTs58AlbDDFTfvHU28wRGgVlIUrOQpBYwMq1ilEwtKM5Nz002LDDMSy3X K07MLS7NS9dLzs/dxAiOHy2NHYzvvjXpH2Jk4mA8xCjBwawkwttWvyVdiDclsbIqtSg/vqg0 J7X4EKM0B4uSOO9Kw4h0IYH0xJLU7NTUgtQimCwTB6dUA1PAjSOffwe0lK8uvfNrz8SrSYfu 5f2Qbvq5oWTrccU5BUEXd+1zDXmzOcHQQn1PM9vPNyFrVSy+7JsQJuR//TZn/9aCRUfz4jQ3 dF/lluZ8dH9mVW2ZonPRApmIzetcNjWGTVM/YzQjNFNBmuWcj7iov/8U70XzenbZ5PqdkNLK evf1c5N2+RXLq9yWKlujShZXncu20rYQe/AyRbHXoSSd1ej2g3WK21/O2a0pHRhql85q2D/P RX3ywk8vxK/q7onWsWB/JvOXr/Tgk+wbM8q4DFwWbfb91f9h/dHSN00xbZ/lnqa/sUyeVLxh R0qV9Ial1aW1S69dXWezlyclisd3yvrwYssXjLY1dz6yuiixFGckGmoxFxUnAgBLUrd/DgMA AA== X-CMS-MailID: 20250220034153epcas2p286194dda687b47a3dec8fb89b868f96f X-Msg-Generator: CA X-Sendblock-Type: AUTO_CONFIDENTIAL CMS-TYPE: 102P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20250220034153epcas2p286194dda687b47a3dec8fb89b868f96f References: <20250220033953.1606820-1-hyesoo.yu@samsung.com> X-Rspam-User: X-Rspamd-Queue-Id: 7430980005 X-Rspamd-Server: rspam07 X-Stat-Signature: fwqz37js8ogyswotr597j1hc9o3w9i4f X-HE-Tag: 1740022918-325707 X-HE-Meta: U2FsdGVkX19jjMnKt/vCqyjNdaLV/4cryA0mPq0+Z0mASHHQ8qJQX5Xf4y9tbEeyr+ZnY04K2UcljqnIHccwUIRnzURmdPOIFQG1lM4Q3N/Czkxec7WkUTEMxxHn8fXnVz4UFmadAlpE2rXrZDHjxKvwsPiQmuGL0F+Ka0/HfoEs87VxCO1JlNupLcVwI7JpZh7WMPwVsfgQkQwlVSIrEfIkVlu7A7YflFwSAh8eqG95GkFJLW1b+Jdb80l9blWv0ZcfGfYTgC2sxSk79+XGMO7unQrBNQvEzThdFSiiwkUZbE27dbZUgCcQ29PHGqGbfX2xVAhLsDuYYqzooRJTkpGvzo3dRwOAxqQnbYD1WqpD6n6w7T2vVNfMxBVCgLzgMtH+idnJgFSVdzfXJ8HdHypQ+5k43RFhCUii9Dov8d1ZwC2IOQTk+SCnB93kfGOy4ExnCrZDZNfYTKMLMawcpiNg/xPNW1udWvweXOl6AOUhMy69173li5HN2SNoNoGNrie9ho01SmfxClu8cxBmLDgaCZWtV++bFT0r83DSW6AXmYf96qIdV+KJDMwItXSTDlw0EZFtDF7WLRtnsprb4TDcqWBx/7F6RsLeUjImr+n3+XDqwjADCjsVvSWI/v1v/NwJ8clj05ht5sId+4pgnxGQmITEMwt3BSX45mbN9Sha6YEPfrAqEju6hQJTEByCyJsQDrBqiZzy40AcYgz7KLG/sLFaM6qP6cU2vhUmo+4xffBSUHAh9LpfCNeg/xzEJPfdU3VK7HybWUDiBlytwozk4Y655cZmc+OnQvcH+GVk/GTmsbwNB8s8eGm/sMe2Dd9oK5Hah/xShySn3OD40eYZJziPvhbcQBJlhQK51LiuRrOKOyKDlhnAJl4n0TiuvRr04t4Fl0vFB3f6yp1CjyJWDzjQqO43TeYdR7PDezTePXVfkC3dDAIT0u3hIHswhl1eWJvPt7jwyn3b4wf dfKxz2us 20JKmQSJBiKgia/ETo1oYCFdTuMKhUicnHU0zrC90RS/0Q56oszGOVHe/Ip6cJCXSCUMkL6v9m1qyIINGKL+qg/YiAd2pgIKeYqKryun4TeSLFjzb2gxHwOEcLFVASiqXTge4xvcpv5Wcsicxwcmm/BqAz6FYRY6XBR+c 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 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 Change-Id: I73cf76c110eed62506643913517c957c05a29520 --- mm/slub.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index b3969d63cc04..de62fed12236 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1192,12 +1192,13 @@ 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; u8 *addr = slab_address(slab); + char buf[100]; metadata_access_enable(); fault = memchr_inv(kasan_reset_tag(start), value, bytes); @@ -1212,11 +1213,14 @@ 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); + scnprintf(buf, 100, "%s overwritten", what); + if (slab_obj_print) + object_err(s, slab, object, buf); + skip_bug_print: restore_bytes(s, what, value, fault, end); return 0; @@ -1279,7 +1283,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 +1333,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 +1346,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 +1354,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 +1370,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 +1400,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 Thu Feb 20 03:39:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyesoo Yu X-Patchwork-Id: 13983276 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 04F99C021B0 for ; Thu, 20 Feb 2025 03:42:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 109174401C5; Wed, 19 Feb 2025 22:42:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 092454401AE; Wed, 19 Feb 2025 22:42:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E4EBB4401C5; Wed, 19 Feb 2025 22:42:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C5EB74401AE for ; Wed, 19 Feb 2025 22:42:03 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 4ADC8120959 for ; Thu, 20 Feb 2025 03:42:03 +0000 (UTC) X-FDA: 83138924526.21.CA83278 Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by imf27.hostedemail.com (Postfix) with ESMTP id 615FD40007 for ; Thu, 20 Feb 2025 03:42:00 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=jwrcLfBR; spf=pass (imf27.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=1740022920; 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=vjT+FDRV2/jMUKEGLa+CBlGRc7uvf1OYkjsKrrMpdZo=; b=mRbi70h+M9mzRLLveP8opnsYuVkZuspKCRLgwLYJcnEohejn0oDGGyL7EEg8MxJ1NmPNhd F7LEpbcJlHes1xxOjZ+4r6CQ+kcJ1yW7AuLUtcX2Gma1nbIFSLtLveUONy5iapcGxhseqA fYD3hvQ9DA0+OMDyXpcc9Si8LczMT7A= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=jwrcLfBR; spf=pass (imf27.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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740022920; a=rsa-sha256; cv=none; b=1VsPCtxu57ugvqmNtiNBcxmizMRNZjLkSFX22+LbDd/xYA+BJnpmVHh8/x626Byg8nlzlm iCPryGjkNK+vdPZSutyHVPFmivvLe/e5tUn9DT/KxO5hBRuoSkxN/ZNHQrb31G9+c4ldi2 E14OGZDIrDtpZKzQNaYpURieQ2EWSIs= Received: from epcas2p3.samsung.com (unknown [182.195.41.55]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20250220034157epoutp021f05443ec9d523f092b40320d54e986d~lzZ-Yn5GL0989109891epoutp02i for ; Thu, 20 Feb 2025 03:41:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20250220034157epoutp021f05443ec9d523f092b40320d54e986d~lzZ-Yn5GL0989109891epoutp02i DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1740022917; bh=vjT+FDRV2/jMUKEGLa+CBlGRc7uvf1OYkjsKrrMpdZo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jwrcLfBR7DyGy7+8VT9UdXxTpVs0Tk/u+3krIfwfTiMpvfHgABMIZ2OgmmyZgYSjP 1mW7TfkltEWjQV3kt+UJ9RFi20zsLNVuqUF2FUoiEbkHYQBkrS2nljyYpcEjuKj9al g1YqLnwGrh8vaic/6OueIU130WuqaXDCa09srofM= Received: from epsnrtp4.localdomain (unknown [182.195.42.165]) by epcas2p3.samsung.com (KnoxPortal) with ESMTP id 20250220034156epcas2p3baa2889f044da38ee9248a81386468cd~lzZ_8thZ42335023350epcas2p3N; Thu, 20 Feb 2025 03:41:56 +0000 (GMT) Received: from epsmgec2p1-new.samsung.com (unknown [182.195.36.89]) by epsnrtp4.localdomain (Postfix) with ESMTP id 4Yyzb84lm8z4x9Q2; Thu, 20 Feb 2025 03:41:56 +0000 (GMT) Received: from epcas2p2.samsung.com ( [182.195.41.54]) by epsmgec2p1-new.samsung.com (Symantec Messaging Gateway) with SMTP id C4.3D.32010.484A6B76; Thu, 20 Feb 2025 12:41:56 +0900 (KST) Received: from epsmtrp2.samsung.com (unknown [182.195.40.14]) by epcas2p1.samsung.com (KnoxPortal) with ESMTPA id 20250220034155epcas2p156b90cfb655a03cce4bfac9683f0bfe1~lzZ99UehS0484304843epcas2p1Y; Thu, 20 Feb 2025 03:41:55 +0000 (GMT) Received: from epsmgmcp1.samsung.com (unknown [182.195.42.82]) by epsmtrp2.samsung.com (KnoxPortal) with ESMTP id 20250220034155epsmtrp228b8489697316fce430374a5077087a8~lzZ98qRJW0154001540epsmtrp2g; Thu, 20 Feb 2025 03:41:55 +0000 (GMT) X-AuditID: b6c32a4d-acffa70000007d0a-4b-67b6a484f61d Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgmcp1.samsung.com (Symantec Messaging Gateway) with SMTP id E5.C7.33707.384A6B76; Thu, 20 Feb 2025 12:41:55 +0900 (KST) Received: from localhost.localdomain (unknown [10.229.95.142]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250220034155epsmtip2387cdf1b25b38d44199bd5ae42908dcf~lzZ9s6xmK1425514255epsmtip2i; Thu, 20 Feb 2025 03:41:55 +0000 (GMT) From: Hyesoo Yu To: Cc: janghyuck.kim@samsung.com, vbabka@suse.cz, 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 v3 2/2] mm: slub: call WARN() when the slab detect an error Date: Thu, 20 Feb 2025 12:39:44 +0900 Message-ID: <20250220033953.1606820-3-hyesoo.yu@samsung.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20250220033953.1606820-1-hyesoo.yu@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMJsWRmVeSWpSXmKPExsWy7bCmmW7Lkm3pBkfvqFhM7DGwmLN+DZvF 9W9vGC3+dl5gtVjZ3cxmsXlOscXlXXPYLO6t+c9q0fb5H5BYspHJYuIaUYvZjX2MDjweO2fd ZfdYsKnUY9OqTjaPTZ8msXt0vb3C5HFixm8WjydXpjN5LGyYyuzRt2UVo8eZBUfYPT5vkgvg jsq2yUhNTEktUkjNS85PycxLt1XyDo53jjc1MzDUNbS0MFdSyEvMTbVVcvEJ0HXLzAG6XEmh LDGnFCgUkFhcrKRvZ1OUX1qSqpCRX1xiq5RakJJTYF6gV5yYW1yal66Xl1piZWhgYGQKVJiQ nXF3tVbBacWKfz37WRsYV0h3MXJySAiYSNzc9Yqti5GLQ0hgD6PEqhUnmSGcT4wSm+fcR3De TVjECNOy/PszVojETkaJ08d/MEE4nxkl3qzYywpSxSagLnFiyzKwDhEBFomV37+zgBQxC8xg lth+aDcTSEJYwFuif+ZMdhCbRUBVYtraZ2BxXgEbiWs3NkCtk5e4veYkC4jNKWAr8aZtGTtE jaDEyZlPwOLMQDXNW2czQ9Qv5ZA4fMQdwnaRmHj4KTuELSzx6vgWKFtK4vO7vWwQdrHEtsWH wT6QEGgAerrjPtQgY4lZz9qBjuAAWqApsX6XPogpIaAsceQW1Fo+iY7Df9khwrwSHW1CEI3K EvuXzWOBsCUlHq1tZ4WwPSQeL1wNDasJwBB9vIlxAqPCLCTfzELyzSyExQsYmVcxSqUWFOem pyYbFRjq5qWWw2M5OT93EyM4NWv57mB8vf6v3iFGJg7GQ4wSHMxKIrxt9VvShXhTEiurUovy 44tKc1KLDzGaAsN7IrOUaHI+MDvklcQbmlgamJiZGZobmRqYK4nzVu9oSRcSSE8sSc1OTS1I LYLpY+LglGpgat0VfDbof/G803bB54s5JCy4LT7xuz774JV9cGp885aru2ViDkVsqz1uPCfW 2vG8p6benckf1Vp6i0y/rGy6o8v+W3mqeLDVrl1z83772V0WP9C/ILZP+PBR0e/MD283q4pf bk7Ne35g/W7vM24rEicWOIpEr+bME/icUXqDN73lj558nLN1yvICRifTs3td54fJJDCK1uYt cZ+dzSBxS1bCtapkTyL/gttFxfVbNu5Mnzwrg1eqNffbzFqfGNEftjzMyZwzu3V898flO59t T6+8ELX/U+65hwpupRdW+4eq2R1fs11mB+9p4w1hDof3PV9h86LIdv2p1dtEe+7IXH//iz8q Lj4jnfdT/H4lluKMREMt5qLiRADaHBzGVgQAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRmVeSWpSXmKPExsWy7bCSvG7zkm3pBv9u6FtM7DGwmLN+DZvF 9W9vGC3+dl5gtVjZ3cxmsXlOscXlXXPYLO6t+c9q0fb5H5BYspHJYuIaUYvZjX2MDjweO2fd ZfdYsKnUY9OqTjaPTZ8msXt0vb3C5HFixm8WjydXpjN5LGyYyuzRt2UVo8eZBUfYPT5vkgvg juKySUnNySxLLdK3S+DKuLtaq+C0YsW/nv2sDYwrpLsYOTkkBEwkln9/xtrFyMUhJLCdUWLu svWMEAlJiVmfTzJB2MIS91uOQBV9ZJT4c3o1C0iCTUBd4sSWZWANIgIsEiu/f2cBKWIWWMIs cWz+NGaQhLCAt0T/zJnsIDaLgKrEtLXPwKbyCthIXLuxAWqbvMTtNSfBhnIK2Eq8aVsGVi8E VHNu33GoekGJkzOfgNUwA9U3b53NPIFRYBaS1CwkqQWMTKsYRVMLinPTc5MLDPWKE3OLS/PS 9ZLzczcxgqNGK2gH47L1f/UOMTJxMB5ilOBgVhLhbavfki7Em5JYWZValB9fVJqTWnyIUZqD RUmcVzmnM0VIID2xJDU7NbUgtQgmy8TBKdXANJX1fMDCZSpLTcI4Op73WM89uNjyafbWazWT +Zz2Zu+/dKz0ZuQKg1ev/s5lCIo7eS7L0mmRQf7h+779MV9O9fEu+jDr5dGAsqfab0sZnPv/ t73tUm635F5+9NeLmh0V1lwd8qv+qYhb3r5h87ahO9lc3fi524nWWm375b8PlmyysV7ub5YX HcrzY/+qskXTGVWXue9eJzD5hNnZqLdzdhnM5RTL8jR8Y+14n1fuhllLqaLGD5l9vMF9a9du ONOzxenNtiW78+Rv/ureLhpot6pe7F/+bu72oNigkq0K66dfXFx8W3Q9c3xc03uhXb4tCz0O b3ia4zWfIy691aTFR1+0NbbvBY/JwkKPUoG7SizFGYmGWsxFxYkA097L5QkDAAA= X-CMS-MailID: 20250220034155epcas2p156b90cfb655a03cce4bfac9683f0bfe1 X-Msg-Generator: CA X-Sendblock-Type: AUTO_CONFIDENTIAL CMS-TYPE: 102P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20250220034155epcas2p156b90cfb655a03cce4bfac9683f0bfe1 References: <20250220033953.1606820-1-hyesoo.yu@samsung.com> X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 615FD40007 X-Stat-Signature: o5uq79aw4hhyfu8uor7pgyqw79szns6t X-HE-Tag: 1740022920-188092 X-HE-Meta: U2FsdGVkX1/jEx+o1TO2dRwhDi6CfWHEwKpNIFEweC9i4hqMz4lu/1RzZtGqeNcN5FAmQaXc3VkaLEvQkjyVd6GSIgNMx7/KlTFSFL4+bcB4nnD4ci6+8KDE71vrUzXOH5un7vzhQhHEZa1PwhqShvBOK0v8ZRXDOkvGCDeoK7BErGMkkrNEN68CvzM3HvuuZLx3WPBAjEU6GX4chVcXvFnLojYUMXhCuiOI0fQA5Rv18XjaNZYQwAN1saJRJWPnGHVj8gZk6MZojyhRCQlp78rvar9IA7GeqeZKN0L7bNRuXrXpdMBcDHWcbe4zZrTtOaxp7HIG5eOZ53vC9D5fAP3WW7K9d8Kh+peHaEb4M+eweB6oBZ9VD1YiUa0V/U/uKNVaiRRQCfw98+5zxLA/UyP5WFcesiGfMYkxMU4zublT+Mf/yIy37nT9Ib/yCEjE/OzXaOprVT6F7wkrWMHwWP3orj93+jWjruvTrei31AKpEh7StOKUc2V2/IBBzD2cn8yf0+194I1/ebVScqhsio2b9oxmMN8F1Ehro3tXKj3fMKMdpuRPOM+/6COpL4K/o1XdrS4IgHQU/3DfIchPzlVSspVOvBELIzdowFmDlhZSk17t77BjXLzS1oez2o9TSIRrziIjqF/6YxdatA50vr/Bs4d9F7LG3NXj8zI+/PfsHa/h5K27SZypBXQpsnXMMIEKqZktxFpgqIupuX5Rjn2MpbSk8sXzHOoxWfX2bpprQ+cYp8KuIVHw9GqtZlBAvtX5wyO2wqQVKDLJOZ84E+B+nF2ubaHO/o05GnLegIlszIURgf8s6naxiUOwTCB873hnHR6eOGPhfIrtsKUIdaMmdeLmsE+MYKvVsPw1THq/by68f+r9rKBixWNgGeN/5vgRnO/q71UiLh7OIv/iY/hoRTInmnnt5B670PkFeNs4nCkQhpkHACGIIdLeh2mHjANbNVNSxnffVRL6gxr opbUZ7jW O56dDgn2uzaVGpYgHKWVg7LCLKuvj4Ds38sEW9bAU50qLr5E4gVWkRjHFc2jkua2poEFY+697vHPOO+mnbHij4QhXjGYqZTiM7yW+AwbAdjvRlAmMSqzIlo7FB0CCBCU59W2ZVIK/pTUPwnrbXzwFnt8vDQX/XGp+n20y 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. There are cases where slab_err is called before meaningful logs are printed. If the WARN() in slab_err cause a panic, these logs will not be printed. WARN() should called after these logs are printed. Thus slab_err() is splited to __slab_err that calls the WARN() and it is called after printing logs. Changes in v3: - move the WARN from slab_fix to slab_err, object_err 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 Change-Id: I90b2ea9ffc58e3826f7ae9f1a774bb48c2d43bf4 --- mm/slub.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index de62fed12236..7f0583a71cda 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) @@ -1316,9 +1322,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); } @@ -5431,14 +5438,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); @@ -5453,6 +5459,8 @@ static void list_slab_objects(struct kmem_cache *s, struct slab *slab, } } spin_unlock(&object_map_lock); + + __slab_err(slab); #endif } @@ -5473,8 +5481,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);