commit 2865baf54077 ("x86: support user address masking instead of non-speculative conditional") provided an optimization for unsafe_get/put_user(), which optimizes the Spectre-V1 mitigation in an architecture specific way. Currently only x86_64 supports that. The required code pattern screams for helper functions before it is copied all over the kernel. So far the exposure is limited to futex, x86 and fs/select. Provide a set of helpers for common single size access patterns: - get/put_user_masked_uNN() where $NN is the variable size in bits, i.e. 8, 16, 32, 64. - user_read/write_masked_begin() for scenarios, where several unsafe_put/get_user() invocations are required. Convert the existing users over to this. The series applies on top of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/urgent which has a bug fix pending for the futex implementation of this. It's also available from git: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git uaccess/masked there is another candidate for conversion: RSEQ. This has not been converted yet because there are more severe performance issues with this code, which starts to become prominent in exit path profiling because glibc started to use it. This will be addressed in a seperate series. As this creates dependencies, merging it should go through one central tree, i.e. tip, but that's a debate for later :) Thanks, tglx --- arch/x86/include/asm/futex.h | 12 ++---- fs/select.c | 4 -- include/linux/uaccess.h | 78 +++++++++++++++++++++++++++++++++++++++++++ kernel/futex/futex.h | 37 +------------------- 4 files changed, 85 insertions(+), 46 deletions(-)