Skip to contentSkip to conversation

NFS: Fix use of copy_to_user() in idmap_pipe_upcall

PATCH In review Chuck Lever 1 participant 1 message Oct 26, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 11/27 NFS: Fix use of copy_to_user() in idmap_pipe_upcall

The idmap_pipe_upcall() function expects the copy_to_user() function to return a negative error value if the call fails, but copy_to_user() returns an unsigned long number of bytes that couldn't be copied.

---

 fs/nfs/idmap.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)
fs/nfs/idmap.c +7 -6
index e687ba2..6ecc9c3 100644
@@ -357,19 +357,20 @@ idmap_pipe_upcall(struct file *filp, struct rpc_pipe_msg *msg,
 		  char __user *dst, size_t buflen)
 {
 	char *data = (char *)msg->data + msg->copied;
-	ssize_t mlen = msg->len - msg->copied;
-	ssize_t left;
+	size_t mlen = msg->len;
+	unsigned long left;
 
 	if (mlen > buflen)
 		mlen = buflen;
 
 	left = copy_to_user(dst, data, mlen);
-	if (left < 0) {
-		msg->errno = left;
-		return left;
+	if (left == mlen) {
+		msg->errno = -EFAULT;
+		return -1;
 	}
+
 	mlen -= left;
-	msg->copied += mlen;
+	msg->copied += left;
 	msg->errno = 0;
 	return mlen;
 }

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs