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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 29 Dec 2014 15:48:26 +0100 From: Andrzej Hajda <a.hajda@...sung.com> To: linux-mm@...ck.org Cc: Andrzej Hajda <a.hajda@...sung.com>, Marek Szyprowski <m.szyprowski@...sung.com>, linux-kernel@...r.kernel.org Subject: [RFC PATCH 0/4] kstrdup optimization 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 think it is OK, but maybe sombebody with deeper knowledge can say if it is OK for all supported architectures and configuration options. The main patch is accompanied by three patches constifying kstrdup for cases where situtation described above happens frequently. The patchset is based on next-20141226. As I have tested it on mobile platform (exynos4210-trats) it saves above 2600 string duplications. Below simple stats about the most frequent duplications: Count String 880 power 874 subsystem 130 device 126 parameters 61 iommu_group 40 driver 28 bdi 28 none 25 sclk_mpll 23 sclk_usbphy0 23 sclk_hdmi24m 23 xusbxti 22 sclk_vpll 22 sclk_epll 22 xxti 20 sclk_hdmiphy 11 aclk100 Regards Andrzej Andrzej Hajda (4): mm/util: add kstrdup_const kernfs: use kstrdup_const for node name allocation clk: use kstrdup_const for clock name allocations mm/slab: use kstrdup_const for allocating cache names drivers/clk/clk.c | 12 ++++++------ fs/kernfs/dir.c | 12 ++++++------ include/linux/string.h | 3 +++ mm/slab_common.c | 6 +++--- mm/util.c | 22 ++++++++++++++++++++++ 5 files changed, 40 insertions(+), 15 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists