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
| ||
|
Date: Fri, 27 Mar 2015 20:36:36 +0300 From: Sergei Shtylyov <sergei.shtylyov@...entembedded.com> To: Jiri Benc <jbenc@...hat.com>, netdev@...r.kernel.org CC: Mahesh Bandewar <maheshb@...gle.com>, Dan Williams <dcbw@...hat.com> Subject: Re: [PATCH net 1/4 v2] ipvlan: fix addr hash list corruption Hello. On 03/27/2015 08:30 PM, Jiri Benc wrote: > When ipvlan interface with IP addresses attached is brought down and then > deleted, the assigned addresses are deleted twice from the address hash > list, first on the interface down and second on the link deletion. > Similarly, when an address is added while the interface is down, it is added > second time once the interface is brought up. > When the interface is down, the addresses should be kept off the hash list > for performance reasons. Ensure this is true, which also fixes the double add > problem. To fix the double free, check whether the address is hashed before > removing it. > Reported-by: Dan Williams <dcbw@...hat.com> > Signed-off-by: Jiri Benc <jbenc@...hat.com> > --- > Changes since v1: check hlist_unhashed on deletion instead of depending on > netif_running [...] > diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c > index 4f4099d5603d..dbaf67c722a0 100644 > --- a/drivers/net/ipvlan/ipvlan_main.c > +++ b/drivers/net/ipvlan/ipvlan_main.c > @@ -622,7 +622,10 @@ static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) > addr->atype = IPVL_IPV6; > list_add_tail_rcu(&addr->anode, &ipvlan->addrs); > ipvlan->ipv6cnt++; > - ipvlan_ht_addr_add(ipvlan, addr); > + /* If the interface is not up, the address will be added to the hash > + * list by ipvlan_open. */ The preferred multi-line comment style in the networking code is: /* Like * this. */ [...] > @@ -690,7 +693,10 @@ static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) > addr->atype = IPVL_IPV4; > list_add_tail_rcu(&addr->anode, &ipvlan->addrs); > ipvlan->ipv4cnt++; > - ipvlan_ht_addr_add(ipvlan, addr); > + /* If the interface is not up, the address will be added to the hash > + * list by ipvlan_open. */ Likewise. [...] WBR, Sergei -- 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