Re: [PATCH v2] hugetlbfs: correct handling of negative input to /proc/sys/vm/nr_hugepages

Petr Holasek
2011-02-24T17:02:54Z

----- Original Message -----
> From: "Petr Holasek" <pholasek@redhat.com>
> To: linux-kernel@vger.kernel.org
> Cc: "Petr Holasek" <pholasek@redhat.com>, "Andi Kleen" <ak@linux.intel.com>, "Naoya Horiguchi"
> <n-horiguchi@ah.jp.nec.com>, "Mel Gorman" <mel@csn.ul.ie>, "Andrew Morton" <akpm@linux-foundation.org>, "Wu Fengguang"
> <fengguang.wu@intel.com>, linux-mm@kvack.org
> Sent: Tuesday, February 22, 2011 9:17:04 PM
> Subject: [PATCH v2] hugetlbfs: correct handling of negative input to /proc/sys/vm/nr_hugepages
> When user insert negative value into /proc/sys/vm/nr_hugepages it will
> result
> in the setting a random number of HugePages in system (can be easily
> showed
> at /proc/meminfo output). This patch fixes the wrong behavior so that
> the
> negative input will result in nr_hugepages value unchanged.
>
> v2: same fix was also done in hugetlb_overcommit_handler function
> as suggested by reviewers.
>
> Signed-off-by: Petr Holasek <pholasek@redhat.com>
> Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
> ---
> mm/hugetlb.c | 6 ++----
> 1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index bb0b7c1..06de5aa 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -1872,8 +1872,7 @@ static int hugetlb_sysctl_handler_common(bool
> obey_mempolicy,
> unsigned long tmp;
> int ret;
>
> - if (!write)
> - tmp = h->max_huge_pages;
> + tmp = h->max_huge_pages;
>
> if (write && h->order >= MAX_ORDER)
> return -EINVAL;
> @@ -1938,8 +1937,7 @@ int hugetlb_overcommit_handler(struct ctl_table
> *table, int write,
> unsigned long tmp;
> int ret;
>
> - if (!write)
> - tmp = h->nr_overcommit_huge_pages;
> + tmp = h->nr_overcommit_huge_pages;
>
> if (write && h->order >= MAX_ORDER)
> return -EINVAL;
> --
> 1.7.1
> --
> To unsubscribe from this list: send the line "unsubscribe
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

I am really sorry, but tabs were broken up into spaces during posting,
here is the right version:

thanks,
Petr

---
mm/hugetlb.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index bb0b7c1..06de5aa 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1872,8 +1872,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
unsigned long tmp;
int ret;

- if (!write)
- tmp = h->max_huge_pages;
+ tmp = h->max_huge_pages;

if (write && h->order >= MAX_ORDER)
return -EINVAL;
@@ -1938,8 +1937,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
unsigned long tmp;
int ret;

- if (!write)
- tmp = h->nr_overcommit_huge_pages;
+ tmp = h->nr_overcommit_huge_pages;

if (write && h->order >= MAX_ORDER)
return -EINVAL;
--
1.7.1