[dpdk-dev] [PATCH] devargs: restore empty devargs as ""
Tetsuya Mukawa
mukawa at igel.co.jp
Tue Feb 24 11:16:27 CET 2015
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
More information about the dev
mailing list