• Thomas Gleixner's avatar
    x86/fpu: Add members to struct fpu to cache permission information · 6f6a7c09
    Thomas Gleixner authored
    Dynamically enabled features can be requested by any thread of a running
    process at any time. The request does neither enable the feature nor
    allocate larger buffers. It just stores the permission to use the feature
    by adding the features to the permission bitmap and by calculating the
    required sizes for kernel and user space.
    
    The reallocation of the kernel buffer happens when the feature is used
    for the first time which is caught by an exception. The permission
    bitmap is then checked and if the feature is permitted, then it becomes
    fully enabled. If not, the task dies similarly to a task which uses an
    undefined instruction.
    
    The size information is precomputed to allow proper sigaltstack size checks
    once the feature is permitted, but not yet in use because otherwise this
    would open race windows where too small stacks could be installed causing
    a later fail on signal delivery.
    
    Initialize them to the default feature set and sizes.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarChang S. Bae <chang.seok.bae@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20211021225527.10184-5-chang.seok.bae@intel.com
    6f6a7c09
core.c 18 KB