Re: [PATCH] lib/parser.c: switch match_strdup() over to use kmemdup_nul()

From: Andrew Morton
Date: Thu Aug 30 2018 - 19:25:34 EST


On Thu, 30 Aug 2018 12:44:36 -0700 Eric Biggers <ebiggers@xxxxxxxxxx> wrote:

> From: Eric Biggers <ebiggers@xxxxxxxxxx>
>
> This simplifies the code. No change in behavior.
>
> ...
>
> --- a/lib/parser.c
> +++ b/lib/parser.c
> @@ -327,10 +327,6 @@ EXPORT_SYMBOL(match_strlcpy);
> */
> char *match_strdup(const substring_t *s)
> {
> - size_t sz = s->to - s->from + 1;
> - char *p = kmalloc(sz, GFP_KERNEL);
> - if (p)
> - match_strlcpy(p, s, sz);
> - return p;
> + return kmemdup_nul(s->from, s->to - s->from, GFP_KERNEL);
> }
> EXPORT_SYMBOL(match_strdup);

Huh. I never noticed kmemdup_nul() fly past - it rather happened on
the sly. We do have some fun goodies in there.

We could make match_strdup() an inline now. But that will probably
produce a fatter kernel, as each callsite would then need to prepare
three args rather than one.