diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-10-11 12:26:04 -0400 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-10-15 10:49:42 -0400 | 
| commit | 8fcdc31b3d09bc348ff9bf752ae1291828756cfa (patch) | |
| tree | d56ebacf4dd7290a60555756882178f8541603d0 /fs/nfs/nfs4filelayoutdev.c | |
| parent | ddffeb8c4d0331609ef2581d84de4d763607bd37 (diff) | |
| download | olio-linux-3.10-8fcdc31b3d09bc348ff9bf752ae1291828756cfa.tar.xz olio-linux-3.10-8fcdc31b3d09bc348ff9bf752ae1291828756cfa.zip  | |
NFSv4.1: Kill nfs4_ds_disconnect()
There is nothing to prevent another thread from dereferencing ds->ds_clp
during or after the call to nfs4_ds_disconnect(), and Oopsing due to the
resulting NULL pointer.
Instead, we should just rely on filelayout_mark_devid_invalid() to keep
us out of trouble by avoiding that deviceid.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4filelayoutdev.c')
| -rw-r--r-- | fs/nfs/nfs4filelayoutdev.c | 22 | 
1 files changed, 0 insertions, 22 deletions
diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c index 3336d5eaf87..a8eaa9b7bb0 100644 --- a/fs/nfs/nfs4filelayoutdev.c +++ b/fs/nfs/nfs4filelayoutdev.c @@ -149,28 +149,6 @@ _data_server_lookup_locked(const struct list_head *dsaddrs)  }  /* - * Lookup DS by nfs_client pointer. Zero data server client pointer - */ -void nfs4_ds_disconnect(struct nfs_client *clp) -{ -	struct nfs4_pnfs_ds *ds; -	struct nfs_client *found = NULL; - -	dprintk("%s clp %p\n", __func__, clp); -	spin_lock(&nfs4_ds_cache_lock); -	list_for_each_entry(ds, &nfs4_data_server_cache, ds_node) -		if (ds->ds_clp && ds->ds_clp == clp) { -			found = ds->ds_clp; -			ds->ds_clp = NULL; -		} -	spin_unlock(&nfs4_ds_cache_lock); -	if (found) { -		set_bit(NFS_CS_STOP_RENEW, &clp->cl_res_state); -		nfs_put_client(clp); -	} -} - -/*   * Create an rpc connection to the nfs4_pnfs_ds data server   * Currently only supports IPv4 and IPv6 addresses   */  |