Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ba74517 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents bd3813d5 2ec197db
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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:
+3 −6
Original line number Diff line number Diff line
@@ -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;
	}

	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,7 +168,6 @@ 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);

	if (dpacl)