On Wed, 3 Jan 2018, Dan Williams wrote: > [ adding Julia and Dan ] > > On Wed, Jan 3, 2018 at 5:07 PM, Alan Cox <gnomes@xxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, 3 Jan 2018 16:39:31 -0800 > > Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > >> On Wed, Jan 3, 2018 at 4:15 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > >> > The 'if_nospec' primitive marks locations where the kernel is disabling > >> > speculative execution that could potentially access privileged data. It > >> > is expected to be paired with a 'nospec_{ptr,load}' where the user > >> > controlled value is actually consumed. > >> > >> I'm much less worried about these "nospec_load/if" macros, than I am > >> about having a sane way to determine when they should be needed. > >> > >> Is there such a sane model right now, or are we talking "people will > >> randomly add these based on strong feelings"? > > > > There are people trying to tune coverity and other tool rules to identify > > cases, and some of the work so far was done that way. For x86 we didn't > > find too many so far so either the needed pattern is uncommon or .... 8) > > > > Given you can execute over a hundred basic instructions in a speculation > > window it does need to be a tool that can explore not just in function > > but across functions. That's really tough for the compiler itself to do > > without help. > > > > What remains to be seen is if there are other patterns that affect > > different processors. > > > > In the longer term the compiler itself needs to know what is and isn't > > safe (ie you need to be able to write things like > > > > void foo(tainted __user int *x) > > > > and have the compiler figure out what level of speculation it can do and > > (on processors with those features like IA64) when it can and can't do > > various kinds of non-trapping loads. > > > > It would be great if coccinelle and/or smatch could be taught to catch > some of these case at least as a first pass "please audit this code > block" type of notification. > What should one be looking for. Do you have a typical example? julia