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 CC7B5E677F8 for ; Sat, 2 Nov 2024 10:07:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 260BE6B0083; Sat, 2 Nov 2024 06:07:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 20FFA6B0085; Sat, 2 Nov 2024 06:07:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0D8576B0088; Sat, 2 Nov 2024 06:07:48 -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 E43D06B0083 for ; Sat, 2 Nov 2024 06:07:47 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 3BF1F8168A for ; Sat, 2 Nov 2024 10:07:47 +0000 (UTC) X-FDA: 82740727986.16.F06533B Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by imf20.hostedemail.com (Postfix) with ESMTP id E83191C0006 for ; Sat, 2 Nov 2024 10:07:08 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RuFwlOnV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.167.54 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730541901; 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=Ed/4doDsvmEPSdp9+2Gqo1SUqYAF+DVT5gmvUFXCFVM=; b=ITbb57JgU5ftvpsSbJys3fqGlk4xvfVGg20aCi400j/B2ul/IP+33AOSmxZksIyb773Irl /y+NOQwTgC2HRWlGeRGoW1uK2UYpi5x2NSYERzZc8B66SfacZ55uGYvZOLjkxWAvXzB5hi I2zlNR3jpF2PDjhg/mp7kpg1ayj3dVM= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RuFwlOnV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.167.54 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730541901; a=rsa-sha256; cv=none; b=ryTENcvVo+8sGsqnl5zh264Do9b9XavJ73qNmpzf5apOix9tM+I/zpGoKo14d96TE383aV 5fAmiXphnIpVLMKGHCckVLzz99GJ+4eA38r4YA2Iv55/V2n9sxu0GpPDBNx7u/wNi76DlU Y7K6GH1Ehx/EYPdOyz0J1/5yXc1CZvo= Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-53b13ea6b78so4384386e87.2 for ; Sat, 02 Nov 2024 03:07:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730542063; x=1731146863; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Ed/4doDsvmEPSdp9+2Gqo1SUqYAF+DVT5gmvUFXCFVM=; b=RuFwlOnVzd0naqYQzrVMNmvEPo8wU1PxOX68mC4F6HsZCPNSW2C6nf3XV1Nt1b71Vm e/a2SKzm9Q8XhqFNDJItVsaclP8VC00beNanRgRd3P8d6A8aAP4P2sjRc2oNrziXb/jf 6XAf3svKYJRUtMWUDsUmNf52ugyhduzRFO8oOpmD9Y7cbr3Oq14hBUAyhSRXDGenh0ju sZMG3MA6HkEzt6dsZKcJl3F6+f5uljX/v7V9cM9ukIHo6dyAMoxlymBsZgSsxM1FpDqQ meQfBA9g2gRSbjN9Fs+LXvMoDLzh+UpUxpD75okDfiJ2BlruvP1QSu7jnvxxxCynBxGW 1Q1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730542063; x=1731146863; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ed/4doDsvmEPSdp9+2Gqo1SUqYAF+DVT5gmvUFXCFVM=; b=W9TJUgyS/yhf3OAkfuCJSEYURK99sDRZ1/tFORY/Nt9JTTtS3JpqRRiPhKPCZtMIX6 GP+uCrbCF/NQc84fnMGeWT/Kj4NW1B3wbD9dZqLaFUEyda9OnxIsYSlpB5O+otczYNbp 4WsjAwg8zqLGN3NIq64nlydcAtd/1BzHnTXewZrlj9F9d1ufARPigD80nN2gtocszu1m bTtvLkHYnYZYJ0mSZ5c7UvvfFAM87Y0LUlbyXWx7AlmTFsvUGOHiqVi+0sxQh0idHcof 95JsLOTbyT2RicU4NpoK7qtEKcy64tsvMkqlsNRUkyEcolx+UEuMpBCmKH/GCgii+tV0 NoEw== X-Forwarded-Encrypted: i=1; AJvYcCUffwB2aeY5Tp+p6h8MT+kKcMzPR1haUJ/6Y7eqL4ysp07nmiR8dHHLBwEXj388i4fAuh+6kgXn6w==@kvack.org X-Gm-Message-State: AOJu0Yx+W+ZYp5vKe5IqyVPR04/+ptSeQp8jiZhiDcukRUUszAL3bRFI E4/k/M2HVHyL9RkwkJ+NwUx5jH0IReY/zumu1v/JoBA7C5LojSkADfXi26aY9s/zdpiEKKdfuw3 Yba/0lAZtg5Zw8kpMEL/5tqWZG+w= X-Google-Smtp-Source: AGHT+IGEDbnkozCLx/sep/q0b5gGziwu4qkl7kf0Bi+mP9s5i5DDMIn0z19H5L9wrzhoAmk+m6O1smm9Xb0/n315tDo= X-Received: by 2002:a05:6512:1313:b0:533:71f:3a3d with SMTP id 2adb3069b0e04-53d65de528dmr5524609e87.24.1730542063018; Sat, 02 Nov 2024 03:07:43 -0700 (PDT) MIME-Version: 1.0 References: <20241101130845.19100-1-42.hyeyoo@gmail.com> <35f58f1b-6e71-42ce-8619-2ecd810b4510@suse.cz> <195242b4-5471-419a-a350-08fd246973f0@suse.cz> In-Reply-To: <195242b4-5471-419a-a350-08fd246973f0@suse.cz> From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Sat, 2 Nov 2024 19:07:31 +0900 Message-ID: Subject: Re: [PATCH v1] mm/slab: Allow cache creation to proceed even if sysfs registration fails To: Vlastimil Babka Cc: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , linux-mm@kvack.org, Jinjie Ruan , Liu Shixin Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: E83191C0006 X-Stat-Signature: wdqb84g1wrfse3f1bpuyurkxxkjoq71a X-Rspam-User: X-HE-Tag: 1730542028-76829 X-HE-Meta: U2FsdGVkX19JOvo/XY5HzwVCjdwrhk8h3l1cyZou0hnxoM/JTV5XISQrjMk9JYbgOy2Hj+s80u0YQUDc+3ZUAhGEfOniTj68ny1Pk2t72LNDC09lQA3ohY2P/kJdZoMM4QZaj6D1iDBBPRZwCvsEYSasuUIrS+74RXrcJmi/2WiR75fZ9hAFJ4XNbdwxrHw1XYc1gb7Zc72RWkqC4/53U9FLM+2k9ZPpbTXUqMSi1cop8At41QYxtrKPfIOL0WGy90c3m5udnVqwW1Clt452FZvg+nrCFC3qwLpicB3oy9DY7cgQ1XQv+qxohZoIf+cmegBmPbh9+ulYPYIfm3RIik92Vm9Oy56ji37LNO6CsgrM5k3ja9nMUQW1pZ4h9KiQuuk9T1lpDT0KJusgBQIz9Qadx4j7pQWB6XojxlPx3b2dyuhzjS+2k7ejcXgkoOCqU3DO/V0MOCLb7s6BPPjbdp5BkgiimPXT6Z1dMAO35NYsNguC0p1fpgO3Lj6JXCpjja/2g7gwsB4VXtk91j7NZM4gQyToafNM8BFusCegkocuZqJsyLHAF8Hs6DYwnYCJhqC+QEEtp4WQXnuAcL5yUlGJbuW5QaMyujopwfaR6xXu2TTnUmfWGJGtSfjrzC4yxRFrRvCX5qpZHIntSxlHYJVz4ZRGs5TgYGpGlbVpkmYBfXfGaQGCE2nC4gK4FmE7fEWHmp9bXHs61y9aQJnrLBwq6fNy5afdOGjpDHAwBzZZU5d45OfzsNNYm/avXwrmy4s7zIqS30JEuYEpUL+BOv/clhqRv9gk5a48YWXP91cyhsqvye9Cv+ztpXTERAxCcGHMhICLxysIW9PB3mOFDq7mby40Cz6TXm78/Lt2ij+Kvjj2VzZ86UrQBPmCaQs/ZNxRNeHEX/wzTeC2yjxu41ax+yXp9BBc7iIwrJi87R5Rsc5va+si1iFHA20n14JwriuEz1+bGbCtmAOTfK0 fe9EF9S2 uk1YzEQnzlCiutbiYNZcay2DoGhGL0FOAoh1+1pLGJqDKOLmTlAKGSFNCZmMucRIzlNow6/k5cpiuY/vM74B4BqRdANPdvSgcAz+uF9FuCnoqLzkcxgE8oM4RxixcXLkv3YJi18mwdqoGuNEwmi9FY2wjs3sRHWt5tLKBgYY87U62ry/sdqql6U8Tn3iqxfeZLuLQkNOIOEkMK1TF3anzvYf36QAu0XVpn97zjN18BXSNy+Uf+XI5Y2EDkBTWQdghiglD/je4R8XiSjo2JffFetvHuc7FSXGFDERTY8Jmfg8lhUcNIvwdLy1ZPxX50E9H7wHxv5gSdErhBdhEoVi/sJcX8AjZlxV89A3k 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 Sat, Nov 2, 2024 at 5:50=E2=80=AFPM Vlastimil Babka wro= te: > > On 11/2/24 8:18 AM, Hyeonggon Yoo wrote: > >> > >> Also here, and simplified to "if (sysfs_slab_add(s)) ... " to avoid de= aling > >> with err. > > > > Oh no. err is initialized to -EINVAL, so that will not work as intended= . > > It is causing the following list corruption. > > Ooops, right, thanks a lot. Wrongly assumed that a test boot in > virtme-ng would catch silly mistakes like that. Looks like all caches > were created with SLAB_STATE < FULL. > > Fixed by setting err =3D 0 before trying sysfs add. Thanks! Hmm... by the way, why doesn't SLUB update 'err' in the event of an error i= n init_cache_random_seq(), init_kmem_cache_nodes(), or alloc_kmem_cache_cpus(= )? I may be missing something, but it doesn't seem to handle these errors properly to me... > > > [ 0.607833] __kmem_cache_create_args(fscrypt_inode_info) failed > > with error -22 > > [ 0.608518] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-= rc2+ #63 > > [ 0.609181] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), > > BIOS 1.16.2-1.fc38 04/01/2014 > > [ 0.610000] Call Trace: > > [ 0.610233] > > [ 0.610433] dump_stack_lvl+0x64/0x80 > > [ 0.610806] __kmem_cache_create_args+0x1eb/0x280 > > [ 0.611253] ? __pfx_fscrypt_init+0x10/0x10 > > [ 0.611647] fscrypt_init+0x88/0xf0 > > [ 0.611980] ? __pfx_fscrypt_init+0x10/0x10 > > [ 0.612373] do_one_initcall+0x5b/0x320 > > [ 0.612736] kernel_init_freeable+0x351/0x510 > > [ 0.613150] ? __pfx_kernel_init+0x10/0x10 > > [ 0.613536] kernel_init+0x1a/0x1d0 > > [ 0.613865] ret_from_fork+0x34/0x50 > > [ 0.614207] ? __pfx_kernel_init+0x10/0x10 > > [ 0.614591] ret_from_fork_asm+0x1a/0x30 > > [ 0.614968] > > [ 0.615203] list_add corruption. prev->next should be next > > (ffff986bc2bb9aa0), but was ffff986bc2b6. > > [ 0.616308] ------------[ cut here ]------------ > > [ 0.616746] kernel BUG at lib/list_debug.c:32! > > [ 0.617173] Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI > > [ 0.617709] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-= rc2+ #63 > > [ 0.618372] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), > > BIOS 1.16.2-1.fc38 04/01/2014 > > [ 0.619192] RIP: 0010:__list_add_valid_or_report+0x78/0xa0 > > [ 0.619714] Code: 8b ff 0f 0b 48 89 c1 48 c7 c7 50 ca c0 9a e8 2f > > f4 8b ff 0f 0b 48 89 d1 48 89 c6 b > > [ 0.621473] RSP: 0018:ffffa47380013c98 EFLAGS: 00010246 > > [ 0.621969] RAX: 0000000000000075 RBX: ffff986bc2b63238 RCX: fffffff= f9b5646a8 > > [ 0.622638] RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000= 000000001 > > [ 0.623313] RBP: ffff986bc2bb9ab8 R08: 0000000000000000 R09: 205d333= 032353136 > > [ 0.623996] R10: 74707572726f6320 R11: 6464615f7473696c R12: ffff986= bc2bb9aa0 > > [ 0.624673] R13: ffff986bc2b63240 R14: ffff986bc2b63240 R15: ffff986= bc2b631c0 > > [ 0.625355] FS: 0000000000000000(0000) GS:ffff986bdf400000(0000) > > knlGS:0000000000000000 > > [ 0.626111] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > [ 0.626653] CR2: ffff986bd3801000 CR3: 000000001242a000 CR4: 0000000= 0000006f0 > > [ 0.627325] Call Trace: > > [ 0.627559] > > [ 0.627760] ? die+0x36/0x90 > > [ 0.628039] ? do_trap+0xdd/0x100 > > [ 0.628354] ? __list_add_valid_or_report+0x78/0xa0 > > [ 0.628814] ? do_error_trap+0x6a/0x90 > > [ 0.629172] ? __list_add_valid_or_report+0x78/0xa0 > > [ 0.629633] ? exc_invalid_op+0x50/0x70 > > [ 0.630001] ? __list_add_valid_or_report+0x78/0xa0 > > [ 0.630463] ? asm_exc_invalid_op+0x1a/0x20 > > [ 0.630861] ? __list_add_valid_or_report+0x78/0xa0 > > [ 0.631324] ? __list_add_valid_or_report+0x78/0xa0 > > [ 0.631784] kobject_add_internal+0x78/0x2a0 > > [ 0.632192] kobject_init_and_add+0x8c/0xd0 > > [ 0.632589] ? kernfs_find_ns+0x35/0xc0 > > [ 0.632957] sysfs_slab_add+0x193/0x1e0 > > [ 0.633318] do_kmem_cache_create+0x455/0x630 > > [ 0.633727] __kmem_cache_create_args+0x157/0x280 > > [ 0.634176] ? __pfx_fsverity_init+0x10/0x10 > > [ 0.634586] fsverity_init_info_cache+0x66/0x90 > > [ 0.635022] fsverity_init+0x13/0x40 > > [ 0.635365] do_one_initcall+0x5b/0x320 > > [ 0.635734] kernel_init_freeable+0x351/0x510 > > [ 0.636154] ? __pfx_kernel_init+0x10/0x10 > > [ 0.636547] kernel_init+0x1a/0x1d0 > > [ 0.636881] ret_from_fork+0x34/0x50 > > [ 0.637227] ? __pfx_kernel_init+0x10/0x10 > > [ 0.637619] ret_from_fork_asm+0x1a/0x30 > > [ 0.637998] > > [ 0.638211] Modules linked in: > > [ 0.638512] ---[ end trace 0000000000000000 ]--- > > [ 0.638962] RIP: 0010:__list_add_valid_or_report+0x78/0xa0 > > [ 0.639483] Code: 8b ff 0f 0b 48 89 c1 48 c7 c7 50 ca c0 9a e8 2f > > f4 8b ff 0f 0b 48 89 d1 48 89 c6 b > > [ 0.641253] RSP: 0018:ffffa47380013c98 EFLAGS: 00010246 > > [ 0.641753] RAX: 0000000000000075 RBX: ffff986bc2b63238 RCX: fffffff= f9b5646a8 > > [ 0.642431] RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000= 000000001 > > [ 0.643118] RBP: ffff986bc2bb9ab8 R08: 0000000000000000 R09: 205d333= 032353136 > > [ 0.643795] R10: 74707572726f6320 R11: 6464615f7473696c R12: ffff986= bc2bb9aa0 > > [ 0.644471] R13: ffff986bc2b63240 R14: ffff986bc2b63240 R15: ffff986= bc2b631c0 > > [ 0.645152] FS: 0000000000000000(0000) GS:ffff986bdf400000(0000) > > knlGS:0000000000000000 > > [ 0.645923] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > [ 0.646470] CR2: ffff986bd3801000 CR3: 000000001242a000 CR4: 0000000= 0000006f0 > > [ 0.647156] note: swapper/0[1] exited with preempt_count 1 > > [ 0.647686] Kernel panic - not syncing: Attempted to kill init! > > exitcode=3D0x0000000b > > [ 0.648446] Kernel Offset: 0x18000000 from 0xffffffff81000000 > > (relocation range: 0xffffffff80000000) > > [ 0.649466] ---[ end Kernel panic - not syncing: Attempted to kill > > init! exitcode=3D0x0000000b ]--- > > > > > >>>> + } > >>>> > >>>> if (s->flags & SLAB_STORE_USER) > >>>> debugfs_slab_add(s); > >>>> @@ -7276,7 +7283,8 @@ static int sysfs_slab_add(struct kmem_cache *s= ) > >>>> > >>>> void sysfs_slab_unlink(struct kmem_cache *s) > >>>> { > >>>> - kobject_del(&s->kobj); > >>>> + if (s->kobj.state_in_sysfs) > >>>> + kobject_del(&s->kobj); > >>>> } > >>>> > >>>> void sysfs_slab_release(struct kmem_cache *s) > >>>> @@ -7305,6 +7313,11 @@ static int sysfs_slab_alias(struct kmem_cache= *s, const char *name) > >>>> * If we have a leftover link then remove it. > >>>> */ > >>>> sysfs_remove_link(&slab_kset->kobj, name); > >>>> + /* > >>>> + * The original cache may have failed to generate sy= sfs file. > >>>> + * In that case, sysfs_create_link() returns -ENOENT= and > >>>> + * symbolic link creation is skipped. > >>>> + */ > >>>> return sysfs_create_link(&slab_kset->kobj, &s->kobj,= name); > >>>> } > >>>> > >>>> -- > >>>> 2.45.0 > >>>> > >>