On Fri, 2008-10-03 at 18:37 +0100, Andy Whitcroft wrote:
> The default page size is returned in KB but we compare it directly
> to the requested page size which is in bytes.  This will lead us to
> use the sysfs interface when we should be using the proc/meminfo ones
> for the default page size.  This will break backwards compatibility.
> 
> As the default page size in bytes may be larger than a long (for example
> when 16GB pages are the default) therefore when determinining whether
> the pagesize we are probing is the default we need to be wary of errors
> when converting the default.  As the default page size is in KB already
> it makes sense to convert the user page size and do the comparison in KB
> as that is always safe.
> 
> Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]>

Acked-by: Adam Litke <[EMAIL PROTECTED]>

> ---
>  hugeutils.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hugeutils.c b/hugeutils.c
> index 3c30b41..e32f049 100644
> --- a/hugeutils.c
> +++ b/hugeutils.c
> @@ -211,7 +211,7 @@ static int file_write_ulong(char *file, unsigned long val)
>  static int select_pool_counter(unsigned int counter, unsigned long pagesize,
>                               char *filename, char **key)
>  {
> -     long default_size;
> +     long default_size_kb;
>       char *meminfo_key;
>       char *sysfs_file;
> 
> @@ -231,14 +231,14 @@ static int select_pool_counter(unsigned int counter, 
> unsigned long pagesize,
>        * between libhugetlbfs and the test suite.  For now we will just
>        * read /proc/meminfo. 
>        */
> -     default_size = file_read_ulong("/proc/meminfo", "Hugepagesize:");
> -     if (default_size < 0) {
> +     default_size_kb = file_read_ulong("/proc/meminfo", "Hugepagesize:");
> +     if (default_size_kb < 0) {
>               ERROR("Cannot determine the default page size\n");
>               return -1;
>       }
> 
>       /* If the user is dealing in the default page size, we can use /proc */
> -     if (pagesize == default_size) {
> +     if (pagesize / 1024 == default_size_kb) {
>               if (meminfo_key && key) {
>                       strcpy(filename, "/proc/meminfo");
>                       *key = meminfo_key;
-- 
Adam Litke - (agl at us.ibm.com)
IBM Linux Technology Center


-------------------------------------------------------------------------
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