When page sizes become very large they may overflow a long as we
convert them from giga-, mega-, or kilo-bytes to bytes.  When doing the
conversion if we hit an error we return LONG_MAX.  On 32bit this is 2GB
is is potentially a sensible page size for a 32bit application.  As page
size is a long we have all of the negative range available so it seems
logical to use a negative value to indicate error.

Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]>
Acked-by: Adam Litke <[EMAIL PROTECTED]>
Acked-by: Mel Gorman <[EMAIL PROTECTED]>
---
 hugeutils.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/hugeutils.c b/hugeutils.c
index ae97902..726899e 100644
--- a/hugeutils.c
+++ b/hugeutils.c
@@ -69,8 +69,8 @@ static int hpage_sizes_default_idx = -1;
  */
 static inline long size_to_smaller_unit(long size)
 {
-       if (size == LONG_MAX || size * 1024 < size)
-               return LONG_MAX;
+       if (size < 0 || size * 1024 < size)
+               return -1;
        else
                return size * 1024;
 }
@@ -111,11 +111,9 @@ long __lh_parse_page_size(const char *str)
                size = size_to_smaller_unit(size);
        }
 
-       if (size == LONG_MAX) {
+       if (size < 0)
                errno = EOVERFLOW;
-               return -1;
-       } else
-               return size;
+       return size;
 }
 
 struct hugetlb_pool_counter_info_t {
-- 
1.6.0.1.451.gc8d31


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Libhugetlbfs-devel mailing list
Libhugetlbfs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel

Reply via email to