On Wed, Apr 10, 2019 at 04:27:28PM -0700, Kees Cook wrote: > On Wed, Apr 10, 2019 at 4:12 PM Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > You've explained *what* it does again, but not *why*. *Why* do you want > > hardened usercopy to detect copies across page boundaries, when there is no > > actual buffer overflow? > > But that *is* how it determines it was a buffer overflow: "if you > cross page boundaries (of a non-compound allocation), it *is* a buffer > overflow". This assertion, however, is flawed because many contiguous > allocations are not marked as being grouped together when it reality > they were. It was an attempt to get allocation size information out of > the page allocator, similar to how slab can be queries about > allocation size. I'm open to improvements here, since it's obviously > broken in its current state. :) > > -- > Kees Cook Well, I'm still at a loss as to whether I'm actually supposed to "fix" this by adding __GFP_COMP, or whether you're saying the option is broken anyway so I shouldn't bother doing anything. IIUC, even the kernel stack is still not marked __GFP_COMP, so copies to/from the stack can trigger this too, despite this being reported over 2 years ago (http://lkml.iu.edu/hypermail/linux/kernel/1701.2/01450.html)? CONFIG_HARDENED_USERCOPY_PAGESPAN is even disabled in syzbot because you already said the option is broken and should not be used. I worry that people will enable all the hardened usercopy options "because security", then when the pagespan check breaks something they will disable all hardened usercopy options, because they don't understand the individual options. Providing broken options is actively harmful, IMO. - Eric