On Thu, 14 Jan 2021 09:49:48 +0100 Nicolas Dichtel wrote:
> Le 14/01/2021 à 02:29, Jakub Kicinski a écrit :
> [snip]
> > --- a/net/ipv6/sit.c
> > +++ b/net/ipv6/sit.c
> > @@ -1645,8 +1645,11 @@ static int ipip6_newlink(struct net *src_net, struct
> > net_device *dev,
> > }
> >
> > #ifdef CO
Le 14/01/2021 à 02:29, Jakub Kicinski a écrit :
[snip]
> --- a/net/ipv6/sit.c
> +++ b/net/ipv6/sit.c
> @@ -1645,8 +1645,11 @@ static int ipip6_newlink(struct net *src_net, struct
> net_device *dev,
> }
>
> #ifdef CONFIG_IPV6_SIT_6RD
> - if (ipip6_netlink_6rd_parms(data, &ip6rd))
> +
We need to unregister the netdevice if config failed.
.ndo_uninit takes care of most of the heavy lifting.
This was uncovered by recent commit c269a24ce057 ("net: make
free_netdev() more lenient with unregistering devices").
Previously the partially-initialized device would be left
in the system.