• Michal Ostrowski's avatar
    [PPPOE]: Fix device tear-down notification. · 42dc9cd5
    Michal Ostrowski authored
    pppoe_flush_dev() kicks all sockets bound to a device that is going down.
    In doing so, locks must be taken in the right order consistently (sock lock,
    followed by the pppoe_hash_lock).  However, the scan process is based on
    us holding the sock lock.  So, when something is found in the scan we must
    release the lock we're holding and grab the sock lock.
    
    This patch fixes race conditions between this code and pppoe_release(),
    both of which perform similar functions but would naturally prefer to grab
    locks in opposing orders.  Both code paths are now going after these locks
    in a consistent manner.
    
    pppoe_hash_lock protects the contents of the "pppox_sock" objects that reside
    inside the hash.  Thus, NULL'ing out the pppoe_dev field should be done
    under the protection of this lock.
    Signed-off-by: default avatarMichal Ostrowski <mostrows@earthlink.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    42dc9cd5
pppoe.c 26 KB