Thread (1 message) 1 message, 1 author, 2018-01-17

Re: [PATCH 32/32] aio: implement io_pgetevents

From: Jeff Moyer <hidden>
Date: 2018-01-17 13:49:22
Also in: linux-fsdevel, lkml, netdev

Christoph Hellwig [off-list ref] writes:
On Wed, Jan 17, 2018 at 04:27:21AM +0000, Al Viro wrote:
quoted
On Tue, Jan 16, 2018 at 07:41:24PM -0500, Jeff Moyer wrote:
quoted
 	if (sigmask) {
-		if (copy_from_user(&ksigmask, sigmask, sizeof(ksigmask)))
+		if (!access_ok(VERIFY_READ, sigmask,
+			       sizeof(void *) + sizeof(size_t)) ||
+		    __get_user(up, (sigset_t __user * __user *)sigmask) ||
+		    __get_user(sigsetsize,
+			       (size_t __user *)(sigmask + sizeof(void *))))
 			return -EFAULT;
How about copy_from_user() on a struct?  Making eyes bleed is fun, but
people tend to get annoyed when you do it to them...
Above is the copy & paste version from pselect.  I've got both copy_from_user
and that horrible version in my tree, and if we really need this awfull
calling convention copy_from_user certainly is much better.  pselect
also should be switched to explicit struct + copy_from_user while
we're at it.  In fact glibc defines a struct for the userland version
to start with.
Yeah, I did both, but stuck with this variant as that's what pselect
did.  I'm fine with switching to the struct variant.

-Jeff

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to majordomo@kvack.org.  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help