diff options
author | Yury Norov <yury.norov@gmail.com> | 2019-07-11 20:53:33 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-12 11:05:41 -0700 |
commit | 9cf3a8d847bd08977dc168ed243ffbef3c456d88 (patch) | |
tree | 7d5790a9f4c223ea58bf9b09befadaf821fe4428 /mm/slub.c | |
parent | 966fede8e4be15bcc08e3c390080d3f9072a5367 (diff) | |
download | lwn-9cf3a8d847bd08977dc168ed243ffbef3c456d88.tar.gz lwn-9cf3a8d847bd08977dc168ed243ffbef3c456d88.zip |
mm/slub.c: avoid double string traverse in kmem_cache_flags()
If ',' is not found, kmem_cache_flags() calls strlen() to find the end of
line. We can do it in a single pass using strchrnul().
Link: http://lkml.kernel.org/r/20190501053111.7950-1-ynorov@marvell.com
Signed-off-by: Yury Norov <ynorov@marvell.com>
Acked-by: Aaron Tomlin <atomlin@redhat.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/mm/slub.c b/mm/slub.c index cd04dbd2b5d0..1802c87799ff 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1313,9 +1313,7 @@ slab_flags_t kmem_cache_flags(unsigned int object_size, char *end, *glob; size_t cmplen; - end = strchr(iter, ','); - if (!end) - end = iter + strlen(iter); + end = strchrnul(iter, ','); glob = strnchr(iter, end - iter, '*'); if (glob) |