Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [PATCH v4 5/6] x86/numa: Provide a range-to-target_node lookup facility | Date | Thu, 13 Feb 2020 12:37:42 +0100 |
| |
Dan Williams <dan.j.williams@intel.com> writes: > +/** > + * numa_move_memblk - Move one numa_memblk from one numa_meminfo to another > + * @dst: numa_meminfo to move block to > + * @idx: Index of memblk to remove > + * @src: numa_meminfo to remove memblk from > + * > + * If @dst is non-NULL add it at the @dst->nr_blks index and increment > + * @dst->nr_blks, then remove it from @src.
This is not correct. It's suggesting that these operations are only happening when @dst is non-NULL. Remove is unconditional though.
Also this is called with &numa_reserved_meminfo as @dst argument, which is:
> +static struct numa_meminfo numa_reserved_meminfo __initdata_numa;
So how would @dst ever be NULL?
> + */ > +static void __init numa_move_memblk(struct numa_meminfo *dst, int idx, > + struct numa_meminfo *src) > +{ > + if (dst) { > + memcpy(&dst->blk[dst->nr_blks], &src->blk[idx], > + sizeof(struct numa_memblk)); > + dst->nr_blks++; > + } > + numa_remove_memblk_from(idx, src); > +}
...
> - /* make sure all blocks are inside the limits */ > + /* move / save reserved memory ranges */ > + if (!memblock_overlaps_region(&memblock.memory, > + bi->start, bi->end - bi->start)) { > + numa_move_memblk(&numa_reserved_meminfo, i--, mi);
Thanks,
tglx
| |