• T
    NFSv4: Fix races in the legacy idmapper upcall · 51fd2eb5
    Trond Myklebust 提交于
    nfs_idmap_instantiate() will cause the process that is waiting in
    request_key_with_auxdata() to wake up and exit. If there is a second
    process waiting for the idmap->idmap_mutex, then it may wake up and
    start a new call to request_key_with_auxdata(). If the call to
    idmap_pipe_downcall() from the first process has not yet finished
    calling nfs_idmap_complete_pipe_upcall_locked(), then we may end up
    triggering the WARN_ON_ONCE() in nfs_idmap_prepare_pipe_upcall().
    
    The fix is to ensure that we clear idmap->idmap_upcall_data before
    calling nfs_idmap_instantiate().
    
    Fixes: e9ab41b6 ("NFSv4: Clean up the legacy idmapper upcall")
    Signed-off-by: NTrond Myklebust <trond.myklebust@hammerspace.com>
    51fd2eb5
nfs4idmap.c 20.1 KB