Skip to content
  • Rakib Mullick's avatar
    sched/isolcpus: Fix "isolcpus=" boot parameter handling when !CONFIG_CPUMASK_OFFSTACK · e22cdc3f
    Rakib Mullick authored
    
    
    cpulist_parse() uses nr_cpumask_bits as a limit to parse the
    passed buffer from kernel commandline. What nr_cpumask_bits
    represents varies depending upon the CONFIG_CPUMASK_OFFSTACK option:
    
     - If CONFIG_CPUMASK_OFFSTACK=n, then nr_cpumask_bits is the same as
       NR_CPUS, which might not represent the # of CPUs that really exist
       (default 64). So, there's a chance of a gap between nr_cpu_ids
       and NR_CPUS, which ultimately lead towards invalid cpulist_parse()
       operation. For example, if isolcpus=9 is passed on an 8 cpu
       system (CONFIG_CPUMASK_OFFSTACK=n) it doesn't show the error
       that it's supposed to.
    
    This patch fixes this bug by finding the last CPU of the passed
    isolcpus= list and checking it against nr_cpu_ids.
    
    It also fixes the error message where the nr_cpu_ids should be
    nr_cpu_ids-1, since CPU numbering starts from 0.
    
    Signed-off-by: default avatarRakib Mullick <rakib.mullick@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: adobriyan@gmail.com
    Cc: akpm@linux-foundation.org
    Cc: longman@redhat.com
    Cc: mka@chromium.org
    Cc: tj@kernel.org
    Link: http://lkml.kernel.org/r/20171023130154.9050-1-rakib.mullick@gmail.com
    
    
    [ Enhanced the changelog and the kernel message. ]
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    
     include/linux/cpumask.h |   16 ++++++++++++++++
     kernel/sched/topology.c |    4 ++--
     2 files changed, 18 insertions(+), 2 deletions(-)
    e22cdc3f