Re: [PATCH 2/3] mm/sparse: Optimize sparse_add_one_section()

Baoquan He
2019-03-20T08:03:43Z

On 03/20/19 at 09:56am, Mike Rapoport wrote:
> > diff --git a/mm/sparse.c b/mm/sparse.c
> > index 0a0f82c5d969..054b99f74181 100644
> > --- a/mm/sparse.c
> > +++ b/mm/sparse.c
> > @@ -697,16 +697,17 @@ int __meminit sparse_add_one_section(int nid, unsigned long start_pfn,
> > ret = sparse_index_init(section_nr, nid);
> > if (ret < 0 && ret != -EEXIST)
> > return ret;
> > - ret = 0;
> > - memmap = kmalloc_section_memmap(section_nr, nid, altmap);
> > - if (!memmap)
> > - return -ENOMEM;
> > +
> > usemap = __kmalloc_section_usemap();
> > - if (!usemap) {
> > - __kfree_section_memmap(memmap, altmap);
> > + if (!usemap)
> > + return -ENOMEM;
> > + memmap = kmalloc_section_memmap(section_nr, nid, altmap);
> > + if (!memmap) {
> > + kfree(usemap);
>
> If you are anyway changing this why not to switch to goto's for error
> handling?

OK, I am fine to switch to 'goto'. Will update and repost. Thanks.

>
> > return -ENOMEM;
> > }
> >
> > + ret = 0;
> > ms = __pfn_to_section(start_pfn);
> > if (ms->section_mem_map & SECTION_MARKED_PRESENT) {
> > ret = -EEXIST;
> > --
> > 2.17.2
> >
>
> --
> Sincerely yours,
> Mike.
>