• Tom Parkin's avatar
    l2tp: unhash l2tp sessions on delete, not on free · f6e16b29
    Tom Parkin authored
    If we postpone unhashing of l2tp sessions until the structure is freed, we
    risk:
    
     1. further packets arriving and getting queued while the pseudowire is being
        closed down
     2. the recv path hitting "scheduling while atomic" errors in the case that
        recv drops the last reference to a session and calls l2tp_session_free
        while in atomic context
    
    As such, l2tp sessions should be unhashed from l2tp_core data structures early
    in the teardown process prior to calling pseudowire close.  For pseudowires
    like l2tp_ppp which have multiple shutdown codepaths, provide an unhash hook.
    Signed-off-by: default avatarTom Parkin <tparkin@katalix.com>
    Signed-off-by: default avatarJames Chapman <jchapman@katalix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f6e16b29
l2tp_core.c 52.8 KB