diff options
author | Davidlohr Bueso <dave@gnu.org> | 2012-10-04 20:13:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-05 14:04:57 -0400 |
commit | e96875677fb2b7cb739c5d7769824dff7260d31d (patch) | |
tree | 4d33caeb4dc7584832945427ed8890b3e5c856db /lib/gcd.c | |
parent | 8f1f66ed7e1bdb7c88bb0bc45ac78cd075430d78 (diff) |
lib/gcd.c: prevent possible div by 0
Account for all properties when a and/or b are 0:
gcd(0, 0) = 0
gcd(a, 0) = a
gcd(0, b) = b
Fixes no known problems in current kernels.
Signed-off-by: Davidlohr Bueso <dave@gnu.org>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/gcd.c')
-rw-r--r-- | lib/gcd.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -9,6 +9,9 @@ unsigned long gcd(unsigned long a, unsigned long b) | |||
9 | 9 | ||
10 | if (a < b) | 10 | if (a < b) |
11 | swap(a, b); | 11 | swap(a, b); |
12 | |||
13 | if (!b) | ||
14 | return a; | ||
12 | while ((r = a % b) != 0) { | 15 | while ((r = a % b) != 0) { |
13 | a = b; | 16 | a = b; |
14 | b = r; | 17 | b = r; |