|
@@ -114,6 +114,7 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
|
|
{
|
|
{
|
|
struct nfs_client *clp;
|
|
struct nfs_client *clp;
|
|
struct rpc_cred *cred;
|
|
struct rpc_cred *cred;
|
|
|
|
+ int err = -ENOMEM;
|
|
|
|
|
|
if ((clp = kzalloc(sizeof(*clp), GFP_KERNEL)) == NULL)
|
|
if ((clp = kzalloc(sizeof(*clp), GFP_KERNEL)) == NULL)
|
|
goto error_0;
|
|
goto error_0;
|
|
@@ -121,7 +122,8 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
|
|
clp->rpc_ops = cl_init->rpc_ops;
|
|
clp->rpc_ops = cl_init->rpc_ops;
|
|
|
|
|
|
if (cl_init->rpc_ops->version == 4) {
|
|
if (cl_init->rpc_ops->version == 4) {
|
|
- if (nfs_callback_up() < 0)
|
|
|
|
|
|
+ err = nfs_callback_up();
|
|
|
|
+ if (err < 0)
|
|
goto error_2;
|
|
goto error_2;
|
|
__set_bit(NFS_CS_CALLBACK, &clp->cl_res_state);
|
|
__set_bit(NFS_CS_CALLBACK, &clp->cl_res_state);
|
|
}
|
|
}
|
|
@@ -133,6 +135,7 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
|
|
clp->cl_addrlen = cl_init->addrlen;
|
|
clp->cl_addrlen = cl_init->addrlen;
|
|
|
|
|
|
if (cl_init->hostname) {
|
|
if (cl_init->hostname) {
|
|
|
|
+ err = -ENOMEM;
|
|
clp->cl_hostname = kstrdup(cl_init->hostname, GFP_KERNEL);
|
|
clp->cl_hostname = kstrdup(cl_init->hostname, GFP_KERNEL);
|
|
if (!clp->cl_hostname)
|
|
if (!clp->cl_hostname)
|
|
goto error_3;
|
|
goto error_3;
|
|
@@ -165,7 +168,7 @@ error_3:
|
|
error_2:
|
|
error_2:
|
|
kfree(clp);
|
|
kfree(clp);
|
|
error_0:
|
|
error_0:
|
|
- return NULL;
|
|
|
|
|
|
+ return ERR_PTR(err);
|
|
}
|
|
}
|
|
|
|
|
|
static void nfs4_shutdown_client(struct nfs_client *clp)
|
|
static void nfs4_shutdown_client(struct nfs_client *clp)
|
|
@@ -456,9 +459,10 @@ static struct nfs_client *nfs_get_client(const struct nfs_client_initdata *cl_in
|
|
spin_unlock(&nfs_client_lock);
|
|
spin_unlock(&nfs_client_lock);
|
|
|
|
|
|
new = nfs_alloc_client(cl_init);
|
|
new = nfs_alloc_client(cl_init);
|
|
- } while (new);
|
|
|
|
|
|
+ } while (!IS_ERR(new));
|
|
|
|
|
|
- return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
+ dprintk("--> nfs_get_client() = %ld [failed]\n", PTR_ERR(new));
|
|
|
|
+ return new;
|
|
|
|
|
|
/* install a new client and return with it unready */
|
|
/* install a new client and return with it unready */
|
|
install_client:
|
|
install_client:
|