• J. Bruce Fields's avatar
    lockd: fix lockd shutdown race · efda760f
    J. Bruce Fields authored
    As reported by David Jeffery: "a signal was sent to lockd while lockd
    was shutting down from a request to stop nfs.  The signal causes lockd
    to call restart_grace() which puts the lockd_net structure on the grace
    list.  If this signal is received at the wrong time, it will occur after
    lockd_down_net() has called locks_end_grace() but before
    lockd_down_net() stops the lockd thread.  This leads to lockd putting
    the lockd_net structure back on the grace list, then exiting without
    anything removing it from the list."
    
    So, perform the final locks_end_grace() from the the lockd thread; this
    ensures it's serialized with respect to restart_grace().
    Reported-by: default avatarDavid Jeffery <djeffery@redhat.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    efda760f
svc.c 17.9 KB