Re: [PATCH] mm/cma: Fix crash on CMA allocation if bitmap allocation fails

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

 



On Mon, 25 Mar 2019 15:15:41 -0700
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Mon, 25 Mar 2019 16:13:09 +0800 Yue Hu <zbestahu@xxxxxxxxx> wrote:
> 
> > From: Yue Hu <huyue2@xxxxxxxxxx>
> > 
> > A previous commit f022d8cb7ec7 ("mm: cma: Don't crash on allocation
> > if CMA area can't be activated") fixes the crash issue when activation
> > fails via setting cma->count as 0, same logic exists if bitmap
> > allocation fails.
> > 
> > --- a/mm/cma.c
> > +++ b/mm/cma.c
> > @@ -106,8 +106,10 @@ static int __init cma_activate_area(struct cma *cma)
> >  
> >  	cma->bitmap = kzalloc(bitmap_size, GFP_KERNEL);
> >  
> > -	if (!cma->bitmap)
> > +	if (!cma->bitmap) {
> > +		cma->count = 0;
> >  		return -ENOMEM;
> > +	}
> >  
> >  	WARN_ON_ONCE(!pfn_valid(pfn));
> >  	zone = page_zone(pfn_to_page(pfn));  
> 
> I'm unsure whether this is needed.
> 
> kmalloc() within __init code is generally considered to be a "can't
> fail".
> 
> If this was the only issue then I guess I'd take the patch if only for
> documentation/clarity purposes.  But cma_areas[] is in bss and is
> guaranteed to be all-zeroes, so I suspect this bug is a can't-happen. 

However, firstly cma->count will be assigned to size >> PAGE_SHIFT in
cma_init_reserved_mem().

> And we could revert f022d8cb7ec7 if we could be bothered (I can't).
> 
> 




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

  Powered by Linux