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

Commit 1f08ad02 authored by Dave Hansen's avatar Dave Hansen Committed by Linus Torvalds
Browse files

[PATCH] undo do_readv_writev() behavior change

Bugme bug 4326: http://bugme.osdl.org/show_bug.cgi?id=4326

 reports:

executing the systemcall readv with Bad argument
->len == -1) it gives out error EFAULT instead of EINVAL 


Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 22a685d0
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -467,10 +467,10 @@ static ssize_t do_readv_writev(int type, struct file *file,
		void __user *buf = iov[seg].iov_base;
		void __user *buf = iov[seg].iov_base;
		ssize_t len = (ssize_t)iov[seg].iov_len;
		ssize_t len = (ssize_t)iov[seg].iov_len;


		if (unlikely(!access_ok(vrfy_dir(type), buf, len)))
			goto Efault;
		if (len < 0)	/* size_t not fitting an ssize_t .. */
		if (len < 0)	/* size_t not fitting an ssize_t .. */
			goto out;
			goto out;
		if (unlikely(!access_ok(vrfy_dir(type), buf, len)))
			goto Efault;
		tot_len += len;
		tot_len += len;
		if ((ssize_t)tot_len < 0) /* maths overflow on the ssize_t */
		if ((ssize_t)tot_len < 0) /* maths overflow on the ssize_t */
			goto out;
			goto out;