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

Commit fb3165b5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
  NFSv4: The link() operation should return any delegation on the file
  NFSv4: Fix two unbalanced put_rpccred() issues.
  NFSv4: Fix a bug when the server returns NFS4ERR_RESOURCE
  nfs: Panic when commit fails
parents 36f8a53f 9a3936aa
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1536,6 +1536,8 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
		old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
		dentry->d_parent->d_name.name, dentry->d_name.name);

	nfs_inode_return_delegation(inode);

	d_drop(dentry);
	error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
	if (error == 0) {
+1 −0
Original line number Diff line number Diff line
@@ -457,6 +457,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq)
	};
	struct rpc_task_setup task_setup_data = {
		.rpc_client = NFS_CLIENT(inode),
		.rpc_message = &msg,
		.callback_ops = &nfs_write_direct_ops,
		.workqueue = nfsiod_workqueue,
		.flags = RPC_TASK_ASYNC,
+8 −7
Original line number Diff line number Diff line
@@ -72,12 +72,17 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
/* Prevent leaks of NFSv4 errors into userland */
static int nfs4_map_errors(int err)
{
	if (err < -1000) {
	if (err >= -1000)
		return err;
	switch (err) {
	case -NFS4ERR_RESOURCE:
		return -EREMOTEIO;
	default:
		dprintk("%s could not handle NFSv4 error %d\n",
				__func__, -err);
		return -EIO;
		break;
	}
	return err;
	return -EIO;
}

/*
@@ -3060,9 +3065,6 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
	if (time_before(clp->cl_last_renewal,timestamp))
		clp->cl_last_renewal = timestamp;
	spin_unlock(&clp->cl_lock);
	dprintk("%s calling put_rpccred on rpc_cred %p\n", __func__,
				task->tk_msg.rpc_cred);
	put_rpccred(task->tk_msg.rpc_cred);
}

static const struct rpc_call_ops nfs4_renew_ops = {
@@ -4877,7 +4879,6 @@ void nfs41_sequence_call_done(struct rpc_task *task, void *data)
	nfs41_sequence_free_slot(clp, task->tk_msg.rpc_resp);
	dprintk("%s rpc_cred %p\n", __func__, task->tk_msg.rpc_cred);

	put_rpccred(task->tk_msg.rpc_cred);
	kfree(task->tk_msg.rpc_argp);
	kfree(task->tk_msg.rpc_resp);

+0 −1
Original line number Diff line number Diff line
@@ -5681,7 +5681,6 @@ static struct {
	{ NFS4ERR_SERVERFAULT,	-ESERVERFAULT	},
	{ NFS4ERR_BADTYPE,	-EBADTYPE	},
	{ NFS4ERR_LOCKED,	-EAGAIN		},
	{ NFS4ERR_RESOURCE,	-EREMOTEIO	},
	{ NFS4ERR_SYMLINK,	-ELOOP		},
	{ NFS4ERR_OP_ILLEGAL,	-EOPNOTSUPP	},
	{ NFS4ERR_DEADLOCK,	-EDEADLK	},