Re: [PATCH] mm/slub: avoid double string traverse in kmem_cache_flags()
On Tue 2019-04-30 22:31 -0700, Yury Norov wrote: > 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(). > > Signed-off-by: Yury Norov > --- > mm/slub.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 4922a0394757..85f90370a293 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1317,9 +1317,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) Fair enough. Acked-by: Aaron Tomlin -- Aaron Tomlin
Re: [PATCH] mm/slub: avoid double string traverse in kmem_cache_flags()
On Tue, Apr 30, 2019 at 10:31:11PM -0700, Yury Norov wrote: > 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(). Ping? > Signed-off-by: Yury Norov > --- > mm/slub.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 4922a0394757..85f90370a293 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1317,9 +1317,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) > -- > 2.17.1
[PATCH] mm/slub: 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(). Signed-off-by: Yury Norov --- mm/slub.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 4922a0394757..85f90370a293 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1317,9 +1317,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) -- 2.17.1