• Andreas Gruenbacher's avatar
    gfs2: Fix potential glock use-after-free on unmount · d98779e6
    Andreas Gruenbacher authored
    When a DLM lockspace is released and there ares still locks in that
    lockspace, DLM will unlock those locks automatically.  Commit
    fb6791d1 started exploiting this behavior to speed up filesystem
    unmount: gfs2 would simply free glocks it didn't want to unlock and then
    release the lockspace.  This didn't take the bast callbacks for
    asynchronous lock contention notifications into account, which remain
    active until until a lock is unlocked or its lockspace is released.
    
    To prevent those callbacks from accessing deallocated objects, put the
    glocks that should not be unlocked on the sd_dead_glocks list, release
    the lockspace, and only then free those glocks.
    
    As an additional measure, ignore unexpected ast and bast callbacks if
    the receiving glock is dead.
    
    Fixes: fb6791d1 ("GFS2: skip dlm_unlock calls in unmount")
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    Cc: David Teigland <teigland@redhat.com>
    d98779e6
incore.h 23.6 KB