lkml.org 
[lkml]   [2010]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subjectcpumask: fix compat getaffinity
    Date
    Commit a45185d2d "cpumask: convert kernel/compat.c" broke
    libnuma, which abuses sched_getaffinity to find out NR_CPUS
    in order to parse /sys/devices/system/node/node*/cpumap.

    On NUMA systems with less than 32 possibly CPUs, the
    current compat_sys_sched_getaffinity now returns '4'
    instead of the actual NR_CPUS/8, which makes libnuma
    bail out when parsing the cpumap.

    This restores the original return value for now.
    If we ever get around to changing cpumask_size
    to return only possibly CPUs, we will also need to
    make the format of the cpumap file.

    We should probably also make libnuma able to deal with
    the modified kernel interface, so it can operate on
    all kernels.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Ken Werner <ken.werner@web.de>
    Cc: stable@kernel.org
    Cc: Andi Kleen <andi@firstfloor.org>

    --- a/kernel/compat.c
    +++ b/kernel/compat.c
    @@ -497,7 +497,7 @@ asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid, unsigned int len,
    unsigned long *k;
    unsigned int min_length = cpumask_size();

    - if (nr_cpu_ids <= BITS_PER_COMPAT_LONG)
    + if (NR_CPUS <= BITS_PER_COMPAT_LONG)
    min_length = sizeof(compat_ulong_t);

    if (len < min_length)

    \
     
     \ /
      Last update: 2010-05-07 14:49    [W:0.024 / U:120.364 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site