diff options
author | Davidlohr Bueso <dave@gnu.org> | 2012-10-04 17:13:18 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-13 05:38:38 +0900 |
commit | 6d36a9dd1dcdd053ab32f303b94cc1bae5a47f22 (patch) | |
tree | 5df55ecc66f90dfbfce2d1da916abdf476dec604 /lib | |
parent | 03c4441b88fd2614580eeda598623e2b21ec5822 (diff) | |
download | linux-stable-6d36a9dd1dcdd053ab32f303b94cc1bae5a47f22.tar.gz linux-stable-6d36a9dd1dcdd053ab32f303b94cc1bae5a47f22.tar.bz2 linux-stable-6d36a9dd1dcdd053ab32f303b94cc1bae5a47f22.zip |
lib/gcd.c: prevent possible div by 0
commit e96875677fb2b7cb739c5d7769824dff7260d31d upstream.
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>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gcd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/gcd.c b/lib/gcd.c index cce4f3cd14b3..3657f129d7b8 100644 --- a/lib/gcd.c +++ b/lib/gcd.c @@ -9,6 +9,9 @@ unsigned long gcd(unsigned long a, unsigned long b) if (a < b) swap(a, b); + + if (!b) + return a; while ((r = a % b) != 0) { a = b; b = r; |