On 2015/02/24 18:41, David Marchand wrote:
> Following commit c07691ae1089, an implicit change has been done in the devargs
> api.
> This triggers problem in virtual pmds that did not check for parameters 
> validity
> as it was implicitely valid.
>
> Fix this by restoring the empty argument as "" and add a note in the api.
> Restore associated tests.
>
> Fixes: c07691ae1089 ("devargs: remove limit on parameters length")
> Reported-by: Tetsuya Mukawa <mukawa at igel.co.jp>
> Signed-off-by: David Marchand <david.marchand at 6wind.com>
> ---
>  app/test/test_devargs.c                     |    2 +-
>  lib/librte_eal/common/eal_common_devargs.c  |   11 +++++++----
>  lib/librte_eal/common/include/rte_devargs.h |    2 +-
>  3 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
> index 08fb781..f7fc59c 100644
> --- a/app/test/test_devargs.c
> +++ b/app/test/test_devargs.c
> @@ -107,7 +107,7 @@ test_devargs(void)
>               devargs->pci.addr.devid != 0 ||
>               devargs->pci.addr.function != 1)
>               goto fail;
> -     if (devargs->args)
> +     if (!devargs->args || strcmp(devargs->args, "") != 0)
>               goto fail;
>       free_devargs_list();
>  
> diff --git a/lib/librte_eal/common/eal_common_devargs.c 
> b/lib/librte_eal/common/eal_common_devargs.c
> index 3aace08..eadd719 100644
> --- a/lib/librte_eal/common/eal_common_devargs.c
> +++ b/lib/librte_eal/common/eal_common_devargs.c
> @@ -73,10 +73,13 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char 
> *devargs_str)
>       if (sep != NULL) {
>               sep[0] = '\0';
>               devargs->args = strdup(sep + 1);
> -             if (devargs->args == NULL) {
> -                     RTE_LOG(ERR, EAL, "cannot allocate for devargs args\n");
> -                     goto fail;
> -             }
> +     } else {
> +             devargs->args = strdup("");
> +     }
> +
> +     if (devargs->args == NULL) {
> +             RTE_LOG(ERR, EAL, "cannot allocate for devargs args\n");
> +             goto fail;
>       }
>  
>       switch (devargs->type) {
> diff --git a/lib/librte_eal/common/include/rte_devargs.h 
> b/lib/librte_eal/common/include/rte_devargs.h
> index 996e180..6834333 100644
> --- a/lib/librte_eal/common/include/rte_devargs.h
> +++ b/lib/librte_eal/common/include/rte_devargs.h
> @@ -88,7 +88,7 @@ struct rte_devargs {
>                       char drv_name[32];
>               } virtual;
>       };
> -     /** Arguments string as given by user. */
> +     /** Arguments string as given by user or "" for no argument. */
>       char *args;
>  };
>  

Hi David,

I've confirmed this patch fixes the issue descried in above comment.

Thanks,
Tetsuya

Reply via email to