]> www.infradead.org Git - users/hch/xfs.git/commit
Merge branch 'arm64-uaccess' (early part)
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Jul 2024 16:10:31 +0000 (09:10 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Jul 2024 16:10:31 +0000 (09:10 -0700)
commit1654c37ddbfce5d50bc2895d7ea9c5e0edcc4d77
tree484fc6a2f85bc7096f5e7e7f61534c82058655f9
parent6a31ffdfed10dc48e6fd1775d50c22429382ab98
parent7fd298d4b39d8d5fe99d56811a7ed78c7a5377d5
Merge branch 'arm64-uaccess' (early part)

Merge arm64 support for proper 'unsafe' user accessor functionality,
with 'asm goto' for handling exceptions.

The arm64 user access code used the slow fallback code for the user
access code, which generates horrendous code for things like
strncpy_from_user(), because it causes us to generate code for SW PAN
and for range checking for every individual word.

Teach arm64 about 'user_access_begin()' and the so-called 'unsafe' user
access functions that take an error label and use 'asm goto' to make all
the exception handling be entirely out of line.

[ These user access functions are called 'unsafe' not because the
  concept is unsafe, but because the low-level accessor functions
  absolutely have to be protected by the 'user_access_begin()' code,
  because that's what does the range checking.

  So the accessor functions have that scary name to make sure people
  don't think they are usable on their own, and cannot be mis-used the
  way our old "double underscore" versions of __get_user() and friends
  were ]

The "(early part)" of the branch is because the full branch also
improved on the "access_ok()" function, but the exact semantics of TBI
(top byte ignore) have to be discussed before doing that part.  So this
just does the low-level accessor update to use "asm goto".

* 'arm64-uaccess' (early part):
  arm64: start using 'asm goto' for put_user()
  arm64: start using 'asm goto' for get_user() when available