• Neil Horman's avatar
    drop_monitor: prevent init path from scheduling on the wrong cpu · 4fdcfa12
    Neil Horman authored
    I just noticed after some recent updates, that the init path for the drop
    monitor protocol has a minor error.  drop monitor maintains a per cpu structure,
    that gets initalized from a single cpu.  Normally this is fine, as the protocol
    isn't in use yet, but I recently made a change that causes a failed skb
    allocation to reschedule itself .  Given the current code, the implication is
    that this workqueue reschedule will take place on the wrong cpu.  If drop
    monitor is used early during the boot process, its possible that two cpus will
    access a single per-cpu structure in parallel, possibly leading to data
    corruption.
    
    This patch fixes the situation, by storing the cpu number that a given instance
    of this per-cpu data should be accessed from.  In the case of a need for a
    reschedule, the cpu stored in the struct is assigned the rescheule, rather than
    the currently executing cpu
    
    Tested successfully by myself.
    Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
    CC: David Miller <davem@davemloft.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4fdcfa12
drop_monitor.c 9.39 KB