diff options
| author | Michael Bestas <mkbestas@lineageos.org> | 2021-07-22 01:39:54 +0300 |
|---|---|---|
| committer | Michael Bestas <mkbestas@lineageos.org> | 2021-07-22 01:39:54 +0300 |
| commit | 954d3318ebc1b79dc469995450b23c30ce44b6af (patch) | |
| tree | 50ba2449476562b2aa8e2f6bd55e5f4915958163 /net/ipv6 | |
| parent | 3c741a8b469c522434e6841d8618702303fd6a21 (diff) | |
| parent | e5239ed489f6471bc235af8534ee57d1923778e4 (diff) | |
Merge branch 'android-4.4-p' of https://android.googlesource.com/kernel/common into lineage-18.1-caf-msm8998
This brings LA.UM.9.2.r1-03400-SDMxx0.0 up to date with
https://android.googlesource.com/kernel/common/ android-4.4-p at commit:
e5239ed489f64 Merge 4.4.276 into android-4.4-p
Change-Id: I5f3fdc31e61b229b299cf72014710d36e42863d8
Diffstat (limited to 'net/ipv6')
| -rw-r--r-- | net/ipv6/output_core.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c index 6b896cc9604e..e2de4b0479f6 100644 --- a/net/ipv6/output_core.c +++ b/net/ipv6/output_core.c @@ -14,29 +14,11 @@ static u32 __ipv6_select_ident(struct net *net, const struct in6_addr *dst, const struct in6_addr *src) { - const struct { - struct in6_addr dst; - struct in6_addr src; - } __aligned(SIPHASH_ALIGNMENT) combined = { - .dst = *dst, - .src = *src, - }; - u32 hash, id; - - /* Note the following code is not safe, but this is okay. */ - if (unlikely(siphash_key_is_zero(&net->ipv4.ip_id_key))) - get_random_bytes(&net->ipv4.ip_id_key, - sizeof(net->ipv4.ip_id_key)); - - hash = siphash(&combined, sizeof(combined), &net->ipv4.ip_id_key); - - /* Treat id of 0 as unset and if we get 0 back from ip_idents_reserve, - * set the hight order instead thus minimizing possible future - * collisions. - */ - id = ip_idents_reserve(hash, 1); - if (unlikely(!id)) - id = 1 << 31; + u32 id; + + do { + id = prandom_u32(); + } while (!id); return id; } |
