On Mon, 12 Jan 2015 10:18:38 +0100 Andrzej Hajda <a.hajda@xxxxxxxxxxx> wrote: > Hi, > > kstrdup if often used to duplicate strings where neither source neither > destination will be ever modified. In such case we can just reuse the source > instead of duplicating it. The problem is that we must be sure that > the source is non-modifiable and its life-time is long enough. > > I suspect the good candidates for such strings are strings located in kernel > .rodata section, they cannot be modifed because the section is read-only and > their life-time is equal to kernel life-time. > > This small patchset proposes alternative version of kstrdup - kstrdup_const, > which returns source string if it is located in .rodata otherwise it fallbacks > to kstrdup. > To verify if the source is in .rodata function checks if the address is between > sentinels __start_rodata, __end_rodata. I guess it should work with all > architectures. > > The main patch is accompanied by four patches constifying kstrdup for cases > where situtation described above happens frequently. > > As I have tested the patchset on mobile platform (exynos4210-trats) it saves > 3272 string allocations. Since minimal allocation is 32 or 64 bytes depending > on Kconfig options the patchset saves respectively about 100KB or 200KB of memory. That's a lot of memory. I wonder where it's all going to. sysfs, probably? What the heck does (the cheerily undocumented) KERNFS_STATIC_NAME do and can we remove it if this patchset is in place? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>