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>alistair/sunxi64-5.4-dsi
parent
966fede8e4
commit
9cf3a8d847
|
@ -1313,9 +1313,7 @@ slab_flags_t kmem_cache_flags(unsigned int object_size,
|
||||||
char *end, *glob;
|
char *end, *glob;
|
||||||
size_t cmplen;
|
size_t cmplen;
|
||||||
|
|
||||||
end = strchr(iter, ',');
|
end = strchrnul(iter, ',');
|
||||||
if (!end)
|
|
||||||
end = iter + strlen(iter);
|
|
||||||
|
|
||||||
glob = strnchr(iter, end - iter, '*');
|
glob = strnchr(iter, end - iter, '*');
|
||||||
if (glob)
|
if (glob)
|
||||||
|
|
Loading…
Reference in New Issue