diff options
author | Louis Langholtz <lou_langholtz@me.com> | 2015-01-15 22:04:46 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-01-17 10:02:23 +1300 |
commit | fc7f0dd381720ea5ee5818645f7d0e9dece41cb0 (patch) | |
tree | 704eb796bfcdf42f5d04a48fabc2ffd24c824be0 /kernel/range.c | |
parent | 7ad4b4ae5757b89637f5767ae5d9e1436a6413e0 (diff) |
kernel: avoid overflow in cmp_range
Avoid overflow possibility.
[ The overflow is purely theoretical, since this is used for memory
ranges that aren't even close to using the full 64 bits, but this is
the right thing to do regardless. - Linus ]
Signed-off-by: Louis Langholtz <lou_langholtz@me.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Peter Anvin <hpa@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/range.c')
-rw-r--r-- | kernel/range.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/range.c b/kernel/range.c index 322ea8e93e4b..82cfc285b046 100644 --- a/kernel/range.c +++ b/kernel/range.c @@ -113,12 +113,12 @@ static int cmp_range(const void *x1, const void *x2) { const struct range *r1 = x1; const struct range *r2 = x2; - s64 start1, start2; - start1 = r1->start; - start2 = r2->start; - - return start1 - start2; + if (r1->start < r2->start) + return -1; + if (r1->start > r2->start) + return 1; + return 0; } int clean_sort_range(struct range *range, int az) |