2024-04-13 18:18:03

by Jun Gu

[permalink] [raw]
Subject: [PATCH] net: openvswitch: Check vport name

Check vport name from dev_get_by_name, this can avoid to add and remove
NIC repeatedly when NIC rename failed at system startup.

Signed-off-by: Jun Gu <[email protected]>
---
net/openvswitch/vport-netdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c
index 903537a5da22..de8977d7f329 100644
--- a/net/openvswitch/vport-netdev.c
+++ b/net/openvswitch/vport-netdev.c
@@ -78,7 +78,7 @@ struct vport *ovs_netdev_link(struct vport *vport, const char *name)
int err;

vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name);
- if (!vport->dev) {
+ if (!vport->dev) || strcmp(name, ovs_vport_name(vport)) {
err = -ENODEV;
goto error_free_vport;
}
--
2.25.1



2024-04-15 10:05:01

by Eelco Chaudron

[permalink] [raw]
Subject: Re: [ovs-dev] [PATCH] net: openvswitch: Check vport name



On 13 Apr 2024, at 10:48, jun.gu wrote:

> Check vport name from dev_get_by_name, this can avoid to add and remove
> NIC repeatedly when NIC rename failed at system startup.
>
> Signed-off-by: Jun Gu <[email protected]>
> ---
> net/openvswitch/vport-netdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c
> index 903537a5da22..de8977d7f329 100644
> --- a/net/openvswitch/vport-netdev.c
> +++ b/net/openvswitch/vport-netdev.c
> @@ -78,7 +78,7 @@ struct vport *ovs_netdev_link(struct vport *vport, const char *name)
> int err;
>
> vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name);
> - if (!vport->dev) {
> + if (!vport->dev) || strcmp(name, ovs_vport_name(vport)) {

Hi Jun, not sure if I get the point here, as ovs_vport_name() translates into vport->dev->name.

So are we trying to catch the interface rename between the dev_get_by_name(), and the code below? This rename could happen at any other place, so this check does not guarantee anything. Or am I missing something?

> err = -ENODEV;
> goto error_free_vport;
> }
> --
> 2.25.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev


2024-04-16 13:36:01

by Paolo Abeni

[permalink] [raw]
Subject: Re: [PATCH] net: openvswitch: Check vport name

On Sat, 2024-04-13 at 16:48 +0800, jun.gu wrote:
> Check vport name from dev_get_by_name, this can avoid to add and remove
> NIC repeatedly when NIC rename failed at system startup.
>
> Signed-off-by: Jun Gu <[email protected]>
> ---
> net/openvswitch/vport-netdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c
> index 903537a5da22..de8977d7f329 100644
> --- a/net/openvswitch/vport-netdev.c
> +++ b/net/openvswitch/vport-netdev.c
> @@ -78,7 +78,7 @@ struct vport *ovs_netdev_link(struct vport *vport, const char *name)
> int err;
>
> vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name);
> - if (!vport->dev) {
> + if (!vport->dev) || strcmp(name, ovs_vport_name(vport)) {

^^
Missing open bracket here, and close bracket towards the end. Please
build and test your patch before submitting the next revision.

Please also include the target tree ('net-next') in the subj prefix
when you will submit it.

And update the commit message as per Eelco's request.

Thanks,

Paolo