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-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 22 Mar 2013 17:22:49 +0100
From:	Nicolas Dichtel <nicolas.dichtel@...nd.com>
To:	Nicolas Dichtel <nicolas.dichtel@...nd.com>
CC:	netdev@...r.kernel.org, davem@...emloft.net,
	junwei.zhang@...nd.com, hongjun.li@...nd.com
Subject: Re: [PATCH net-next 2/2] ipv6: provide addr and netconf dump consistency
 info

Please, drop both patches. If we dump addresses via rtnl_dump_all(), seq is not 
reset and thus NLM_F_DUMP_INTR is always set when switching from ipv4 to ipv6 
family.

I will send a new patch.

Nicolas

Le 22/03/2013 15:42, Nicolas Dichtel a écrit :
> This patch adds a dev_addr_genid for IPv6. The goal is to use it, combined with
> dev_base_seq to check if a change occurs during a netlink dump.
> If a change is detected, the flag NLM_F_DUMP_INTR is set in the first message
> after the dump was interrupted.
>
> Note that only dump of unicast addresses is checked (multicast and anycast are
> not checked).
>
> Reported-by: Junwei Zhang <junwei.zhang@...nd.com>
> Reported-by: Hongjun Li <hongjun.li@...nd.com>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@...nd.com>
> ---
>   include/net/netns/ipv6.h | 1 +
>   net/ipv6/addrconf.c      | 8 ++++++++
>   2 files changed, 9 insertions(+)
>
> diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
> index 1242f37..005e2c2 100644
> --- a/include/net/netns/ipv6.h
> +++ b/include/net/netns/ipv6.h
> @@ -71,6 +71,7 @@ struct netns_ipv6 {
>   	struct fib_rules_ops	*mr6_rules_ops;
>   #endif
>   #endif
> +	atomic_t		dev_addr_genid;
>   };
>
>   #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index fa36a67..d0e40d4 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -622,6 +622,8 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
>   		idx = 0;
>   		head = &net->dev_index_head[h];
>   		rcu_read_lock();
> +		cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^
> +			  net->dev_base_seq;
>   		hlist_for_each_entry_rcu(dev, head, index_hlist) {
>   			if (idx < s_idx)
>   				goto cont;
> @@ -639,6 +641,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
>   				rcu_read_unlock();
>   				goto done;
>   			}
> +			nl_dump_check_consistent(cb, nlmsg_hdr(skb));
>   cont:
>   			idx++;
>   		}
> @@ -3875,6 +3878,7 @@ static int in6_dump_addrs(struct inet6_dev *idev, struct sk_buff *skb,
>   						NLM_F_MULTI);
>   			if (err <= 0)
>   				break;
> +			nl_dump_check_consistent(cb, nlmsg_hdr(skb));
>   		}
>   		break;
>   	}
> @@ -3932,6 +3936,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
>   	s_ip_idx = ip_idx = cb->args[2];
>
>   	rcu_read_lock();
> +	cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^ net->dev_base_seq;
>   	for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
>   		idx = 0;
>   		head = &net->dev_index_head[h];
> @@ -4409,6 +4414,8 @@ errout:
>
>   static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
>   {
> +	struct net *net = dev_net(ifp->idev->dev);
> +
>   	inet6_ifa_notify(event ? : RTM_NEWADDR, ifp);
>
>   	switch (event) {
> @@ -4434,6 +4441,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
>   			dst_free(&ifp->rt->dst);
>   		break;
>   	}
> +	atomic_inc(&net->ipv6.dev_addr_genid);
>   }
>
>   static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
>

-- 
Nicolas DICHTEL
6WIND
R&D Engineer

Tel: +33 1 39 30 92 41
Fax: +33 1 39 30 92 11
nicolas.dichtel@...nd.com
www.6wind.com
www.6windblog.com
Twitter: http://twitter.com/6windsoftware

Ce courriel ainsi que toutes les pièces jointes, est uniquement destiné à son ou 
ses destinataires. Il contient des informations confidentielles qui sont la 
propriété de 6WIND. Toute révélation, distribution ou copie des informations 
qu'il contient est strictement interdite. Si vous avez reçu ce message par 
erreur, veuillez immédiatement le signaler à l'émetteur et détruire toutes les 
données reçues.

This e-mail message, including any attachments, is for the sole use of the 
intended recipient(s) and contains information that is confidential and 
proprietary to 6WIND. All unauthorized review, use, disclosure or distribution 
is prohibited. If you are not the intended recipient, please contact the sender 
by reply e-mail and destroy all copies of the original message.
--
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