lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1175003838.3277.41.camel@pmac.infradead.org>
Date:	Tue, 27 Mar 2007 14:57:18 +0100
From:	David Woodhouse <dwmw2@...radead.org>
To:	Herbert Xu <herbert@...dor.apana.org.au>
Cc:	"David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: [IPV6]: Do not set IF_READY if device is down

On Thu, 2007-03-08 at 03:59 +0000, Linux Kernel Mailing List wrote:
> Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c7ababbdc647e67e953d153ddf62cbdc9fe3297e
> Commit:     c7ababbdc647e67e953d153ddf62cbdc9fe3297e
> Parent:     16bec31db751030171b31d7767fa3a5bdbe980ea
> Author:     Herbert Xu <herbert@...dor.apana.org.au>
> AuthorDate: Wed Mar 7 16:02:40 2007 -0800
> Committer:  David S. Miller <davem@...set.davemloft.net>
> CommitDate: Wed Mar 7 16:08:12 2007 -0800
> 
>     [IPV6]: Do not set IF_READY if device is down
>     
>     Now that we add the IPv6 device at registration time we don't need
>     to set IF_READY in ipv6_add_dev anymore because we will always get
>     a NETDEV_UP event later on should the device ever become ready.
>     
>     Signed-off-by: Herbert Xu <herbert@...dor.apana.org.au>
>     Signed-off-by: David S. Miller <davem@...emloft.net>

This commit seems to have broken NetworkManager, which removes the
link-local IPv6 address from each wireless interface while it's only
intending to use it for scanning, then adds it back when it actually
wants to _use_ the interface in question.

After this commit, any IPv6 address added to an interface which had none
will be marked as 'tentative', and will never become real.

A failing test looks like this....

+ ip -6 addr del fe80::203:ccff:fe3c:27d/64 dev eth0                            
+ ip -6 addr del 2001:8b0:10b:1:203:ccff:fe3c:27d/64 dev eth0                   
+ ip -6 addr list eth0                                                          
+ ip -6 addr add fe80::203:ccff:fe3c:27d/64 dev eth0                            
+ ip -6 addr list eth0                                                          
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000                   
    inet6 fe80::203:ccff:fe3c:27d/64 scope link tentative                       
       valid_lft forever preferred_lft forever                                  
+ sleep 3                                                                       
+ ip -6 addr list eth0                                                          
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000                   
    inet6 fe80::203:ccff:fe3c:27d/64 scope link tentative                       
       valid_lft forever preferred_lft forever  

... while on a good kernel it looks like this...

+ ip -6 addr del fe80::203:ccff:fe3c:27d/64 dev eth0                            
+ ip -6 addr del 2001:8b0:10b:1:203:ccff:fe3c:27d/64 dev eth0                   
+ ip -6 addr list eth0                                                          
+ ip -6 addr add fe80::203:ccff:fe3c:27d/64 dev eth0                            
+ ip -6 addr list eth0                                                          
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000                   
    inet6 fe80::203:ccff:fe3c:27d/64 scope link tentative                       
       valid_lft forever preferred_lft forever                                  
+ sleep 3                                                                       
+ ip -6 addr list eth0                                                          
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000                   
    inet6 2001:8b0:10b:1:203:ccff:fe3c:27d/64 scope global dynamic              
       valid_lft 298sec preferred_lft 118sec                                    
    inet6 fe80::203:ccff:fe3c:27d/64 scope link                                 
       valid_lft forever preferred_lft forever                                  

If I add an extra IPv6 address before running the script on a 'bad'
kernel, it behaves correctly. The problem only happens when you remove
_all_ IPv6 addresses from an interface.

Answers of "don't do that then" should be accompanied with an
alternative plan which allows NetworkManager to use a wireless device
for scanning without actually having any other effect.

-- 
dwmw2

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ