Thread (26 messages) 26 messages, 3 authors, 2021-09-20

Re: [PATCH v2 1/3] x86/mce: Avoid infinite loop for copy from user recovery

From: Al Viro <viro@zeniv.linux.org.uk>
Date: 2021-08-21 21:51:44
Also in: linux-mm, lkml

On Fri, Aug 20, 2021 at 09:51:41PM -0700, Tony Luck wrote:
On Fri, Aug 20, 2021 at 1:25 PM Luck, Tony [off-list ref] wrote:
quoted
Probably the same for the two different addresses case ... though I'm
not 100% confident about that. There could be some ioctl() that peeks
at two parts of a passed in structure, and the user might pass in a
structure that spans across a page boundary with both pages poisoned.
But that would only hit if the driver code ignored the failure of the
first get_user() and blindly tried the second. So I'd count that as a
critically bad driver bug.
Or maybe driver writers are just evil :-(

for (i = 0; i < len; i++) {
       tx_wait(10);
       get_user(dsp56k_host_interface.data.b[1], bin++);
       get_user(dsp56k_host_interface.data.b[2], bin++);
       get_user(dsp56k_host_interface.data.b[3], bin++);
}
Almost any unchecked get_user()/put_user() is a bug.  Fortunately, there's
not a lot of them
<greps>
93 for put_user() and 73 for get_user().  _Some_ of the former variety might
be legitimate, but most should be taken out and shot.

And dsp56k should be taken out and shot, period ;-/  This is far from the
worst in there...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help