Merge branch 'for-3.14' of git://linux-nfs.org/~bfields/linux
Pull two nfsd bugfixes from Bruce Fields. * 'for-3.14' of git://linux-nfs.org/~bfields/linux: lockd: send correct lock when granting a delayed lock. nfsd4: fix acl buffer overrun
This commit is contained in:
commit
8ba74517e4
|
@ -779,6 +779,7 @@ nlmsvc_grant_blocked(struct nlm_block *block)
|
|||
struct nlm_file *file = block->b_file;
|
||||
struct nlm_lock *lock = &block->b_call->a_args.lock;
|
||||
int error;
|
||||
loff_t fl_start, fl_end;
|
||||
|
||||
dprintk("lockd: grant blocked lock %p\n", block);
|
||||
|
||||
|
@ -796,9 +797,16 @@ nlmsvc_grant_blocked(struct nlm_block *block)
|
|||
}
|
||||
|
||||
/* Try the lock operation again */
|
||||
/* vfs_lock_file() can mangle fl_start and fl_end, but we need
|
||||
* them unchanged for the GRANT_MSG
|
||||
*/
|
||||
lock->fl.fl_flags |= FL_SLEEP;
|
||||
fl_start = lock->fl.fl_start;
|
||||
fl_end = lock->fl.fl_end;
|
||||
error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL);
|
||||
lock->fl.fl_flags &= ~FL_SLEEP;
|
||||
lock->fl.fl_start = fl_start;
|
||||
lock->fl.fl_end = fl_end;
|
||||
|
||||
switch (error) {
|
||||
case 0:
|
||||
|
|
|
@ -151,17 +151,15 @@ nfsd4_get_nfs4_acl(struct svc_rqst *rqstp, struct dentry *dentry,
|
|||
pacl = posix_acl_from_mode(inode->i_mode, GFP_KERNEL);
|
||||
if (IS_ERR(pacl))
|
||||
return PTR_ERR(pacl);
|
||||
/* allocate for worst case: one (deny, allow) pair each: */
|
||||
size += 2 * pacl->a_count;
|
||||
}
|
||||
/* allocate for worst case: one (deny, allow) pair each: */
|
||||
size += 2 * pacl->a_count;
|
||||
|
||||
if (S_ISDIR(inode->i_mode)) {
|
||||
flags = NFS4_ACL_DIR;
|
||||
dpacl = get_acl(inode, ACL_TYPE_DEFAULT);
|
||||
if (dpacl)
|
||||
size += 2 * dpacl->a_count;
|
||||
} else {
|
||||
dpacl = NULL;
|
||||
}
|
||||
|
||||
*acl = nfs4_acl_new(size);
|
||||
|
@ -170,8 +168,7 @@ nfsd4_get_nfs4_acl(struct svc_rqst *rqstp, struct dentry *dentry,
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (pacl)
|
||||
_posix_to_nfsv4_one(pacl, *acl, flags & ~NFS4_ACL_TYPE_DEFAULT);
|
||||
_posix_to_nfsv4_one(pacl, *acl, flags & ~NFS4_ACL_TYPE_DEFAULT);
|
||||
|
||||
if (dpacl)
|
||||
_posix_to_nfsv4_one(dpacl, *acl, flags | NFS4_ACL_TYPE_DEFAULT);
|
||||
|
|
Loading…
Reference in New Issue