Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Harry Yoo <harry@kernel.org>
To: kernel test robot <oliver.sang@intel.com>
Cc: oe-lkp@lists.linux.dev, lkp@intel.com,
	Danielle Constantino <dconstantino@meta.com>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	linux-mm@kvack.org
Subject: Re: [harry:kmalloc-no-objext-rfc-v1r1] [mm/slab] 6bc21472e7: BUG:kernel_NULL_pointer_dereference,address
Date: Thu, 9 Jul 2026 18:26:54 +0900	[thread overview]
Message-ID: <afe80d38-950e-44d4-a729-61aa65d3c117@kernel.org> (raw)
In-Reply-To: <202607091002.cdfe5a08-lkp@intel.com>


[-- Attachment #1.1: Type: text/plain, Size: 5975 bytes --]



On 7/9/26 5:48 PM, kernel test robot wrote:
> 
> 
> Hello,
> 
> kernel test robot noticed "BUG:kernel_NULL_pointer_dereference,address" on:
> 
> commit: 6bc21472e7eb9f8c771ffdf86266aa6d9dcb1dac ("mm/slab: prevent unbounded recursion due to obj_exts in free path")
> https://git.kernel.org/cgit/linux/kernel/git/harry/linux.git kmalloc-no-objext-rfc-v1r1

This is v1r1, and I posted v1r3, because it was bootstrapping sheaves
for normal kmalloc only. This crashed the kernel but was fixed in v1r2.

Apologies for the confusion, I discovered bugs after exposing it in my
tree (force pushing isn't great, you know...) I should probably have
deleted that broken one, though. :)

Will be posting v2 that fixes false warnings w/ memalloc profiling
debug shortly.

> in testcase: boot
> 
> config: i386-randconfig-2006-20250804
> compiler: gcc-14
> test machine: qemu-system-i386 -enable-kvm -cpu SandyBridge -smp 2 -m 4G
> 
> (please refer to attached dmesg/kmsg for entire log/backtrace)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <oliver.sang@intel.com>
> | Closes: https://lore.kernel.org/oe-lkp/202607091002.cdfe5a08-lkp@intel.com
> 
> [    0.183091][    T0] BUG: kernel NULL pointer dereference, address: 0000000c
> [    0.183772][    T0] #PF: supervisor read access in kernel mode
> [    0.184312][    T0] #PF: error_code(0x0000) - not-present page
> [    0.184851][    T0] *pde = 00000000
> [    0.185186][    T0] Oops: Oops: 0000 [#1]
> [    0.185561][    T0] CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 7.2.0-rc1+ #1 PREEMPT  27a7cd77b6ab41253c0455bf8bac7f75db905e14
> [    0.186647][    T0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
> [    0.187601][    T0] EIP: __kmalloc_flags_noprof (slub.c:5311 slub.c:5506)
> [    0.189928][    T0] EAX: b11c8b96 EBX: 00000000 ECX: b18bdac5 EDX: 00000000
> [    0.190574][    T0] ESI: 00000000 EDI: 00000150 EBP: b1e17df0 ESP: b1e17db8
> [    0.191220][    T0] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00210046
> [    0.191925][    T0] CR0: 80050033 CR2: 0000000c CR3: 0253b000 CR4: 00000090
> [    0.192579][    T0] Call Trace:
> [    0.192877][    T0]  ? alloc_from_new_slab (linux/spinlock.h:408 slub.c:4416)
> [    0.193350][    T0]  ? alloc_slab_obj_exts (slab.h:39 slub.c:2149)
> [    0.193823][    T0]  alloc_slab_obj_exts (slab.h:39 slub.c:2149)
> [    0.194280][    T0]  __alloc_tagging_slab_alloc_hook (slub.c:2329 slub.c:2358)
> [    0.194833][    T0]  alloc_tagging_slab_alloc_hook (slub.c:2381)
> [    0.195372][    T0]  __kmalloc_cache_node_noprof (slub.c:4596 slub.c:4893 slub.c:5482)
> [    0.195903][    T0]  ? init_kmem_cache_nodes (linux/slab.h:1192 slub.c:7732)
> [    0.196400][    T0]  init_kmem_cache_nodes (linux/slab.h:1192 slub.c:7732)

Here we're allocating kmem_cache_node for KMALLOC_NO_OBJ_EXT, but
kmem_cache_node itself needs obj_exts array.

> [    0.196882][    T0]  do_kmem_cache_create (slub.c:8646)
> [    0.197354][    T0]  create_boot_cache (slab_common.c:717)
> [    0.197788][    T0]  new_kmalloc_cache (slab_common.c:735 slab_common.c:996)
> [    0.198237][    T0]  create_kmalloc_caches (slab_common.c:1019)
> [    0.198701][    T0]  kmem_cache_init (slub.c:8555)
> [    0.199125][    T0]  mm_core_init (mm_init.c:2728)
> [    0.199533][    T0]  start_kernel (main.c:1034)
> [    0.199939][    T0]  i386_start_kernel (x86/kernel/head32.c:79)
> [    0.200368][    T0]  startup_32_smp (x86/kernel/head_32.S:292)
> [    0.200791][    T0] Modules linked in:
> [    0.201141][    T0] CR2: 000000000000000c
> [    0.201513][    T0] ---[ end trace 0000000000000000 ]---
> [    0.202004][    T0] EIP: __kmalloc_flags_noprof (slub.c:5311 slub.c:5506)
> [    0.202522][    T0] Code: 7d d7 00 74 0a 84 d2 74 06 31 c0 89 df f3 aa ff 75 e8 89 da 89 f0 8b 4d dc e8 47 28 00 00 59 8b 45 e0 89 da ff 75 0c ff 75 dc <ff> 76 0c 8b 4d d8 e8 00 da ff ff 83 c4 0c eb 16 8d 45 e0 50 ff 75
> All code
> ========
>    0:	7d d7                	jge    0xffffffffffffffd9
>    2:	00 74 0a 84          	add    %dh,-0x7c(%rdx,%rcx,1)
>    6:	d2 74 06 31          	shlb   %cl,0x31(%rsi,%rax,1)
>    a:	c0 89 df f3 aa ff 75 	rorb   $0x75,-0x550c21(%rcx)
>   11:	e8 89 da 89 f0       	call   0xfffffffff089da9f
>   16:	8b 4d dc             	mov    -0x24(%rbp),%ecx
>   19:	e8 47 28 00 00       	call   0x2865
>   1e:	59                   	pop    %rcx
>   1f:	8b 45 e0             	mov    -0x20(%rbp),%eax
>   22:	89 da                	mov    %ebx,%edx
>   24:	ff 75 0c             	push   0xc(%rbp)
>   27:	ff 75 dc             	push   -0x24(%rbp)
>   2a:*	ff 76 0c             	push   0xc(%rsi)		<-- trapping instruction
>   2d:	8b 4d d8             	mov    -0x28(%rbp),%ecx
>   30:	e8 00 da ff ff       	call   0xffffffffffffda35
>   35:	83 c4 0c             	add    $0xc,%esp
>   38:	eb 16                	jmp    0x50
>   3a:	8d 45 e0             	lea    -0x20(%rbp),%eax
>   3d:	50                   	push   %rax
>   3e:	ff                   	.byte 0xff
>   3f:	75                   	.byte 0x75
> 
> Code starting with the faulting instruction
> ===========================================
>    0:	ff 76 0c             	push   0xc(%rsi)
>    3:	8b 4d d8             	mov    -0x28(%rbp),%ecx
>    6:	e8 00 da ff ff       	call   0xffffffffffffda0b
>    b:	83 c4 0c             	add    $0xc,%esp
>    e:	eb 16                	jmp    0x26
>   10:	8d 45 e0             	lea    -0x20(%rbp),%eax
>   13:	50                   	push   %rax
>   14:	ff                   	.byte 0xff
>   15:	75                   	.byte 0x75
> 
> 
> The kernel config and materials to reproduce are available at:
> https://download.01.org/0day-ci/archive/20260709/202607091002.cdfe5a08-lkp@intel.com

-- 
Cheers,
Harry / Hyeonggon

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2026-07-09  9:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-09  8:48 [harry:kmalloc-no-objext-rfc-v1r1] [mm/slab] 6bc21472e7: BUG:kernel_NULL_pointer_dereference,address kernel test robot
2026-07-09  9:26 ` Harry Yoo [this message]
2026-07-10  7:21   ` Oliver Sang
2026-07-10 10:04     ` Harry Yoo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=afe80d38-950e-44d4-a729-61aa65d3c117@kernel.org \
    --to=harry@kernel.org \
    --cc=dconstantino@meta.com \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    --cc=oe-lkp@lists.linux.dev \
    --cc=oliver.sang@intel.com \
    --cc=shakeel.butt@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox