[v4] net/kni: reset rte_kni_conf struct before initialization
Checks
Commit Message
When kni driver calls eth_kni_start to start device, some fields such as
min_mtu and max_mtu of rte_kni_conf are not initialized. It will cause
kni_ioctl_create create a kni netdevice with a random min_mtu and max_mtu
value. This isunexpected and in some time we could not change the kni
device mtu with ip link command.
Fixes: ff1e35fb5f8 ("kni: calculate MTU from mbuf size")
Signed-off-by: Harold Huang <baymaxhuang@gmail.com>
---
drivers/net/kni/rte_eth_kni.c | 1 +
1 file changed, 1 insertion(+)
Comments
+Cc Ferruh
05/12/2021 07:21, Harold Huang:
> When kni driver calls eth_kni_start to start device, some fields such as
> min_mtu and max_mtu of rte_kni_conf are not initialized. It will cause
> kni_ioctl_create create a kni netdevice with a random min_mtu and max_mtu
> value. This isunexpected and in some time we could not change the kni
> device mtu with ip link command.
>
> Fixes: ff1e35fb5f8 ("kni: calculate MTU from mbuf size")
> Signed-off-by: Harold Huang <baymaxhuang@gmail.com>
> ---
> drivers/net/kni/rte_eth_kni.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
> index c428caf441..23b15edfac 100644
> --- a/drivers/net/kni/rte_eth_kni.c
> +++ b/drivers/net/kni/rte_eth_kni.c
> @@ -128,6 +128,7 @@ eth_kni_start(struct rte_eth_dev *dev)
> const char *name = dev->device->name + 4; /* remove net_ */
>
> mb_pool = internals->rx_queues[0].mb_pool;
> + memset(&conf, 0, sizeof(conf));
> strlcpy(conf.name, name, RTE_KNI_NAMESIZE);
> conf.force_bind = 0;
> conf.group_id = port_id;
@@ -128,6 +128,7 @@ eth_kni_start(struct rte_eth_dev *dev)
const char *name = dev->device->name + 4; /* remove net_ */
mb_pool = internals->rx_queues[0].mb_pool;
+ memset(&conf, 0, sizeof(conf));
strlcpy(conf.name, name, RTE_KNI_NAMESIZE);
conf.force_bind = 0;
conf.group_id = port_id;