From patchwork Wed Aug 31 14:54:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chao Yu X-Patchwork-Id: 12960856 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 0EDEAECAAD1 for ; Wed, 31 Aug 2022 14:55:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8D2A18D0002; Wed, 31 Aug 2022 10:55:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 883018D0001; Wed, 31 Aug 2022 10:55:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 74C758D0002; Wed, 31 Aug 2022 10:55:04 -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 668198D0001 for ; Wed, 31 Aug 2022 10:55:04 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D3A47140659 for ; Wed, 31 Aug 2022 14:55:03 +0000 (UTC) X-FDA: 79860185286.13.EB4366C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id 860B0A0049 for ; Wed, 31 Aug 2022 14:55:03 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9BB4461BE9; Wed, 31 Aug 2022 14:55:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83358C433D6; Wed, 31 Aug 2022 14:54:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1661957702; bh=rsrl9rgDHgzWkXHkQCBHN7rLCeuL9PMu+p5M2KnjqKg=; h=From:To:Cc:Subject:Date:From; b=OWJZvYHa+Xep3KmkaQ+GB7W6pV1vfHPJU7erMHtWkUY6siio4YDl5IQPoDYH6yP2y X4apdWL8/C2AmlWqhHUZDBl+cLeSq+nrMWN8pX9gdy16w9/0UNC3va1Xei6G3iyt8g wlOFiYCrSfHwgNT9S1cWHwUAI0h8BiQcO9308TxGTHhq372v5qkghtxwsBV9x3/AYR OGQ/xEqWCQ5Wl9Caba6JP5LzZXlJ8vg7SoH1zkN+j8BCmCyF3kyEslGi8WECWnFNZ7 Anse4YQclEJ67+8+DLXWDH7+IffvEhxYyMpyjpkP0BvqxZ3yhvCb37KJCf/b/hmhwT sKVCDLUWxDM2A== From: Chao Yu To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, chao@kernel.org, jaegeuk@kernel.org, Chao Yu , stable@kernel.org, syzbot+81684812ea68216e08c5@syzkaller.appspotmail.com, Muchun Song , Hyeonggon Yoo <42.hyeyoo@gmail.com> Subject: [PATCH v2] mm/slub: fix to return errno if kmalloc() fails Date: Wed, 31 Aug 2022 22:54:54 +0800 Message-Id: <20220831145454.858200-1-chao@kernel.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661957703; a=rsa-sha256; cv=none; b=2R//gmw+mLwTavd65AHOFvDNSu7OWauCSfHi5OHRKd21ArYlB+xp/l8o9elgPhUabj1i5u NkO6eHz7K0SmuF955L1EiNcUL/6jy6jQ3x8DWpB0RYulwayYZTwo+1Dzt/+sRXf+g+YlTg Yh7nbjbqciYMaV8HiU0w67lXbvz6QNc= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OWJZvYHa; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf15.hostedemail.com: domain of chao@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chao@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661957703; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=9z0p5Dj5Z2u02h8qAz1gxpSwbNpvmOJD/8i9FZh7ICk=; b=XMY6cQoZ2mSzx+LLC1hIwGGfievDuK0WIC8FvnKwJ5PK0K5PlmAxhbaVS8B1TO7ek9UOWL mLfndPtjdSLI8lDPWFu3dfkc0IxqdYlH+yToyzSz5Sn7JiFxkW1VkPF3zqlhPmf+JZFNFB BtY/FEx3GphkKCg2++FNZDVpCWfeLzE= X-Rspam-User: Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OWJZvYHa; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf15.hostedemail.com: domain of chao@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chao@kernel.org X-Rspamd-Server: rspam07 X-Stat-Signature: ncd67wsto48qca98cszz1ywgpozggd9y X-Rspamd-Queue-Id: 860B0A0049 X-HE-Tag: 1661957703-652842 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: From: Chao Yu In create_unique_id(), kmalloc(, GFP_KERNEL) can fail due to out-of-memory, if it fails, return errno correctly rather than triggering panic via BUG_ON(); kernel BUG at mm/slub.c:5893! Internal error: Oops - BUG: 0 [#1] PREEMPT SMP Call trace: sysfs_slab_add+0x258/0x260 mm/slub.c:5973 __kmem_cache_create+0x60/0x118 mm/slub.c:4899 create_cache mm/slab_common.c:229 [inline] kmem_cache_create_usercopy+0x19c/0x31c mm/slab_common.c:335 kmem_cache_create+0x1c/0x28 mm/slab_common.c:390 f2fs_kmem_cache_create fs/f2fs/f2fs.h:2766 [inline] f2fs_init_xattr_caches+0x78/0xb4 fs/f2fs/xattr.c:808 f2fs_fill_super+0x1050/0x1e0c fs/f2fs/super.c:4149 mount_bdev+0x1b8/0x210 fs/super.c:1400 f2fs_mount+0x44/0x58 fs/f2fs/super.c:4512 legacy_get_tree+0x30/0x74 fs/fs_context.c:610 vfs_get_tree+0x40/0x140 fs/super.c:1530 do_new_mount+0x1dc/0x4e4 fs/namespace.c:3040 path_mount+0x358/0x914 fs/namespace.c:3370 do_mount fs/namespace.c:3383 [inline] __do_sys_mount fs/namespace.c:3591 [inline] __se_sys_mount fs/namespace.c:3568 [inline] __arm64_sys_mount+0x2f8/0x408 fs/namespace.c:3568 Cc: Fixes: 81819f0fc8285 ("SLUB core") Reported-by: syzbot+81684812ea68216e08c5@syzkaller.appspotmail.com Reviewed-by: Muchun Song Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Signed-off-by: Chao Yu Acked-by: David Rientjes --- v2: - add more rvb tags and fixes line mm/slub.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/slub.c b/mm/slub.c index 862dbd9af4f5..e6f3727b9ad2 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -5890,7 +5890,8 @@ static char *create_unique_id(struct kmem_cache *s) char *name = kmalloc(ID_STR_LENGTH, GFP_KERNEL); char *p = name; - BUG_ON(!name); + if (!name) + return ERR_PTR(-ENOMEM); *p++ = ':'; /* @@ -5948,6 +5949,8 @@ static int sysfs_slab_add(struct kmem_cache *s) * for the symlinks. */ name = create_unique_id(s); + if (IS_ERR(name)) + return PTR_ERR(name); } s->kobj.kset = kset;