[V4] ethdev: restore eth_da init at startup of rte_eth_devargs_parse()
Checks
Commit Message
Commit 9a9eb104edf6 ("ethdev: parse multiple representor devargs") removes
the following variable initialization in rte_eth_devargs_parse():
memset(eth_da, 0, sizeof(*eth_da));
Restore the memset, as this causes regression in ixgbe PCI probe.
As the listed commit introduces a new argument: nb_da, the memset
takes it into account.
Fixes: 9a9eb104edf6 ("ethdev: parse multiple representor devargs")
Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
V4: use nb_da to define the size of the memset
V3: fix variable name
V2: fix git hash length
lib/ethdev/ethdev_driver.c | 2 ++
1 file changed, 2 insertions(+)
Comments
On 3/11/2024 12:55 PM, Thierry Herbelot wrote:
> Commit 9a9eb104edf6 ("ethdev: parse multiple representor devargs") removes
> the following variable initialization in rte_eth_devargs_parse():
>
> memset(eth_da, 0, sizeof(*eth_da));
>
> Restore the memset, as this causes regression in ixgbe PCI probe.
>
> As the listed commit introduces a new argument: nb_da, the memset
> takes it into account.
>
> Fixes: 9a9eb104edf6 ("ethdev: parse multiple representor devargs")
> Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
>
Thanks for the fix,
Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.com>
Applied to dpdk-next-net/main, thanks.
Patch title and commit log updated as following while merging:
```
ethdev: fix uninitialised representor devargs
rte_eth_devargs_parse() stops initialising eth_devargs variable to zero,
which causes regression in ixgbe PCI probe.
Restore the memset for fix.
As the listed commit introduces a new argument: nb_da, the memset
takes it into account.
Fixes: 9a9eb104edf6 ("ethdev: parse multiple representor devargs")
```
@@ -617,6 +617,8 @@ rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_devargs,
unsigned int i;
int result = 0;
+ memset(eth_devargs, 0, nb_da * sizeof(*eth_devargs));
+
result = eth_dev_devargs_tokenise(&args, dargs);
if (result < 0)
goto parse_cleanup;