lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <Yh+n6MmSkjYM43iQ@ip-172-31-19-208.ap-northeast-1.compute.internal> Date: Wed, 2 Mar 2022 17:22:48 +0000 From: Hyeonggon Yoo <42.hyeyoo@...il.com> To: Vlastimil Babka <vbabka@...e.cz> Cc: David Rientjes <rientjes@...gle.com>, Christoph Lameter <cl@...ux.com>, Joonsoo Kim <iamjoonsoo.kim@....com>, Pekka Enberg <penberg@...nel.org>, Roman Gushchin <roman.gushchin@...ux.dev>, Andrew Morton <akpm@...ux-foundation.org>, linux-mm@...ck.org, patches@...ts.linux.dev, linux-kernel@...r.kernel.org, Oliver Glitta <glittao@...il.com>, Faiyaz Mohammed <faiyazm@...eaurora.org> Subject: Re: [PATCH 2/5] mm/slub: use stackdepot to save stack trace in objects On Wed, Mar 02, 2022 at 05:51:32PM +0100, Vlastimil Babka wrote: > On 2/27/22 10:44, Hyeonggon Yoo wrote: > > On Fri, Feb 25, 2022 at 07:03:15PM +0100, Vlastimil Babka wrote: > >> From: Oliver Glitta <glittao@...il.com> > >> > >> Many stack traces are similar so there are many similar arrays. > >> Stackdepot saves each unique stack only once. > >> > >> Replace field addrs in struct track with depot_stack_handle_t handle. Use > >> stackdepot to save stack trace. > >> > > > > I think it's not a replacement? > > It is, for the array 'addrs': > > -#ifdef CONFIG_STACKTRACE > - unsigned long addrs[TRACK_ADDRS_COUNT]; /* Called from address */ > +#ifdef CONFIG_STACKDEPOT > + depot_stack_handle_t handle; > > Not confuse with 'addr' which is the immediate caller and indeed stays > for redundancy/kernels without stack trace enabled. > Oh, my fault. Right. I was confused. I should read it again. > >> The benefits are smaller memory overhead and possibility to aggregate > >> per-cache statistics in the following patch using the stackdepot handle > >> instead of matching stacks manually. > >> > >> [ vbabka@...e.cz: rebase to 5.17-rc1 and adjust accordingly ] > >> > >> This was initially merged as commit 788691464c29 and reverted by commit > >> ae14c63a9f20 due to several issues, that should now be fixed. > >> The problem of unconditional memory overhead by stackdepot has been > >> addressed by commit 2dba5eb1c73b ("lib/stackdepot: allow optional init > >> and stack_table allocation by kvmalloc()"), so the dependency on > >> stackdepot will result in extra memory usage only when a slab cache > >> tracking is actually enabled, and not for all CONFIG_SLUB_DEBUG builds. > >> The build failures on some architectures were also addressed, and the > >> reported issue with xfs/433 test did not reproduce on 5.17-rc1 with this > >> patch. > > > > This is just an idea and beyond this patch. > > > > After this patch, now we have external storage that records stack traces. > > Well, we had it before this patch too. > > > It's possible that some rare stack traces are in stack depot, but > > not reachable because track is overwritten. > > Yes. > > > I think it's worth implementing a way to iterate through stacks in stack depot? > > The question is for what use case? We might even not know who stored > them - could have been page_owner, or other stack depot users. > But the point is usually not to learn about all existing traces, but to > determine which ones cause an object lifetime bug, or memory leak. Yeah, this is exactly what I misunderstood. I thought purpose of free_traces is to show all existing traces. But I realized today that free trace without alloc trace is not useful. I'll review v2 with these in mind. Thank you. > >> > >> Signed-off-by: Oliver Glitta <glittao@...il.com> > >> Signed-off-by: Vlastimil Babka <vbabka@...e.cz> > >> Cc: David Rientjes <rientjes@...gle.com> > >> Cc: Christoph Lameter <cl@...ux.com> > >> Cc: Pekka Enberg <penberg@...nel.org> > >> Cc: Joonsoo Kim <iamjoonsoo.kim@....com> > > > -- Thank you, You are awesome! Hyeonggon :-)
Powered by blists - more mailing lists