Re: PATCH: hugetlb: handle NODEMASK_ALLOC failure correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu 06-01-11 12:38:58, Andrew Morton wrote:
> On Thu, 6 Jan 2011 11:04:39 +0100
> Michal Hocko <mhocko@xxxxxxx> wrote:
> 
> > 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 <mhocko@xxxxxxx>
> > ---
> >  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.

Yes, I cannot find it anywhere (maybe just a bad searching pattern) but
this seems to be the case for -O1, -O2 and -Os. Anyway it makes a
perfect sense to me.

Thanks for the review.

> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@xxxxxxxxxx  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@xxxxxxxxx";> email@xxxxxxxxx </a>

-- 
Michal Hocko
L3 team 
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9    
Czech Republic

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  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@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]