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
| ||
|
Date: Tue, 28 Aug 2018 02:14:58 +0300 From: Alexey Dobriyan <adobriyan@...il.com> To: akpm@...ux-foundation.org Cc: linux-kernel@...r.kernel.org, Alexey Dobriyan <adobriyan@...il.com> Subject: [PATCH 08/13] proc: convert /proc/*/fd to _print_integer() Benchmark opendir+readdir("/proc/self/fd")+closedir 2^21 times with 4 descriptors (0, 1, 2, 3 from opendir): 11.802099126 seconds time elapsed ( +- 0.23% ) 10.950810068 seconds time elapsed ( +- 0.23% ) -7.2% Benchmark the same thing with 1000 descriptors: 362.1250 us per iteration 288.4375 us -20% Signed-off-by: Alexey Dobriyan <adobriyan@...il.com> --- fs/proc/fd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/proc/fd.c b/fs/proc/fd.c index e098302b5101..60ad1935eefc 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c @@ -247,8 +247,7 @@ static int proc_readfd_common(struct file *file, struct dir_context *ctx, fd++, ctx->pos++) { struct file *f; struct fd_data data; - char name[10 + 1]; - unsigned int len; + char name[10], *p = name + sizeof(name); f = fcheck_files(files, fd); if (!f) @@ -257,9 +256,10 @@ static int proc_readfd_common(struct file *file, struct dir_context *ctx, rcu_read_unlock(); data.fd = fd; - len = snprintf(name, sizeof(name), "%u", fd); + p = _print_integer_u32(p, fd); if (!proc_fill_cache(file, ctx, - name, len, instantiate, tsk, + p, name + sizeof(name) - p, + instantiate, tsk, &data)) goto out_fd_loop; cond_resched(); -- 2.16.4
Powered by blists - more mailing lists