23/07/2019 14:11, Andrew Rybchenko:
> rte_eth_dev_info_get() returns void and caller does know if the function
> does its job or not. Changing of the return value to int would be
> API/ABI breakage which requires deprecation process and cannot be
> backported to stable branches. For now, make sure that device info is
> initialized even in the case of invalid port ID.
> 
> Fixes: a30268e9a2d0 ("ethdev: reset whole dev info structure before filling")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Andrew Rybchenko <arybche...@solarflare.com>
> ---
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> +     /*
> +      * Init dev_info before port_id check since caller does not have
> +      * return status and does not know if get is successful or not.
> +      */
> +     memset(dev_info, 0, sizeof(struct rte_eth_dev_info));

If someone was using a canary to detect failure, it will be resetted.
Why is it urgent to have this workaround?
Can we wait one more release for the definitive fix with error code?

> +
>       RTE_ETH_VALID_PORTID_OR_RET(port_id);
>       dev = &rte_eth_devices[port_id];
>  
> -     memset(dev_info, 0, sizeof(struct rte_eth_dev_info));
>       dev_info->rx_desc_lim = lim;
>       dev_info->tx_desc_lim = lim;
>       dev_info->device = dev->device;





Reply via email to