On 01/14/2015 12:37 AM, Andrew Morton wrote: > 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? Stats from tested platform. By caller: 2260 __kernfs_new_node 631 clk_register+0xc8/0x1b8 318 clk_register+0x34/0x1b8 51 kmem_cache_create 12 alloc_vfsmnt By string (with count >= 5): 883 power 876 subsystem 135 parameters 132 device 61 iommu_group 44 sclk_mpll 42 aclk100 41 driver 36 sclk_vpll 35 none 34 sclk_epll 34 aclk160 32 sclk_hdmi24m 31 xxti 31 xusbxti 31 sclk_usbphy0 30 sclk_hdmiphy 28 bdi 28 aclk133 14 sclk_apll 14 aclk200 9 module 9 fin_pll 5 div_core2 > > What the heck does (the cheerily undocumented) KERNFS_STATIC_NAME do > and can we remove it if this patchset is in place? > > The only call path when this flag is set starts from sysfs_add_file_mode_ns function. But I guess this function can be called also for non-const names. Regards Andrzej -- 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>