On Fri, Jul 06, 2018 at 12:56:58PM -0700, Linus Torvalds wrote: > On Fri, Jul 6, 2018 at 12:38 PM Mathieu Desnoyers > <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > > > > Should I change all 4 bytes __get_user()/__put_user() in kernel/rseq.c > > for get_user()/put_user() to ensure consistency ? > > Probably. > > *If* this actually turns out to be somethinig that shows up on > profiles, it's almost certainly going to be the STAC/CLAC instructions > ("perf report" tends to report them as three one-byte nop's because > that's how they look before instruction replacement). > > And then it's not __get/put_user() that will improve things, but doing a > > user_access_begin(); > > .. do unsafe_get/put_user() .. > > user_access_end(); > > that will improve performance. > > But it is *very* seldom useful. We have it in a handful of places in > the kernel, and the most noticeable one is > lib/{strnlen,strncpy_from}_user.c Also, __get_user() is probably going to become the same as get_user() when I finish the Spectre v1 ARM mitigations, because there'll be no point in __get_user() being any different. For those mitigations, we're going to have to check the pointer against the address limit inside __get_user() and NULL it out, just like get_user() does, which makes the whole distinction between the two completely pointless. Is this not also the case on other architectures affected by Spectre variant 1, hmm? -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 13.8Mbps down 630kbps up According to speedtest.net: 13Mbps down 490kbps up -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html