NAK: [SRU][Bionic][Cosmic][PATCH 1/1] geneve: Can't create geneve tunnels when ipv6 disabled dynamically
Kleber Souza
kleber.souza at canonical.com
Tue May 7 10:41:36 UTC 2019
On 5/6/19 5:54 PM, Nivedita Singhvi wrote:
> From: Jiri Benc <jbenc at redhat.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1794232
>
> When IPv6 is compiled but disabled at runtime, geneve_sock_add returns
> -EAFNOSUPPORT. For metadata based tunnels, this causes failure of the whole
> operation of bringing up the tunnel.
>
> Ignore failure of IPv6 socket creation for metadata based tunnels caused by
> IPv6 not being available.
>
> This is the same fix as what commit d074bf960044 ("vxlan: correctly handle
> ipv6.disable module parameter") is doing for vxlan.
>
> Note there's also commit c0a47e44c098 ("geneve: should not call rt6_lookup()
> when ipv6 was disabled") which fixes a similar issue but for regular
> tunnels, while this patch is needed for metadata based tunnels.
>
> Signed-off-by: Jiri Benc <jbenc at redhat.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit cf1c9ccba7308e48a68fa77f476287d9d614e4c7)
> Signed-off-by: Nivedita Singhvi <nivedita.singhvi at canonical.com>
Hi Nivedita,
The patch itself looks good. Clean cherry-picked, tested and affects a single
driver. However, the subject of the email doesn't match the title of the
commit message. From the mainline git repo, the commit cf1c9ccba730 is
named "geneve: correctly handle ipv6.disable module parameter" instead of
"geneve: Can't create geneve tunnels when ipv6 disabled dynamically".
Could you please re-send the patch with the fixed title?
Thank you,
Kleber
> ---
> drivers/net/geneve.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
> index 8bb5bd72342a..62e62cab6739 100644
> --- a/drivers/net/geneve.c
> +++ b/drivers/net/geneve.c
> @@ -632,15 +632,20 @@ static int geneve_sock_add(struct geneve_dev *geneve, bool ipv6)
> static int geneve_open(struct net_device *dev)
> {
> struct geneve_dev *geneve = netdev_priv(dev);
> - bool ipv6 = !!(geneve->info.mode & IP_TUNNEL_INFO_IPV6);
> bool metadata = geneve->collect_md;
> + bool ipv4, ipv6;
> int ret = 0;
>
> + ipv6 = geneve->info.mode & IP_TUNNEL_INFO_IPV6 || metadata;
> + ipv4 = !ipv6 || metadata;
> #if IS_ENABLED(CONFIG_IPV6)
> - if (ipv6 || metadata)
> + if (ipv6) {
> ret = geneve_sock_add(geneve, true);
> + if (ret < 0 && ret != -EAFNOSUPPORT)
> + ipv4 = false;
> + }
> #endif
> - if (!ret && (!ipv6 || metadata))
> + if (ipv4)
> ret = geneve_sock_add(geneve, false);
> if (ret < 0)
> geneve_sock_release(geneve);
>
More information about the kernel-team
mailing list