• Tom Parkin's avatar
    l2tp: avoid duplicated code in l2tp_tunnel_closeall · 9d319a8e
    Tom Parkin authored
    l2tp_tunnel_closeall is called as a part of tunnel shutdown in order to
    close all the sessions held by the tunnel.  The code it uses to close a
    session duplicates what l2tp_session_delete does.
    
    Rather than duplicating the code, have l2tp_tunnel_closeall call
    l2tp_session_delete instead.
    
    This involves a very minor change to locking in l2tp_tunnel_closeall.
    Previously, l2tp_tunnel_closeall checked the session "dead" flag while
    holding tunnel->hlist_lock.  This allowed for the code to step to the
    next session in the list without releasing the lock if the current
    session happened to be in the process of closing already.
    
    By calling l2tp_session_delete instead, l2tp_tunnel_closeall must now
    drop and regain the hlist lock for each session in the tunnel list.
    Given that the likelihood of a session being in the process of closing
    when the tunnel is closed, it seems worth this very minor potential
    loss of efficiency to avoid duplication of the session delete code.
    Signed-off-by: default avatarTom Parkin <tparkin@katalix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9d319a8e
l2tp_core.c 44.6 KB