• Linus Torvalds's avatar
    Merge branch 'address-masking' · de5cb0dc
    Linus Torvalds authored
    Merge user access fast validation using address masking.
    
    This allows architectures to optionally use a data dependent address
    masking model instead of a conditional branch for validating user
    accesses.  That avoids the Spectre-v1 speculation barriers.
    
    Right now only x86-64 takes advantage of this, and not all architectures
    will be able to do it.  It requires a guard region between the user and
    kernel address spaces (so that you can't overflow from one to the
    other), and an easy way to generate a guaranteed-to-fault address for
    invalid user pointers.
    
    Also note that this currently assumes that there is no difference
    between user read and write accesses.  If extended to architectures like
    powerpc, we'll also need to separate out the user read-vs-write cases.
    
    * address-masking:
      x86: make the masked_user_access_begin() macro use its argument only once
      x86: do the user address masking outside the user access area
      x86: support user address masking instead of non-speculative conditional
    de5cb0dc
select.c 34.8 KB