ACK: [SRU][PATCH 1/1] geneve: correctly handle ipv6.disable module parameter

Stefan Bader stefan.bader at canonical.com
Fri Jun 28 15:22:26 UTC 2019


On 26.06.19 11:28, 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>
> (backported from commit cf1c9ccba7308e48a68fa77f476287d9d614e4c7)
> [ niv: infra.mode omitted and remote.sa.sa_family == AF_INET6
>   check retained to avoid pulling in lot of new infrastructure ]
> Signed-off-by: Nivedita Singhvi <nivedita.singhvi at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
>  drivers/net/geneve.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
> index 1a7acf6a6455..df2ae135da1c 100644
> --- a/drivers/net/geneve.c
> +++ b/drivers/net/geneve.c
> @@ -627,15 +627,19 @@ static int geneve_open(struct net_device *dev)
>  	struct geneve_dev *geneve = netdev_priv(dev);
>  	bool ipv6 = geneve->remote.sa.sa_family == AF_INET6;
>  	bool metadata = geneve->collect_md;
> +	bool ipv4 = !ipv6 || metadata;
>  	int ret = 0;
>  
>  	geneve->sock4 = NULL;
>  #if IS_ENABLED(CONFIG_IPV6)
>  	geneve->sock6 = NULL;
> -	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);
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20190628/90473d16/attachment.sig>


More information about the kernel-team mailing list