• Eric Dumazet's avatar
    [PATCH] __GENERIC_PER_CPU changes · b73b459f
    Eric Dumazet authored
    Now CONFIG_DEBUG_INITDATA is in, initial percpu data
    [__per_cpu_start,__per_cpu_end] can be declared as a redzone, and invalid
    accesses after boot can be detected, at least for i386.
    
    We can let non possible cpus percpu data point to this 'redzone' instead of
    NULL .
    
    NULL was not a good choice because part of [0..32768] memory may be
    readable and invalid accesses may happen unnoticed.
    
    If CONFIG_DEBUG_INITDATA is not defined, each non possible cpu points to
    the initial percpu data (__per_cpu_offset[cpu] == 0), thus invalid accesses
    wont be detected/crash.
    
    This patch also moves __per_cpu_offset[] to read_mostly area to avoid false
    sharing.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b73b459f
main.c 17.2 KB