• Trond Myklebust's avatar
    NFSv4/4.1: Fix bugs in nfs4[01]_walk_client_list · 7b1f1fd1
    Trond Myklebust authored
    It is unsafe to use list_for_each_entry_safe() here, because
    when we drop the nn->nfs_client_lock, we pin the _current_ list
    entry and ensure that it stays in the list, but we don't do the
    same for the _next_ list entry. Use of list_for_each_entry() is
    therefore the correct thing to do.
    
    Also fix the refcounting in nfs41_walk_client_list().
    
    Finally, ensure that the nfs_client has finished being initialised
    and, in the case of NFSv4.1, that the session is set up.
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    Cc: Chuck Lever <chuck.lever@oracle.com>
    Cc: Bryan Schumaker <bjschuma@netapp.com>
    Cc: stable@vger.kernel.org [>= 3.7]
    7b1f1fd1
nfs4client.c 23.1 KB