summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2019-08-09 20:09:49 +0100
committerBen Hutchings <ben@decadent.org.uk>2019-08-13 12:39:28 +0100
commit05f4b670242e2b27c95d6eca88ac1fbf79c27a56 (patch)
tree91d2cffb86eaacb79dd4fa973ee9a013bbd6e6c9
parent2ed58e578b03269b23eb7119fb38478725ae6470 (diff)
downloadlinux-stable-05f4b670242e2b27c95d6eca88ac1fbf79c27a56.tar.gz
linux-stable-05f4b670242e2b27c95d6eca88ac1fbf79c27a56.tar.bz2
linux-stable-05f4b670242e2b27c95d6eca88ac1fbf79c27a56.zip
Revert "inet: update the IP ID generation algorithm to higher standards."
This reverts commit 8b197d3ce585d6777197e0633d71e5af7d98cb35, which was a stable-specific improvement to IP ID selection. I will apply the upstream changes instead. Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--net/ipv4/route.c4
-rw-r--r--net/ipv6/ip6_output.c3
2 files changed, 1 insertions, 6 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 660848116761..236c6c6134d1 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -487,15 +487,13 @@ EXPORT_SYMBOL(ip_idents_reserve);
void __ip_select_ident(struct iphdr *iph, int segs)
{
static u32 ip_idents_hashrnd __read_mostly;
- static u32 ip_idents_hashrnd_extra __read_mostly;
u32 hash, id;
net_get_random_once(&ip_idents_hashrnd, sizeof(ip_idents_hashrnd));
- net_get_random_once(&ip_idents_hashrnd_extra, sizeof(ip_idents_hashrnd_extra));
hash = jhash_3words((__force u32)iph->daddr,
(__force u32)iph->saddr,
- iph->protocol ^ ip_idents_hashrnd_extra,
+ iph->protocol,
ip_idents_hashrnd);
id = ip_idents_reserve(hash, segs);
iph->id = htons(id);
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index bb98cde51476..e59b30054b0f 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -541,15 +541,12 @@ static void ip6_copy_metadata(struct sk_buff *to, struct sk_buff *from)
static void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt)
{
static u32 ip6_idents_hashrnd __read_mostly;
- static u32 ip6_idents_hashrnd_extra __read_mostly;
u32 hash, id;
net_get_random_once(&ip6_idents_hashrnd, sizeof(ip6_idents_hashrnd));
- net_get_random_once(&ip6_idents_hashrnd_extra, sizeof(ip6_idents_hashrnd_extra));
hash = __ipv6_addr_jhash(&rt->rt6i_dst.addr, ip6_idents_hashrnd);
hash = __ipv6_addr_jhash(&rt->rt6i_src.addr, hash);
- hash = jhash_1word(hash, ip6_idents_hashrnd_extra);
id = ip_idents_reserve(hash, 1);
fhdr->identification = htonl(id);