Skip to content
  • Rik van Riel's avatar
    mm: Allocate the mm_cpumask (mm->cpu_bitmap[]) dynamically based on nr_cpu_ids · c1a2f7f0
    Rik van Riel authored
    
    
    The mm_struct always contains a cpumask bitmap, regardless of
    CONFIG_CPUMASK_OFFSTACK. That means the first step can be to
    simplify things, and simply have one bitmask at the end of the
    mm_struct for the mm_cpumask.
    
    This does necessitate moving everything else in mm_struct into
    an anonymous sub-structure, which can be randomized when struct
    randomization is enabled.
    
    The second step is to determine the correct size for the
    mm_struct slab object from the size of the mm_struct
    (excluding the CPU bitmap) and the size the cpumask.
    
    For init_mm we can simply allocate the maximum size this
    kernel is compiled for, since we only have one init_mm
    in the system, anyway.
    
    Pointer magic by Mike Galbraith, to evade -Wstringop-overflow
    getting confused by the dynamically sized array.
    
    Tested-by: default avatarSong Liu <songliubraving@fb.com>
    Signed-off-by: default avatarRik van Riel <riel@surriel.com>
    Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
    Signed-off-by: Rik va...
    c1a2f7f0