Dan Williams <[email protected]> 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
_______________________________________________
Linux-nvdimm mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to