On Mon, Nov 29, 2021 at 12:56 PM Catalin Marinas <catalin.marinas@xxxxxxx> wrote: > > For arm64 at least __put_user() does the access_ok() check. I thought > only unsafe_put_user() should skip the checks. If __put_user() can write > arbitrary memory, we may have a bigger problem. That's literally be the historical difference between __put_user() and put_user() - the access check. > I think that would be useful, though it doesn't solve the potential > livelock with sub-page faults. I was assuming we'd just do the sub-page faults. In fact, I was assuming we'd basically just replace all the PAGE_ALIGN and PAGE_SIZE with SUBPAGE_{ALIGN,SIZE}, together with something like if (size > PAGE_SIZE) size = PAGE_SIZE; to limit that size thing (or possibly make that "min size" be a parameter, so that people who have things like that "I need at least this initial structure to be copied" issue can document their minimum size needs). Linus