From patchwork Wed Jun 19 01:55:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: xiujianfeng X-Patchwork-Id: 13703331 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 51D53C27C4F for ; Wed, 19 Jun 2024 02:05:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 97BED8D0070; Tue, 18 Jun 2024 22:05:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 905028D0066; Tue, 18 Jun 2024 22:05:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A5928D0070; Tue, 18 Jun 2024 22:05:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 5944A8D0066 for ; Tue, 18 Jun 2024 22:05:24 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 0E9D1A0CAB for ; Wed, 19 Jun 2024 02:05:24 +0000 (UTC) X-FDA: 82245996168.09.5C2F4AA Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by imf07.hostedemail.com (Postfix) with ESMTP id 6929240007 for ; Wed, 19 Jun 2024 02:05:20 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; spf=pass (imf07.hostedemail.com: domain of xiujianfeng@huawei.com designates 45.249.212.189 as permitted sender) smtp.mailfrom=xiujianfeng@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718762717; 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: references; bh=EpW7KgGcsk0cJ/xNzkHbP3FxkkNugznSY0j62qoXfrM=; b=ODZ7YYlTyEaCxtNVAAkx1JrFuqmdZDx0hDg3ESJQOE3hVAuxDEpuj4g8yImgemQEsFg5KC BmK+CXdGm2mYDRgVpQny1++8DpD0kgW8oQa3uppOFg+3AoSU0wZ+OVu69xooSgqwJkOMvk JTeoSO3SzkUiunwVaQh/4aokorC53nk= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; spf=pass (imf07.hostedemail.com: domain of xiujianfeng@huawei.com designates 45.249.212.189 as permitted sender) smtp.mailfrom=xiujianfeng@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718762717; a=rsa-sha256; cv=none; b=M+aFW/gTsgchbdoKAioZG1BB+fD2m1PoUWT3J5I+zIQwwc+3ZXuHazu25cJzFK7bD7YlOZ M7iIL/JtOR0CRfvU1WPLYR4hR2/XdbhzGV7yKAo+AWmsp9oGela7LBrXxWmDf8ywvFZ5jW rgRxbnFQtYBH3n+0JYDbh7MmFWgdkh0= Received: from mail.maildlp.com (unknown [172.19.88.105]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4W3n0N5Z8czPrf6; Wed, 19 Jun 2024 10:01:08 +0800 (CST) Received: from dggpeml500023.china.huawei.com (unknown [7.185.36.114]) by mail.maildlp.com (Postfix) with ESMTPS id 261911403D1; Wed, 19 Jun 2024 10:04:41 +0800 (CST) Received: from hulk-vt.huawei.com (10.67.174.26) by dggpeml500023.china.huawei.com (7.185.36.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 19 Jun 2024 10:04:40 +0800 From: Xiu Jianfeng To: , , , CC: , , , , Subject: [PATCH v3 -next] mm/hugetlb_cgroup: register lockdep key for cftype Date: Wed, 19 Jun 2024 01:55:27 +0000 Message-ID: <20240619015527.2212698-1-xiujianfeng@huawei.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Originating-IP: [10.67.174.26] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpeml500023.china.huawei.com (7.185.36.114) X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 6929240007 X-Stat-Signature: 9jg6nnog7adiewaqpdndskhqztpxy1ry X-Rspam-User: X-HE-Tag: 1718762720-408127 X-HE-Meta: U2FsdGVkX196QIPRiWJmG072EvZM41fcyfBm4mSY1s5o7ai0l2stVweA7PxdzSkuff/UMDPh8cfuMR15vA8lbthujFA6zXJKPWOHmvsSv6ulNZTs1psvEhyv9McG4fiDgrwH2us0tB16rhXW3qyq1Y8mfNRnSb74dk0yrmztPJIoqJtr1g+xOfCWmgbj+HQGk4QXJ0CwqjLkj7FX0H1hlnH2zSB/u+Nvls1uMoowWIHYprOfmXeE0oze9qmgaoNBfX/3LD5ww3OOQ5AjSDbHb5HS2QAK9UNf+v1apx8Y1Q2BnZh6XBAWuoOoweiwcPbqSnQgUrGPzNyAup2SVICGWhXg0ovfj6KzkTwXvvKP/sQA6r7rvYgiQSrOPmDm4AKk0157CN8DsziWR0pEBfQP4pYThpNFv9/46ZXEeka+ncmMOJeqTbTOVvaFTylD7Q28h4e7ciBm7c6rGmZwwIXHuO5WOuA2u3VYn8EfAVElj267YEtFQ+Nu59ekrIlEIXz1AnKu0CgVuyp1dzFlrMxPj93nCHGWhLD+FOG1+KNM1W9v1SiE4nvO7QmBf2k1KTIDBa8VvBBYPq3D4zQDijBmo01dMgGPcC5qO9hmGAj8+BmZtUicz4vnbyG0uz09pprryj3NeO0uwROpkz5LetHyvWSOffukiCSRIWadLJizU8xbARfu+3fH1iJpx10Ihcpq4Fwq15Ran3jBMEyGyrRToiwUfgnZi9/BEcEK2hAzmxGsh4DdisZllUDYK26UipVsraQ7KHDWcH5xA3JFVAVXSyapaLtUCKNGOtkXjGhsEWo761ncX1REyF5Ipp03rPWxzvcFULnIc/+ADTcaOC8bsqbF83OArrOnMMIhMn78CazZj5tDpQt2Yhat3ue+DThX1jPpBdQg9xrHQNl+pUM07LNeatFxlVapATn8okBj0LySJLnJ6RhTT7nZ9z5umyei39FfJ7/s3F+uwMA8Do3 dcSOyzAN UGg+8GJXe2/8dMG8/pOK8BB8wWgt6zz7lalQ/TvyePa1jldw36jVYgU2MU1O69fejbZoGTTr1Nwe6xLffJZYy7Xtn14SNbKRj8awBQmd0wDIZozcTG3QD1fsyddeZMn8GZ7n8YJvAeaGo6HohSs4GBUBRdB0uhNL3xFS4qvVq/bggTlcDlIjZigfmr0mGy8iahjqLpCatZRn15ZdwhJULPQkTcpNcPcpN06eAjBLvIOHwMey1bmj9mwMBeoPolgdxX1S15uymHcQAWwk4Fwhw9M4n8A== 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: When CONFIG_DEBUG_LOCK_ALLOC is enabled, the following commands can trigger a bug, mount -t cgroup2 none /sys/fs/cgroup cd /sys/fs/cgroup echo "+hugetlb" > cgroup.subtree_control The log is as below: BUG: key ffff8880046d88d8 has not been registered! ------------[ cut here ]------------ DEBUG_LOCKS_WARN_ON(1) WARNING: CPU: 3 PID: 226 at kernel/locking/lockdep.c:4945 lockdep_init_map_type+0x185/0x220 Modules linked in: CPU: 3 PID: 226 Comm: bash Not tainted 6.10.0-rc4-next-20240617-g76db4c64526c #544 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 RIP: 0010:lockdep_init_map_type+0x185/0x220 Code: 00 85 c0 0f 84 6c ff ff ff 8b 3d 6a d1 85 01 85 ff 0f 85 5e ff ff ff 48 c7 c6 21 99 4a 82 48 c7 c7 60 29 49 82 e8 3b 2e f5 RSP: 0018:ffffc9000083fc30 EFLAGS: 00000282 RAX: 0000000000000000 RBX: ffffffff828dd820 RCX: 0000000000000027 RDX: ffff88803cd9cac8 RSI: 0000000000000001 RDI: ffff88803cd9cac0 RBP: ffff88800674fbb0 R08: ffffffff828ce248 R09: 00000000ffffefff R10: ffffffff8285e260 R11: ffffffff828b8eb8 R12: ffff8880046d88d8 R13: 0000000000000000 R14: 0000000000000000 R15: ffff8880067281c0 FS: 00007f68601ea740(0000) GS:ffff88803cd80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00005614f3ebc740 CR3: 000000000773a000 CR4: 00000000000006f0 Call Trace: ? __warn+0x77/0xd0 ? lockdep_init_map_type+0x185/0x220 ? report_bug+0x189/0x1a0 ? handle_bug+0x3c/0x70 ? exc_invalid_op+0x18/0x70 ? asm_exc_invalid_op+0x1a/0x20 ? lockdep_init_map_type+0x185/0x220 __kernfs_create_file+0x79/0x100 cgroup_addrm_files+0x163/0x380 ? find_held_lock+0x2b/0x80 ? find_held_lock+0x2b/0x80 ? find_held_lock+0x2b/0x80 css_populate_dir+0x73/0x180 cgroup_apply_control_enable+0x12f/0x3a0 cgroup_subtree_control_write+0x30b/0x440 kernfs_fop_write_iter+0x13a/0x1f0 vfs_write+0x341/0x450 ksys_write+0x64/0xe0 do_syscall_64+0x4b/0x110 entry_SYSCALL_64_after_hwframe+0x76/0x7e RIP: 0033:0x7f68602d9833 Code: 8b 15 61 26 0e 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 64 8b 04 25 18 00 00 00 85 c0 75 14 b8 01 00 00 00 08 RSP: 002b:00007fff9bbdf8e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 0000000000000009 RCX: 00007f68602d9833 RDX: 0000000000000009 RSI: 00005614f3ebc740 RDI: 0000000000000001 RBP: 00005614f3ebc740 R08: 000000000000000a R09: 0000000000000008 R10: 00005614f3db6ba0 R11: 0000000000000246 R12: 0000000000000009 R13: 00007f68603bd6a0 R14: 0000000000000009 R15: 00007f68603b8880 For lockdep, there is a sanity check in lockdep_init_map_type(), the lock-class key must either have been allocated statically or must have been registered as a dynamic key. However the commit e18df2889ff9 ("mm/hugetlb_cgroup: prepare cftypes based on template") has changed the cftypes from static allocated objects to dynamic allocated objects, so the cft->lockdep_key must be registered proactively. Fixes: e18df2889ff9 ("mm/hugetlb_cgroup: prepare cftypes based on template") Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-lkp/202406181046.8d8b2492-oliver.sang@intel.com Signed-off-by: Xiu Jianfeng Tested-by: Marek Szyprowski Tested-by: SeongJae Park --- v3: remove #ifdef CONFIG_DEBUG_LOCK_ALLOC in struct cftype v2: add bug log to commit message --- include/linux/cgroup-defs.h | 2 -- mm/hugetlb_cgroup.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index b36690ca0d3f..293af7f8a694 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -681,9 +681,7 @@ struct cftype { __poll_t (*poll)(struct kernfs_open_file *of, struct poll_table_struct *pt); -#ifdef CONFIG_DEBUG_LOCK_ALLOC struct lock_class_key lockdep_key; -#endif }; /* diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c index 2b899c4ae968..4ff238ba1250 100644 --- a/mm/hugetlb_cgroup.c +++ b/mm/hugetlb_cgroup.c @@ -836,6 +836,8 @@ hugetlb_cgroup_cfttypes_init(struct hstate *h, struct cftype *cft, cft->file_offset = MEMFILE_OFFSET0(offset) + MEMFILE_FIELD_SIZE(offset) * idx; } + + lockdep_register_key(&cft->lockdep_key); } }