On Tue, Mar 06, 2018 at 09:46:08PM -0800, Kees Cook wrote:
> The kernel would like to remove all VLA usage. This switches to a
> simple kasprintf() instead.
> 
> Signed-off-by: Kees Cook <keesc...@chromium.org>
> ---
>  drivers/staging/lustre/lustre/llite/xattr.c | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/lustre/lustre/llite/xattr.c 
> b/drivers/staging/lustre/lustre/llite/xattr.c
> index 532384c91447..aab4eab64289 100644
> --- a/drivers/staging/lustre/lustre/llite/xattr.c
> +++ b/drivers/staging/lustre/lustre/llite/xattr.c
> @@ -87,7 +87,7 @@ ll_xattr_set_common(const struct xattr_handler *handler,
>                   const char *name, const void *value, size_t size,
>                   int flags)
>  {
> -     char fullname[strlen(handler->prefix) + strlen(name) + 1];
> +     char *fullname;
>       struct ll_sb_info *sbi = ll_i2sbi(inode);
>       struct ptlrpc_request *req = NULL;
>       const char *pv = value;
> @@ -141,10 +141,13 @@ ll_xattr_set_common(const struct xattr_handler *handler,
>                       return -EPERM;
>       }
>  
> -     sprintf(fullname, "%s%s\n", handler->prefix, name);
> +     fullname = kasprintf(GFP_KERNEL, "%s%s\n", handler->prefix, name);
> +     if (!fullname)
> +             return -ENOMEM;
>       rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode),
>                        valid, fullname, pv, size, 0, flags,
>                        ll_i2suppgid(inode), &req);
> +     kfree(fullname);

This is cool.  We've had kasprintf() since 2007, who knew?!

thanks,
Tobin.

Reply via email to