|
@@ -1114,7 +1114,7 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
|
|
*/
|
|
|
if (!resfhp->fh_dentry) {
|
|
|
/* called from nfsd_proc_mkdir, or possibly nfsd3_proc_create */
|
|
|
- fh_lock(fhp);
|
|
|
+ fh_lock_nested(fhp, I_MUTEX_PARENT);
|
|
|
dchild = lookup_one_len(fname, dentry, flen);
|
|
|
err = PTR_ERR(dchild);
|
|
|
if (IS_ERR(dchild))
|
|
@@ -1240,7 +1240,7 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
|
|
err = nfserr_notdir;
|
|
|
if(!dirp->i_op || !dirp->i_op->lookup)
|
|
|
goto out;
|
|
|
- fh_lock(fhp);
|
|
|
+ fh_lock_nested(fhp, I_MUTEX_PARENT);
|
|
|
|
|
|
/*
|
|
|
* Compose the response file handle.
|
|
@@ -1494,7 +1494,7 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp,
|
|
|
if (isdotent(name, len))
|
|
|
goto out;
|
|
|
|
|
|
- fh_lock(ffhp);
|
|
|
+ fh_lock_nested(ffhp, I_MUTEX_PARENT);
|
|
|
ddir = ffhp->fh_dentry;
|
|
|
dirp = ddir->d_inode;
|
|
|
|
|
@@ -1644,7 +1644,7 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
|
|
|
if (err)
|
|
|
goto out;
|
|
|
|
|
|
- fh_lock(fhp);
|
|
|
+ fh_lock_nested(fhp, I_MUTEX_PARENT);
|
|
|
dentry = fhp->fh_dentry;
|
|
|
dirp = dentry->d_inode;
|
|
|
|