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