Re: PATCH: hugetlb: handle NODEMASK_ALLOC failure correctly
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2011-01-06 20:39:38
On Thu, 6 Jan 2011 11:04:39 +0100 Michal Hocko [off-list ref] wrote:
quoted hunk ↗ jump to hunk
NODEMASK_ALLOC can use kmalloc if nodemask_t > 256 bytes so it might fail with NULL as a result. Let's check the resulting variable and fail with -ENOMEM if NODEMASK_ALLOC failed. Signed-off-by: Michal Hocko <redacted> --- mm/hugetlb.c | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-)diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 4c0606c..21f31b2 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c@@ -1439,14 +1439,19 @@ static ssize_t nr_hugepages_store_common(bool obey_mempolicy, struct hstate *h; NODEMASK_ALLOC(nodemask_t, nodes_allowed, GFP_KERNEL | __GFP_NORETRY); + if (!nodes_allowed) { + err = -ENOMEM; + goto out; + }
Looks good to me. I was going to complain that it adds extra unneeded
instructions in the case where the nodemasks are allocated on the
stack. But it appears that gcc assumes that stack-based variables
cannot have address zero, so if gcc sees this:
{
nodemask_t foo;
if (!&foo) {
stuff
}
}
if just removes it all for us.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>