All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Elver <elver@google.com>
To: elver@google.com
Cc: Alexander Potapenko <glider@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Pekka Enberg <penberg@kernel.org>,
	Christoph Lameter <cl@linux.com>,
	Kees Cook <keescook@chromium.org>,
	kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Odd-sized kmem_cache_alloc and slub_debug=Z
Date: Fri, 7 Aug 2020 18:06:27 +0200	[thread overview]
Message-ID: <20200807160627.GA1420741@elver.google.com> (raw)

Hi,

I found that the below debug-code using kmem_cache_alloc(), when using
slub_debug=Z, results in the following crash:

	general protection fault, probably for non-canonical address 0xcccccca41caea170: 0000 [#1] PREEMPT SMP PTI
	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.8.0+ #1
	Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
	RIP: 0010:freelist_dereference mm/slub.c:272 [inline]
	RIP: 0010:get_freepointer mm/slub.c:278 [inline]
	RIP: 0010:deactivate_slab+0x54/0x460 mm/slub.c:2111
	Code: 8b bc c7 e0 00 00 00 48 85 d2 0f 84 00 01 00 00 49 89 d5 31 c0 48 89 44 24 08 66 66 2e 0f 1f 84 00 00 00 00 00 90 44 8b 43 20 <4b> 8b 44 05 00 48 85 c0 0f 84 1e 01 00 00 4c 89 ed 49 89 c5 8b 43
	RSP: 0000:ffffffffa7e03e18 EFLAGS: 00010046
	RAX: 0000000000000000 RBX: ffffa3a41c972340 RCX: 0000000000000000
	RDX: cccccca41caea160 RSI: ffffe7c6a072ba80 RDI: ffffa3a41c972340
	RBP: ffffa3a41caea008 R08: 0000000000000010 R09: ffffa3a41caea01d
	R10: ffffffffa7f8dc50 R11: ffffffffa68f44c0 R12: ffffa3a41c972340
	R13: cccccca41caea160 R14: ffffe7c6a072ba80 R15: ffffa3a41c96d540
	FS:  0000000000000000(0000) GS:ffffa3a41fc00000(0000) knlGS:0000000000000000
	CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
	CR2: ffffa3a051c01000 CR3: 000000045140a001 CR4: 0000000000770ef0
	DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
	DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
	PKRU: 00000000
	Call Trace:
	 ___slab_alloc+0x336/0x340 mm/slub.c:2690
	 __slab_alloc mm/slub.c:2714 [inline]
	 slab_alloc_node mm/slub.c:2788 [inline]
	 slab_alloc mm/slub.c:2832 [inline]
	 kmem_cache_alloc+0x135/0x200 mm/slub.c:2837
	 start_kernel+0x3d6/0x44e init/main.c:1049
	 secondary_startup_64+0xb6/0xc0 arch/x86/kernel/head_64.S:243

Any ideas what might be wrong?

This does not crash when redzones are not enabled.

Thanks,
-- Marco

------ >8 ------

diff --git a/init/main.c b/init/main.c
index 15bd0efff3df..f4aa5bb3f2ec 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1041,6 +1041,16 @@ asmlinkage __visible void __init start_kernel(void)
 	sfi_init_late();
 	kcsan_init();
 
+	/* DEBUG CODE */
+	{
+		struct kmem_cache *c = kmem_cache_create("test", 21, 1, 0, NULL);
+		char *buf;
+		BUG_ON(!c);
+		buf = kmem_cache_alloc(c, GFP_KERNEL);
+		kmem_cache_free(c, buf);
+		kmem_cache_destroy(c);
+	}
+
 	/* Do the rest non-__init'ed, we're now alive */
 	arch_call_rest_init();
 


             reply	other threads:[~2020-08-07 16:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-07 16:06 Marco Elver [this message]
2020-08-07 17:06 ` Odd-sized kmem_cache_alloc and slub_debug=Z Pekka Enberg
2020-08-07 17:18   ` Marco Elver
2020-08-07 19:06     ` Pekka Enberg
2020-08-17 18:31       ` Marco Elver
2020-10-08 23:10         ` Kees Cook
2020-08-07 17:16 ` Kees Cook
2020-08-07 17:20   ` Marco Elver

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=20200807160627.GA1420741@elver.google.com \
    --to=elver@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=glider@google.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.