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
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 29 Dec 2014 15:48:26 +0100
From:	Andrzej Hajda <>
Cc:	Andrzej Hajda <>,
	Marek Szyprowski <>,
Subject: [RFC PATCH 0/4] kstrdup optimization


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


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(-)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Powered by blists - more mailing lists