From: "John Thomson" <lists@johnthomson.fastmail.com.au>
To: "John Thomson" <lists@johnthomson.fastmail.com.au>,
"Feng Tang" <feng.tang@intel.com>
Cc: "Vlastimil Babka" <vbabka@suse.cz>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Christoph Lameter" <cl@linux.com>,
"Pekka Enberg" <penberg@kernel.org>,
"David Rientjes" <rientjes@google.com>,
"Joonsoo Kim" <iamjoonsoo.kim@lge.com>,
"Roman Gushchin" <roman.gushchin@linux.dev>,
"Hyeonggon Yoo" <42.hyeyoo@gmail.com>,
"Dmitry Vyukov" <dvyukov@google.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Andrey Konovalov" <andreyknvl@gmail.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"kasan-dev@googlegroups.com" <kasan-dev@googlegroups.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"John Garry" <john.garry@huawei.com>,
"Kefeng Wang" <wangkefeng.wang@huawei.com>
Subject: Re: [PATCH v6 1/4] mm/slub: enable debugging memory wasting of kmalloc
Date: Tue, 01 Nov 2022 02:41:45 +0000 [thread overview]
Message-ID: <00ce752c-17e0-4813-afa3-fe1510545b23@app.fastmail.com> (raw)
In-Reply-To: <9b71ae3e-7f53-4c9e-90c4-79d3d649f94c@app.fastmail.com>
On Tue, 1 Nov 2022, at 00:18, John Thomson wrote:
> I may have got lucky. it appears as though this is all I need to boot:
> (against 6.1-rc3), and with the Bootlin toolchain. Will test my other
> build system as well.
>
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -3276,7 +3276,7 @@ static void *__slab_alloc(struct kmem_cache *s,
> gfp_t gfpflags, int node,
> c = slub_get_cpu_ptr(s->cpu_slab);
> #endif
>
> - p = ___slab_alloc(s, gfpflags, node, addr, c, orig_size);
> + p = ___slab_alloc(s, gfpflags, node, addr, c, 0);
> #ifdef CONFIG_PREEMPT_COUNT
> slub_put_cpu_ptr(s->cpu_slab);
> #endif
Tested that with and without SLUB_DEBUG
Testing without SLUB_DEBUG below:
With this change on 6.1-rc3:
diff --git a/mm/slub.c b/mm/slub.c
index 157527d7101b..5fdb7609bb9e 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3410,6 +3410,8 @@ static __always_inline
void *__kmem_cache_alloc_lru(struct kmem_cache *s, struct list_lru *lru,
gfp_t gfpflags)
{
+
+ pr_warn("SLUB: __slab_alloc from slab_alloc s->object_size=%d\n", s->object_size);
void *ret = slab_alloc(s, lru, gfpflags, _RET_IP_, s->object_size);
trace_kmem_cache_alloc(_RET_IP_, ret, s, gfpflags, NUMA_NO_NODE);
UART & boot stops here:
transfer started ......................................... transfer ok, time=2.00s
setting up elf image... OK
jumping to kernel code
zimage at: 80B842A0 810B4BE4
Uncompressing Linux at load address 80001000
Copy device tree to address 80B80EE0
Now, booting the kernel...
[ 0.000000] Linux version 6.1.0-rc3+ (john@john) (mipsel-buildroot-linux-gnu-gcc.br_real (Buildroot 2021.11-4428-g6b6741b) 12.2.0, GNU ld (GNU Binutils) 2.39) #34 SMP Tue Nov 1 12:33:10 AEST 2022
[ 0.000000] Overriding previously set SMP ops
[ 0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[ 0.000000] printk: bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[ 0.000000] MIPS: machine is MikroTik RouterBOARD 760iGS
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] VPE topology {2,2} total 4
[ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] percpu: Embedded 11 pages/cpu s16064 r8192 d20800 u45056
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 64960
[ 0.000000] Kernel command line: earlyprintk=ttyS0,115200 console=ttyS0,115200 rootfstype=squashfs,jffs2
[ 0.000000] Unknown kernel command line parameters "earlyprintk=ttyS0,115200", will be passed to user space.
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Writing ErrCtl register=00011146
[ 0.000000] Readback ErrCtl register=00011146
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 246284K/262144K available (7417K kernel code, 630K rwdata, 1304K rodata, 3500K init, 245K bss, 15860K reserved, 0K cma-reserved, 0K highmem)
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=32
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=132
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=300
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] NR_IRQS: 256
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=512
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=512
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=256
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=256
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=256
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=128
[ 0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0xcaf478abb4, max_idle_ns: 440795247997 ns
[ 0.000000] SLUB: __slab_alloc from slab_alloc s->object_size=256
[ 0.000004] sched_clock: 64 bits at 880MHz, resolution 1ns, wraps every 4398046511103ns
This change, and kernel boots fine:
diff --git a/mm/slub.c b/mm/slub.c
index 157527d7101b..e9677c04d19c 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3410,7 +3410,11 @@ static __always_inline
void *__kmem_cache_alloc_lru(struct kmem_cache *s, struct list_lru *lru,
gfp_t gfpflags)
{
- void *ret = slab_alloc(s, lru, gfpflags, _RET_IP_, s->object_size);
+
+ /*
+ pr_warn("SLUB: __slab_alloc from slab_alloc s->object_size=%d\n", s->object_size);
+ void *ret = slab_alloc(s, lru, gfpflags, _RET_IP_, s->object_size);*/
+ void *ret = slab_alloc(s, lru, gfpflags, _RET_IP_, 0);
trace_kmem_cache_alloc(_RET_IP_, ret, s, gfpflags, NUMA_NO_NODE);
Cheers,
--
John Thomson
next prev parent reply other threads:[~2022-11-01 2:42 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-13 6:54 [PATCH v6 0/4] mm/slub: some debug enhancements for kmalloc Feng Tang
2022-09-13 6:54 ` [PATCH v6 1/4] mm/slub: enable debugging memory wasting of kmalloc Feng Tang
2022-09-23 11:43 ` Vlastimil Babka
2022-09-24 7:08 ` Feng Tang
2022-10-30 19:23 ` John Thomson
2022-10-30 21:30 ` Vlastimil Babka
2022-10-31 2:36 ` Feng Tang
2022-10-31 10:05 ` John Thomson
2022-10-31 11:36 ` Hyeonggon Yoo
2022-10-31 11:42 ` Feng Tang
2022-11-01 0:18 ` John Thomson
2022-11-01 2:41 ` John Thomson [this message]
2022-11-01 7:57 ` Feng Tang
2022-11-01 9:20 ` John Thomson
2022-11-01 9:31 ` Hyeonggon Yoo
2022-11-01 10:33 ` John Thomson
2022-11-01 10:42 ` Hyeonggon Yoo
2022-11-01 13:55 ` Feng Tang
2022-11-01 19:39 ` John Thomson
2022-11-02 6:08 ` Feng Tang
2022-11-02 7:16 ` Hyeonggon Yoo
2022-11-03 7:18 ` Feng Tang
2022-11-03 7:45 ` John Thomson
2022-11-03 8:16 ` Feng Tang
2022-11-02 8:22 ` Vlastimil Babka
2022-11-03 5:54 ` Feng Tang
2022-11-03 8:33 ` Vlastimil Babka
2022-11-03 14:16 ` Feng Tang
2022-11-03 14:36 ` Hyeonggon Yoo
2022-11-03 16:57 ` Vlastimil Babka
2022-11-03 17:35 ` Vlastimil Babka
2022-11-04 3:52 ` Feng Tang
2022-09-13 6:54 ` [PATCH v6 2/4] mm/slub: only zero the requested size of buffer for kzalloc Feng Tang
2022-09-26 19:11 ` Andrey Konovalov
2022-09-26 20:15 ` Kees Cook
2022-09-27 1:22 ` Feng Tang
2022-09-27 2:42 ` Feng Tang
2022-10-13 14:00 ` Andrey Konovalov
2022-10-14 5:59 ` Feng Tang
2022-09-13 6:54 ` [PATCH v6 3/4] mm: kasan: Add free_meta size info in struct kasan_cache Feng Tang
2022-09-20 19:20 ` Andrey Konovalov
2022-09-21 12:02 ` Feng Tang
2022-09-24 18:05 ` Andrey Konovalov
2022-09-25 11:26 ` Feng Tang
2022-09-25 16:31 ` Andrey Konovalov
2022-09-27 3:03 ` Feng Tang
2022-09-13 6:54 ` [PATCH v6 4/4] mm/slub: extend redzone check to extra allocated kmalloc space than requested Feng Tang
2022-09-13 8:53 ` Hyeonggon 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=00ce752c-17e0-4813-afa3-fe1510545b23@app.fastmail.com \
--to=lists@johnthomson.fastmail.com.au \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=cl@linux.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@intel.com \
--cc=dvyukov@google.com \
--cc=feng.tang@intel.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=john.garry@huawei.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=robin.murphy@arm.com \
--cc=roman.gushchin@linux.dev \
--cc=vbabka@suse.cz \
--cc=wangkefeng.wang@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox