diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2015-10-28 08:21:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-29 10:01:48 -0400 |
commit | 1e0d69a9cc9172d7896c2113f983a74f6e8ff303 (patch) | |
tree | 4e1c895f7139e926c412063176f58365299d06c9 | |
parent | e18f6ac30d31433d8cd9ccf693d3cdd5d2e66ef9 (diff) |
Revert "Merge branch 'ipv6-overflow-arith'"
Linus dislikes these changes. To not hold up the net-merge let's revert
it for now and fix the bug like Linus suggested.
This reverts commit ec3661b42257d9a06cf0d318175623ac7a660113, reversing
changes made to c80dbe04612986fd6104b4a1be21681b113b5ac9.
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/compiler-gcc.h | 4 | ||||
-rw-r--r-- | include/linux/overflow-arith.h | 18 | ||||
-rw-r--r-- | net/ipv6/ip6_output.c | 6 |
3 files changed, 1 insertions, 27 deletions
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 82c159e0532a..dfaa7b3e9ae9 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
@@ -237,10 +237,6 @@ | |||
237 | #define KASAN_ABI_VERSION 3 | 237 | #define KASAN_ABI_VERSION 3 |
238 | #endif | 238 | #endif |
239 | 239 | ||
240 | #if GCC_VERSION >= 50000 | ||
241 | #define CC_HAVE_BUILTIN_OVERFLOW | ||
242 | #endif | ||
243 | |||
244 | #endif /* gcc version >= 40000 specific checks */ | 240 | #endif /* gcc version >= 40000 specific checks */ |
245 | 241 | ||
246 | #if !defined(__noclone) | 242 | #if !defined(__noclone) |
diff --git a/include/linux/overflow-arith.h b/include/linux/overflow-arith.h deleted file mode 100644 index e12ccf854a70..000000000000 --- a/include/linux/overflow-arith.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include <linux/kernel.h> | ||
4 | |||
5 | #ifdef CC_HAVE_BUILTIN_OVERFLOW | ||
6 | |||
7 | #define overflow_usub __builtin_usub_overflow | ||
8 | |||
9 | #else | ||
10 | |||
11 | static inline bool overflow_usub(unsigned int a, unsigned int b, | ||
12 | unsigned int *res) | ||
13 | { | ||
14 | *res = a - b; | ||
15 | return *res > a ? true : false; | ||
16 | } | ||
17 | |||
18 | #endif | ||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 8dddb45c433e..d03d6da772f3 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <linux/errno.h> | 29 | #include <linux/errno.h> |
30 | #include <linux/kernel.h> | 30 | #include <linux/kernel.h> |
31 | #include <linux/overflow-arith.h> | ||
32 | #include <linux/string.h> | 31 | #include <linux/string.h> |
33 | #include <linux/socket.h> | 32 | #include <linux/socket.h> |
34 | #include <linux/net.h> | 33 | #include <linux/net.h> |
@@ -585,10 +584,7 @@ int ip6_fragment(struct sock *sk, struct sk_buff *skb, | |||
585 | if (np->frag_size) | 584 | if (np->frag_size) |
586 | mtu = np->frag_size; | 585 | mtu = np->frag_size; |
587 | } | 586 | } |
588 | 587 | mtu -= hlen + sizeof(struct frag_hdr); | |
589 | if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) || | ||
590 | mtu <= 7) | ||
591 | goto fail_toobig; | ||
592 | 588 | ||
593 | frag_id = ipv6_select_ident(net, &ipv6_hdr(skb)->daddr, | 589 | frag_id = ipv6_select_ident(net, &ipv6_hdr(skb)->daddr, |
594 | &ipv6_hdr(skb)->saddr); | 590 | &ipv6_hdr(skb)->saddr); |