OSDN Git Service

ipv6: make fragment identifications less predictable
authorEric Dumazet <eric.dumazet@gmail.com>
Tue, 9 Aug 2011 06:44:00 +0000 (23:44 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Aug 2011 01:31:37 +0000 (18:31 -0700)
commitef81bb40bf15f350fe865f31fa42f1082772a576
treef89c3e9616127d234207a84e108bf147cc393215
parenteb473dd5ad8785d35142966cdcd6896d8dff5a22
ipv6: make fragment identifications less predictable

[ Backport of upstream commit 87c48fa3b4630905f98268dde838ee43626a060c ]

Fernando Gont reported current IPv6 fragment identification generation
was not secure, because using a very predictable system-wide generator,
allowing various attacks.

IPv4 uses inetpeer cache to address this problem and to get good
performance. We'll use this mechanism when IPv6 inetpeer is stable
enough in linux-3.1

For the time being, we use jhash on destination address to provide less
predictable identifications. Also remove a spinlock and use cmpxchg() to
get better SMP performance.

Reported-by: Fernando Gont <fernando@gont.com.ar>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
include/net/ipv6.h
include/net/transp_v6.h
net/ipv6/af_inet6.c
net/ipv6/ip6_output.c
net/ipv6/udp.c