• Roland Dreier's avatar
    iscsi-target: Fix potential deadlock on lock taken in timer · 998866b0
    Roland Dreier authored
    We need to disable BHs when taking sess_idr_lock because the
    iscsit_handle_time2retain_timeout() timer function takes
    se_tpg->session_lock, and iscsit_close_session() nests sess_idr_lock
    inside se_tpg->session_lock.  So if the timer can run inside
    sess_idr_lock, we have a potential AB-BA deadlock.
    
    Fix this by disabling BHs when taking sess_idr_lock.  This was found
    because of a lockdep warning, but it looks like a real (if highly
    theoretical) deadlock.  In any case avoiding lockdep spew so that we can
    find other issues is a worthy cause.
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    998866b0
iscsi_target_login.c 33.8 KB