1. 02 Nov, 2021 5 commits
    • Linus Torvalds's avatar
      Merge tag 'kspp-misc-fixes-5.16-rc1' of... · bf953917
      Linus Torvalds authored
      Merge tag 'kspp-misc-fixes-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux
      
      Pull hardening fixes and cleanups from Gustavo A. R. Silva:
       "Various hardening fixes and cleanups that I've been collecting during
        the last development cycle:
      
        Fix -Wcast-function-type error:
      
         - firewire: Remove function callback casts (Oscar Carter)
      
        Fix application of sizeof operator:
      
         - firmware/psci: fix application of sizeof to pointer (jing yangyang)
      
        Replace open coded instances with size_t saturating arithmetic
        helpers:
      
         - assoc_array: Avoid open coded arithmetic in allocator arguments
           (Len Baker)
      
         - writeback: prefer struct_size over open coded arithmetic (Len
           Baker)
      
         - aio: Prefer struct_size over open coded arithmetic (Len Baker)
      
         - dmaengine: pxa_dma: Prefer struct_size over open coded arithmetic
           (Len Baker)
      
        Flexible array transformation:
      
         - KVM: PPC: Replace zero-length array with flexible array member (Len
           Baker)
      
        Use 2-factor argument multiplication form:
      
         - nouveau/svm: Use kvcalloc() instead of kvzalloc() (Gustavo A. R.
           Silva)
      
         - xfs: Use kvcalloc() instead of kvzalloc() (Gustavo A. R. Silva)"
      
      * tag 'kspp-misc-fixes-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux:
        firewire: Remove function callback casts
        nouveau/svm: Use kvcalloc() instead of kvzalloc()
        firmware/psci: fix application of sizeof to pointer
        dmaengine: pxa_dma: Prefer struct_size over open coded arithmetic
        KVM: PPC: Replace zero-length array with flexible array member
        aio: Prefer struct_size over open coded arithmetic
        writeback: prefer struct_size over open coded arithmetic
        xfs: Use kvcalloc() instead of kvzalloc()
        assoc_array: Avoid open coded arithmetic in allocator arguments
      bf953917
    • Linus Torvalds's avatar
      Merge tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · a5a9e006
      Linus Torvalds authored
      Pull seccomp updates from Kees Cook:
       "These are x86-specific, but I carried these since they're also
        seccomp-specific.
      
        This flips the defaults for spec_store_bypass_disable and
        spectre_v2_user from "seccomp" to "prctl", as enough time has passed
        to allow system owners to have updated the defensive stances of their
        various workloads, and it's long overdue to unpessimize seccomp
        threads.
      
        Extensive rationale and details are in Andrea's main patch.
      
        Summary:
      
         - set spec_store_bypass_disable & spectre_v2_user to prctl (Andrea Arcangeli)"
      
      * tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        x86: deduplicate the spectre_v2_user documentation
        x86: change default to spec_store_bypass_disable=prctl spectre_v2_user=prctl
      a5a9e006
    • Linus Torvalds's avatar
      Merge tag 'overflow-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 2dc26d98
      Linus Torvalds authored
      Pull overflow updates from Kees Cook:
       "The end goal of the current buffer overflow detection work[0] is to
        gain full compile-time and run-time coverage of all detectable buffer
        overflows seen via array indexing or memcpy(), memmove(), and
        memset(). The str*() family of functions already have full coverage.
      
        While much of the work for these changes have been on-going for many
        releases (i.e. 0-element and 1-element array replacements, as well as
        avoiding false positives and fixing discovered overflows[1]), this
        series contains the foundational elements of several related buffer
        overflow detection improvements by providing new common helpers and
        FORTIFY_SOURCE changes needed to gain the introspection required for
        compiler visibility into array sizes. Also included are a handful of
        already Acked instances using the helpers (or related clean-ups), with
        many more waiting at the ready to be taken via subsystem-specific
        trees[2].
      
        The new helpers are:
      
         - struct_group() for gaining struct member range introspection
      
         - memset_after() and memset_startat() for clearing to the end of
           structures
      
         - DECLARE_FLEX_ARRAY() for using flex arrays in unions or alone in
           structs
      
        Also included is the beginning of the refactoring of FORTIFY_SOURCE to
        support memcpy() introspection, fix missing and regressed coverage
        under GCC, and to prepare to fix the currently broken Clang support.
        Finishing this work is part of the larger series[0], but depends on
        all the false positives and buffer overflow bug fixes to have landed
        already and those that depend on this series to land.
      
        As part of the FORTIFY_SOURCE refactoring, a set of both a
        compile-time and run-time tests are added for FORTIFY_SOURCE and the
        mem*()-family functions respectively. The compile time tests have
        found a legitimate (though corner-case) bug[6] already.
      
        Please note that the appearance of "panic" and "BUG" in the
        FORTIFY_SOURCE refactoring are the result of relocating existing code,
        and no new use of those code-paths are expected nor desired.
      
        Finally, there are two tree-wide conversions for 0-element arrays and
        flexible array unions to gain sane compiler introspection coverage
        that result in no known object code differences.
      
        After this series (and the changes that have now landed via netdev and
        usb), we are very close to finally being able to build with
        -Warray-bounds and -Wzero-length-bounds.
      
        However, due corner cases in GCC[3] and Clang[4], I have not included
        the last two patches that turn on these options, as I don't want to
        introduce any known warnings to the build. Hopefully these can be
        solved soon"
      
      Link: https://lore.kernel.org/lkml/20210818060533.3569517-1-keescook@chromium.org/ [0]
      Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=grep&q=FORTIFY_SOURCE [1]
      Link: https://lore.kernel.org/lkml/202108220107.3E26FE6C9C@keescook/ [2]
      Link: https://lore.kernel.org/lkml/3ab153ec-2798-da4c-f7b1-81b0ac8b0c5b@roeck-us.net/ [3]
      Link: https://bugs.llvm.org/show_bug.cgi?id=51682 [4]
      Link: https://lore.kernel.org/lkml/202109051257.29B29745C0@keescook/ [5]
      Link: https://lore.kernel.org/lkml/20211020200039.170424-1-keescook@chromium.org/ [6]
      
      * tag 'overflow-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (30 commits)
        fortify: strlen: Avoid shadowing previous locals
        compiler-gcc.h: Define __SANITIZE_ADDRESS__ under hwaddress sanitizer
        treewide: Replace 0-element memcpy() destinations with flexible arrays
        treewide: Replace open-coded flex arrays in unions
        stddef: Introduce DECLARE_FLEX_ARRAY() helper
        btrfs: Use memset_startat() to clear end of struct
        string.h: Introduce memset_startat() for wiping trailing members and padding
        xfrm: Use memset_after() to clear padding
        string.h: Introduce memset_after() for wiping trailing members/padding
        lib: Introduce CONFIG_MEMCPY_KUNIT_TEST
        fortify: Add compile-time FORTIFY_SOURCE tests
        fortify: Allow strlen() and strnlen() to pass compile-time known lengths
        fortify: Prepare to improve strnlen() and strlen() warnings
        fortify: Fix dropped strcpy() compile-time write overflow check
        fortify: Explicitly disable Clang support
        fortify: Move remaining fortify helpers into fortify-string.h
        lib/string: Move helper functions out of string.c
        compiler_types.h: Remove __compiletime_object_size()
        cm4000_cs: Use struct_group() to zero struct cm4000_dev region
        can: flexcan: Use struct_group() to zero struct flexcan_regs regions
        ...
      2dc26d98
    • Linus Torvalds's avatar
      Merge tag 'hardening-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · f594e28d
      Linus Torvalds authored
      Pull compiler hardening updates from Kees Cook:
       "These are various compiler-related hardening feature updates. Notable
        is the addition of an explicit limited rationale for, and deprecation
        schedule of, gcc-plugins.
      
        gcc-plugins:
         - remove support for GCC 4.9 and older (Ard Biesheuvel)
         - remove duplicate include in gcc-common.h (Ye Guojin)
         - Explicitly document purpose and deprecation schedule (Kees Cook)
         - Remove cyc_complexity (Kees Cook)
      
        instrumentation:
         - Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO (Kees Cook)
      
        Clang LTO:
         - kallsyms: strip LTO suffixes from static functions (Nick Desaulniers)"
      
      * tag 'hardening-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        gcc-plugins: remove duplicate include in gcc-common.h
        gcc-plugins: Remove cyc_complexity
        gcc-plugins: Explicitly document purpose and deprecation schedule
        kallsyms: strip LTO suffixes from static functions
        gcc-plugins: remove support for GCC 4.9 and older
        hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO
      f594e28d
    • Linus Torvalds's avatar
      Merge tag 'cpu-to-thread_info-v5.16-rc1' of... · 01463374
      Linus Torvalds authored
      Merge tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
      
      Pull thread_info update to move 'cpu' back from task_struct from Kees Cook:
       "Cross-architecture update to move task_struct::cpu back into
        thread_info on arm64, x86, s390, powerpc, and riscv. All Acked by arch
        maintainers.
      
        Quoting Ard Biesheuvel:
      
           'Move task_struct::cpu back into thread_info
      
            Keeping CPU in task_struct is problematic for architectures that
            define raw_smp_processor_id() in terms of this field, as it
            requires linux/sched.h to be included, which causes a lot of pain
            in terms of circular dependencies (aka 'header soup')
      
            This series moves it back into thread_info (where it came from)
            for all architectures that enable THREAD_INFO_IN_TASK, addressing
            the header soup issue as well as some pointless differences in the
            implementations of task_cpu() and set_task_cpu()'"
      
      * tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        riscv: rely on core code to keep thread_info::cpu updated
        powerpc: smp: remove hack to obtain offset of task_struct::cpu
        sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y
        powerpc: add CPU field to struct thread_info
        s390: add CPU field to struct thread_info
        x86: add CPU field to struct thread_info
        arm64: add CPU field to struct thread_info
      01463374
  2. 01 Nov, 2021 35 commits
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.16-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 03feb7c5
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - A small comma vs semicolon cleanup
      
       - defconfig updates
      
      * tag 'm68k-for-v5.16-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: defconfig: Update defconfigs for v5.15-rc1
        m68k: muldi3: Use semicolon instead of comma
      03feb7c5
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 552ebfe0
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "Lots of new features and fixes:
      
         - Added TOC (table of content) support, which is a debugging feature
           which is either initiated by pressing the TOC button or via command
           in the BMC. If pressed the Linux built-in KDB/KGDB will be called
           (Sven Schnelle)
      
         - Fix CONFIG_PREEMPT (Sven)
      
         - Fix unwinder on 64-bit kernels (Sven)
      
         - Various kgdb fixes (Sven)
      
         - Added KFENCE support (me)
      
         - Switch to ARCH_STACKWALK implementation (me)
      
         - Fix ptrace check on syscall return (me)
      
         - Fix kernel crash with fixmaps on PA1.x machines (me)
      
         - Move thread_info into task struct, aka CONFIG_THREAD_INFO_IN_TASK
           (me)
      
         - Updated defconfigs
      
         - Smaller cleanups, including Makefile cleanups (Masahiro Yamada),
           use kthread_run() macro (Cai Huoqing), use swap() macro (Yihao
           Han)"
      
      * tag 'for-5.16/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: (36 commits)
        parisc: Fix set_fixmap() on PA1.x CPUs
        parisc: Use swap() to swap values in setup_bootmem()
        parisc: Update defconfigs
        parisc: decompressor: clean up Makefile
        parisc: decompressor: remove repeated depenency of misc.o
        parisc: Remove unused constants from asm-offsets.c
        parisc/ftrace: use static key to enable/disable function graph tracer
        parisc/ftrace: set function trace function
        parisc: Make use of the helper macro kthread_run()
        parisc: mark xchg functions notrace
        parisc: enhance warning regarding usage of O_NONBLOCK
        parisc: Drop ifdef __KERNEL__ from non-uapi kernel headers
        parisc: Use PRIV_USER and PRIV_KERNEL in ptrace.h
        parisc: Use PRIV_USER in syscall.S
        parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling
        parisc: Move thread_info into task struct
        parisc: add support for TOC (transfer of control)
        parisc/firmware: add functions to retrieve TOC data
        parisc: add PIM TOC data structures
        parisc: move virt_map macro to assembly.h
        ...
      552ebfe0
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 46f87632
      Linus Torvalds authored
      Pull arm64 updates from Will Deacon:
       "There's the usual summary below, but the highlights are support for
        the Armv8.6 timer extensions, KASAN support for asymmetric MTE, the
        ability to kexec() with the MMU enabled and a second attempt at
        switching to the generic pfn_valid() implementation.
      
        Summary:
      
         - Support for the Arm8.6 timer extensions, including a
           self-synchronising view of the system registers to elide some
           expensive ISB instructions.
      
         - Exception table cleanup and rework so that the fixup handlers
           appear correctly in backtraces.
      
         - A handful of miscellaneous changes, the main one being selection of
           CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK.
      
         - More mm and pgtable cleanups.
      
         - KASAN support for "asymmetric" MTE, where tag faults are reported
           synchronously for loads (via an exception) and asynchronously for
           stores (via a register).
      
         - Support for leaving the MMU enabled during kexec relocation, which
           significantly speeds up the operation.
      
         - Minor improvements to our perf PMU drivers.
      
         - Improvements to the compat vDSO build system, particularly when
           building with LLVM=1.
      
         - Preparatory work for handling some Coresight TRBE tracing errata.
      
         - Cleanup and refactoring of the SVE code to pave the way for SME
           support in future.
      
         - Ensure SCS pages are unpoisoned immediately prior to freeing them
           when KASAN is enabled for the vmalloc area.
      
         - Try moving to the generic pfn_valid() implementation again now that
           the DMA mapping issue from last time has been resolved.
      
         - Numerous improvements and additions to our FPSIMD and SVE
           selftests"
      
      [ armv8.6 timer updates were in a shared branch and already came in
        through -tip in the timer pull  - Linus ]
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (85 commits)
        arm64: Select POSIX_CPU_TIMERS_TASK_WORK
        arm64: Document boot requirements for FEAT_SME_FA64
        arm64/sve: Fix warnings when SVE is disabled
        arm64/sve: Add stub for sve_max_virtualisable_vl()
        arm64: errata: Add detection for TRBE write to out-of-range
        arm64: errata: Add workaround for TSB flush failures
        arm64: errata: Add detection for TRBE overwrite in FILL mode
        arm64: Add Neoverse-N2, Cortex-A710 CPU part definition
        selftests: arm64: Factor out utility functions for assembly FP tests
        arm64: vmlinux.lds.S: remove `.fixup` section
        arm64: extable: add load_unaligned_zeropad() handler
        arm64: extable: add a dedicated uaccess handler
        arm64: extable: add `type` and `data` fields
        arm64: extable: use `ex` for `exception_table_entry`
        arm64: extable: make fixup_exception() return bool
        arm64: extable: consolidate definitions
        arm64: gpr-num: support W registers
        arm64: factor out GPR numbering helpers
        arm64: kvm: use kvm_exception_table_entry
        arm64: lib: __arch_copy_to_user(): fold fixups into body
        ...
      46f87632
    • Linus Torvalds's avatar
      Merge tag 'x86_sgx_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 879dbe9f
      Linus Torvalds authored
      Pull x86 SGX updates from Borislav Petkov:
       "Add a SGX_IOC_VEPC_REMOVE ioctl to the /dev/sgx_vepc virt interface
        with which EPC pages can be put back into their uninitialized state
        without having to reopen /dev/sgx_vepc, which could not be possible
        anymore after startup due to security policies"
      
      * tag 'x86_sgx_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/sgx/virt: implement SGX_IOC_VEPC_REMOVE ioctl
        x86/sgx/virt: extract sgx_vepc_remove_page
      879dbe9f
    • Linus Torvalds's avatar
      Merge tag 'x86_sev_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 20273d25
      Linus Torvalds authored
      Pull x86 SEV updates from Borislav Petkov:
      
       - Export sev_es_ghcb_hv_call() so that HyperV Isolation VMs can use it
         too
      
       - Non-urgent fixes and cleanups
      
      * tag 'x86_sev_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/sev: Expose sev_es_ghcb_hv_call() for use by HyperV
        x86/sev: Allow #VC exceptions on the VC2 stack
        x86/sev: Fix stack type check in vc_switch_off_ist()
        x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c
        x86/sev: Carve out HV call's return value verification
      20273d25
    • Linus Torvalds's avatar
      Merge tag 'x86_misc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 160729af
      Linus Torvalds authored
      Pull misc x86 changes from Borislav Petkov:
      
       - Use the proper interface for the job: get_unaligned() instead of
         memcpy() in the insn decoder
      
       - A randconfig build fix
      
      * tag 'x86_misc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/insn: Use get_unaligned() instead of memcpy()
        x86/Kconfig: Fix an unused variable error in dell-smm-hwmon
      160729af
    • Linus Torvalds's avatar
      Merge tag 'x86_cpu_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e0f4c59d
      Linus Torvalds authored
      Pull x86 cpu updates from Borislav Petkov:
      
       - Start checking a CPUID bit on AMD Zen3 which states that the CPU
         clears the segment base when a null selector is written. Do the
         explicit detection on older CPUs, zen2 and hygon specifically, which
         have the functionality but do not advertize the CPUID bit. Factor in
         the presence of a hypervisor underneath the kernel and avoid doing
         the explicit check there which the HV might've decided to not
         advertize for migration safety reasons, or similar.
      
       - Add support for a new X86 CPU vendor: VORTEX. Needed for whitelisting
         those CPUs in the hardware vulnerabilities detection
      
       - Force the compiler to use rIP-relative addressing in the fallback
         path of static_cpu_has(), in order to avoid unnecessary register
         pressure
      
      * tag 'x86_cpu_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/cpu: Fix migration safety with X86_BUG_NULL_SEL
        x86/CPU: Add support for Vortex CPUs
        x86/umip: Downgrade warning messages to debug loglevel
        x86/asm: Avoid adding register pressure for the init case in static_cpu_has()
        x86/asm: Add _ASM_RIP() macro for x86-64 (%rip) suffix
      e0f4c59d
    • Linus Torvalds's avatar
      Merge tag 'x86_cleanups_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 18398bb8
      Linus Torvalds authored
      Pull x86 cleanups from Borislav Petkov:
       "The usual round of random minor fixes and cleanups all over the place"
      
      * tag 'x86_cleanups_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/Makefile: Remove unneeded whitespaces before tabs
        x86/of: Kill unused early_init_dt_scan_chosen_arch()
        x86: Fix misspelled Kconfig symbols
        x86/Kconfig: Remove references to obsolete Kconfig symbols
        x86/smp: Remove unnecessary assignment to local var freq_scale
      18398bb8
    • Linus Torvalds's avatar
      Merge tag 'x86_cc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6e5772c8
      Linus Torvalds authored
      Pull generic confidential computing updates from Borislav Petkov:
       "Add an interface called cc_platform_has() which is supposed to be used
        by confidential computing solutions to query different aspects of the
        system.
      
        The intent behind it is to unify testing of such aspects instead of
        having each confidential computing solution add its own set of tests
        to code paths in the kernel, leading to an unwieldy mess"
      
      * tag 'x86_cc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        treewide: Replace the use of mem_encrypt_active() with cc_platform_has()
        x86/sev: Replace occurrences of sev_es_active() with cc_platform_has()
        x86/sev: Replace occurrences of sev_active() with cc_platform_has()
        x86/sme: Replace occurrences of sme_active() with cc_platform_has()
        powerpc/pseries/svm: Add a powerpc version of cc_platform_has()
        x86/sev: Add an x86 version of cc_platform_has()
        arch/cc: Introduce a function to check for confidential computing features
        x86/ioremap: Selectively build arch override encryption functions
      6e5772c8
    • Linus Torvalds's avatar
      Merge tag 'x86_build_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 57f45de7
      Linus Torvalds authored
      Pull x86 build fix from Borislav Petkov:
      
       - A single fix to hdimage when using older versions of mtools
      
      * tag 'x86_build_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Fix make hdimage with older versions of mtools
      57f45de7
    • Linus Torvalds's avatar
      Merge tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 158405e8
      Linus Torvalds authored
      Pull RAS updates from Borislav Petkov:
      
       - Get rid of a bunch of function pointers used in MCA land in favor of
         normal functions. This is in preparation of making the MCA code
         noinstr-aware
      
       - When the kernel copies data from user addresses and it encounters a
         machine check, a SIGBUS is sent to that process. Change this action
         to either an -EFAULT which is returned to the user or a short write,
         making the recovery action a lot more user-friendly
      
      * tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Sort mca_config members to get rid of unnecessary padding
        x86/mce: Get rid of the ->quirk_no_way_out() indirect call
        x86/mce: Get rid of msr_ops
        x86/mce: Get rid of machine_check_vector
        x86/mce: Get rid of the mce_severity function pointer
        x86/mce: Drop copyin special case for #MC
        x86/mce: Change to not send SIGBUS error during copy from user
      158405e8
    • Linus Torvalds's avatar
      Merge tag 'efi-next-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 93351d2c
      Linus Torvalds authored
      Pull EFI updates from Borislav Petkov:
       "The last EFI pull request which is forwarded through the tip tree, for
        v5.16. From now on, Ard will be sending stuff directly.
      
        Disable EFI runtime services by default on PREEMPT_RT, while adding
        the ability to re-enable them on demand by passing efi=runtime on the
        command line"
      
      * tag 'efi-next-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi: Allow efi=runtime
        efi: Disable runtime services on RT
      93351d2c
    • Linus Torvalds's avatar
      Merge tag 'edac_updates_for_v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · fe354159
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
       "A small pile of EDAC updates which the autumn wind blew my way. :)
      
         - amd64_edac: Add support for three-rank interleaving mode which is
           present on AMD zen2 servers
      
         - The usual fixes and cleanups all over EDAC land"
      
      * tag 'edac_updates_for_v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
        EDAC/ti: Remove redundant error messages
        EDAC/amd64: Handle three rank interleaving mode
        EDAC/mc_sysfs: Print MC-scope sysfs counters unsigned
        EDAC/al_mc: Make use of the helper function devm_add_action_or_reset()
        EDAC/mc: Replace strcpy(), sprintf() and snprintf() with strscpy() or scnprintf()
      fe354159
    • Linus Torvalds's avatar
      mm: fix mismerge of folio page flag manipulators · e6643593
      Linus Torvalds authored
      I had missed a semantic conflict between commit d389a4a8 ("mm: Add
      folio flag manipulation functions") from the folio tree, and commit
      eac96c3e ("mm: filemap: check if THP has hwpoisoned subpage for PMD
      page fault") that added a new set of page flags.
      
      My build tests had too many options enabled, which hid this issue.  But
      if you didn't have MEMORY_FAILURE or TRANSPARENT_HUGEPAGE enabled, you'd
      end up with build errors like this:
      
        include/linux/page-flags.h:806:29: error: macro "PAGEFLAG_FALSE" requires 2 arguments, but only 1 given
          806 | PAGEFLAG_FALSE(HasHWPoisoned)
              |                             ^
      
      due to the missing lowercase name used for folio function naming.
      
      Fixes: 49f8275c ("Merge tag 'folio-5.16' of git://git.infradead.org/users/willy/pagecache")
      Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Reported-by: default avatarYang Shi <shy828301@gmail.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e6643593
    • Linus Torvalds's avatar
      Merge tag 'x86-fpu-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8cb1ae19
      Linus Torvalds authored
      Pull x86 fpu updates from Thomas Gleixner:
      
       - Cleanup of extable fixup handling to be more robust, which in turn
         allows to make the FPU exception fixups more robust as well.
      
       - Change the return code for signal frame related failures from
         explicit error codes to a boolean fail/success as that's all what the
         calling code evaluates.
      
       - A large refactoring of the FPU code to prepare for adding AMX
         support:
      
            - Distangle the public header maze and remove especially the
              misnomed kitchen sink internal.h which is despite it's name
              included all over the place.
      
            - Add a proper abstraction for the register buffer storage (struct
              fpstate) which allows to dynamically size the buffer at runtime
              by flipping the pointer to the buffer container from the default
              container which is embedded in task_struct::tread::fpu to a
              dynamically allocated container with a larger register buffer.
      
            - Convert the code over to the new fpstate mechanism.
      
            - Consolidate the KVM FPU handling by moving the FPU related code
              into the FPU core which removes the number of exports and avoids
              adding even more export when AMX has to be supported in KVM.
              This also removes duplicated code which was of course
              unnecessary different and incomplete in the KVM copy.
      
            - Simplify the KVM FPU buffer handling by utilizing the new
              fpstate container and just switching the buffer pointer from the
              user space buffer to the KVM guest buffer when entering
              vcpu_run() and flipping it back when leaving the function. This
              cuts the memory requirements of a vCPU for FPU buffers in half
              and avoids pointless memory copy operations.
      
              This also solves the so far unresolved problem of adding AMX
              support because the current FPU buffer handling of KVM inflicted
              a circular dependency between adding AMX support to the core and
              to KVM. With the new scheme of switching fpstate AMX support can
              be added to the core code without affecting KVM.
      
            - Replace various variables with proper data structures so the
              extra information required for adding dynamically enabled FPU
              features (AMX) can be added in one place
      
       - Add AMX (Advanced Matrix eXtensions) support (finally):
      
         AMX is a large XSTATE component which is going to be available with
         Saphire Rapids XEON CPUs. The feature comes with an extra MSR
         (MSR_XFD) which allows to trap the (first) use of an AMX related
         instruction, which has two benefits:
      
          1) It allows the kernel to control access to the feature
      
          2) It allows the kernel to dynamically allocate the large register
             state buffer instead of burdening every task with the the extra
             8K or larger state storage.
      
         It would have been great to gain this kind of control already with
         AVX512.
      
         The support comes with the following infrastructure components:
      
          1) arch_prctl() to
              - read the supported features (equivalent to XGETBV(0))
              - read the permitted features for a task
              - request permission for a dynamically enabled feature
      
             Permission is granted per process, inherited on fork() and
             cleared on exec(). The permission policy of the kernel is
             restricted to sigaltstack size validation, but the syscall
             obviously allows further restrictions via seccomp etc.
      
          2) A stronger sigaltstack size validation for sys_sigaltstack(2)
             which takes granted permissions and the potentially resulting
             larger signal frame into account. This mechanism can also be used
             to enforce factual sigaltstack validation independent of dynamic
             features to help with finding potential victims of the 2K
             sigaltstack size constant which is broken since AVX512 support
             was added.
      
          3) Exception handling for #NM traps to catch first use of a extended
             feature via a new cause MSR. If the exception was caused by the
             use of such a feature, the handler checks permission for that
             feature. If permission has not been granted, the handler sends a
             SIGILL like the #UD handler would do if the feature would have
             been disabled in XCR0. If permission has been granted, then a new
             fpstate which fits the larger buffer requirement is allocated.
      
             In the unlikely case that this allocation fails, the handler
             sends SIGSEGV to the task. That's not elegant, but unavoidable as
             the other discussed options of preallocation or full per task
             permissions come with their own set of horrors for kernel and/or
             userspace. So this is the lesser of the evils and SIGSEGV caused
             by unexpected memory allocation failures is not a fundamentally
             new concept either.
      
             When allocation succeeds, the fpstate properties are filled in to
             reflect the extended feature set and the resulting sizes, the
             fpu::fpstate pointer is updated accordingly and the trap is
             disarmed for this task permanently.
      
          4) Enumeration and size calculations
      
          5) Trap switching via MSR_XFD
      
             The XFD (eXtended Feature Disable) MSR is context switched with
             the same life time rules as the FPU register state itself. The
             mechanism is keyed off with a static key which is default
             disabled so !AMX equipped CPUs have zero overhead. On AMX enabled
             CPUs the overhead is limited by comparing the tasks XFD value
             with a per CPU shadow variable to avoid redundant MSR writes. In
             case of switching from a AMX using task to a non AMX using task
             or vice versa, the extra MSR write is obviously inevitable.
      
             All other places which need to be aware of the variable feature
             sets and resulting variable sizes are not affected at all because
             they retrieve the information (feature set, sizes) unconditonally
             from the fpstate properties.
      
          6) Enable the new AMX states
      
         Note, this is relatively new code despite the fact that AMX support
         is in the works for more than a year now.
      
         The big refactoring of the FPU code, which allowed to do a proper
         integration has been started exactly 3 weeks ago. Refactoring of the
         existing FPU code and of the original AMX patches took a week and has
         been subject to extensive review and testing. The only fallout which
         has not been caught in review and testing right away was restricted
         to AMX enabled systems, which is completely irrelevant for anyone
         outside Intel and their early access program. There might be dragons
         lurking as usual, but so far the fine grained refactoring has held up
         and eventual yet undetected fallout is bisectable and should be
         easily addressable before the 5.16 release. Famous last words...
      
         Many thanks to Chang Bae and Dave Hansen for working hard on this and
         also to the various test teams at Intel who reserved extra capacity
         to follow the rapid development of this closely which provides the
         confidence level required to offer this rather large update for
         inclusion into 5.16-rc1
      
      * tag 'x86-fpu-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (110 commits)
        Documentation/x86: Add documentation for using dynamic XSTATE features
        x86/fpu: Include vmalloc.h for vzalloc()
        selftests/x86/amx: Add context switch test
        selftests/x86/amx: Add test cases for AMX state management
        x86/fpu/amx: Enable the AMX feature in 64-bit mode
        x86/fpu: Add XFD handling for dynamic states
        x86/fpu: Calculate the default sizes independently
        x86/fpu/amx: Define AMX state components and have it used for boot-time checks
        x86/fpu/xstate: Prepare XSAVE feature table for gaps in state component numbers
        x86/fpu/xstate: Add fpstate_realloc()/free()
        x86/fpu/xstate: Add XFD #NM handler
        x86/fpu: Update XFD state where required
        x86/fpu: Add sanity checks for XFD
        x86/fpu: Add XFD state to fpstate
        x86/msr-index: Add MSRs for XFD
        x86/cpufeatures: Add eXtended Feature Disabling (XFD) feature bit
        x86/fpu: Reset permission and fpstate on exec()
        x86/fpu: Prepare fpu_clone() for dynamically enabled features
        x86/fpu/signal: Prepare for variable sigframe length
        x86/signal: Use fpu::__state_user_size for sigalt stack validation
        ...
      8cb1ae19
    • Linus Torvalds's avatar
      Merge tag 'x86-apic-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7d20dd32
      Linus Torvalds authored
      Pull x86/apic update from Thomas Gleixner:
       "A single commit which reduces cache misses in __x2apic_send_IPI_mask()
        significantly by converting x86_cpu_to_logical_apicid() to an array
        instead of using per CPU storage.
      
        This reduces the cost for a full broadcast on a dual socket system
        with 256 CPUs from 33 down to 11 microseconds"
      
      * tag 'x86-apic-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Reduce cache line misses in __x2apic_send_IPI_mask()
      7d20dd32
    • Linus Torvalds's avatar
      Merge tag 'sched-core-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9a7e0a90
      Linus Torvalds authored
      Pull scheduler updates from Thomas Gleixner:
      
       - Revert the printk format based wchan() symbol resolution as it can
         leak the raw value in case that the symbol is not resolvable.
      
       - Make wchan() more robust and work with all kind of unwinders by
         enforcing that the task stays blocked while unwinding is in progress.
      
       - Prevent sched_fork() from accessing an invalid sched_task_group
      
       - Improve asymmetric packing logic
      
       - Extend scheduler statistics to RT and DL scheduling classes and add
         statistics for bandwith burst to the SCHED_FAIR class.
      
       - Properly account SCHED_IDLE entities
      
       - Prevent a potential deadlock when initial priority is assigned to a
         newly created kthread. A recent change to plug a race between cpuset
         and __sched_setscheduler() introduced a new lock dependency which is
         now triggered. Break the lock dependency chain by moving the priority
         assignment to the thread function.
      
       - Fix the idle time reporting in /proc/uptime for NOHZ enabled systems.
      
       - Improve idle balancing in general and especially for NOHZ enabled
         systems.
      
       - Provide proper interfaces for live patching so it does not have to
         fiddle with scheduler internals.
      
       - Add cluster aware scheduling support.
      
       - A small set of tweaks for RT (irqwork, wait_task_inactive(), various
         scheduler options and delaying mmdrop)
      
       - The usual small tweaks and improvements all over the place
      
      * tag 'sched-core-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (69 commits)
        sched/fair: Cleanup newidle_balance
        sched/fair: Remove sysctl_sched_migration_cost condition
        sched/fair: Wait before decaying max_newidle_lb_cost
        sched/fair: Skip update_blocked_averages if we are defering load balance
        sched/fair: Account update_blocked_averages in newidle_balance cost
        x86: Fix __get_wchan() for !STACKTRACE
        sched,x86: Fix L2 cache mask
        sched/core: Remove rq_relock()
        sched: Improve wake_up_all_idle_cpus() take #2
        irq_work: Also rcuwait for !IRQ_WORK_HARD_IRQ on PREEMPT_RT
        irq_work: Handle some irq_work in a per-CPU thread on PREEMPT_RT
        irq_work: Allow irq_work_sync() to sleep if irq_work() no IRQ support.
        sched/rt: Annotate the RT balancing logic irqwork as IRQ_WORK_HARD_IRQ
        sched: Add cluster scheduler level for x86
        sched: Add cluster scheduler level in core and related Kconfig for ARM64
        topology: Represent clusters of CPUs within a die
        sched: Disable -Wunused-but-set-variable
        sched: Add wrapper for get_wchan() to keep task blocked
        x86: Fix get_wchan() to support the ORC unwinder
        proc: Use task_is_running() for wchan in /proc/$pid/stat
        ...
      9a7e0a90
    • Linus Torvalds's avatar
      Merge tag 'timers-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 57a315cd
      Linus Torvalds authored
      Pull timer updates from Thomas Gleixner:
       "Time, timers and timekeeping updates:
      
         - No core updates
      
         - No new clocksource/event driver
      
         - A large rework of the ARM architected timer driver to prepare for
           the support of the upcoming ARMv8.6 support
      
         - Fix Kconfig options for Exynos MCT, Samsung PWM and TI DM timers
      
         - Address a namespace collison in the ARC sp804 timer driver"
      
      * tag 'timers-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clocksource/drivers/timer-ti-dm: Select TIMER_OF
        clocksource/drivers/exynosy: Depend on sub-architecture for Exynos MCT and Samsung PWM
        clocksource/drivers/arch_arm_timer: Move workaround synchronisation around
        clocksource/drivers/arm_arch_timer: Fix masking for high freq counters
        clocksource/drivers/arm_arch_timer: Drop unnecessary ISB on CVAL programming
        clocksource/drivers/arm_arch_timer: Remove any trace of the TVAL programming interface
        clocksource/drivers/arm_arch_timer: Work around broken CVAL implementations
        clocksource/drivers/arm_arch_timer: Advertise 56bit timer to the core code
        clocksource/drivers/arm_arch_timer: Move MMIO timer programming over to CVAL
        clocksource/drivers/arm_arch_timer: Fix MMIO base address vs callback ordering issue
        clocksource/drivers/arm_arch_timer: Move drop _tval from erratum function names
        clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL
        clocksource/drivers/arm_arch_timer: Extend write side of timer register accessors to u64
        clocksource/drivers/arm_arch_timer: Drop CNT*_TVAL read accessors
        clocksource/arm_arch_timer: Add build-time guards for unhandled register accesses
        clocksource/drivers/arc_timer: Eliminate redefined macro error
      57a315cd
    • Linus Torvalds's avatar
      Merge tag 'objtool-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 43aa0a19
      Linus Torvalds authored
      Pull objtool updates from Thomas Gleixner:
      
       - Improve retpoline code patching by separating it from alternatives
         which reduces memory footprint and allows to do better optimizations
         in the actual runtime patching.
      
       - Add proper retpoline support for x86/BPF
      
       - Address noinstr warnings in x86/kvm, lockdep and paravirtualization
         code
      
       - Add support to handle pv_opsindirect calls in the noinstr analysis
      
       - Classify symbols upfront and cache the result to avoid redundant
         str*cmp() invocations.
      
       - Add a CFI hash to reduce memory consumption which also reduces
         runtime on a allyesconfig by ~50%
      
       - Adjust XEN code to make objtool handling more robust and as a side
         effect to prevent text fragmentation due to placement of the
         hypercall page.
      
      * tag 'objtool-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
        bpf,x86: Respect X86_FEATURE_RETPOLINE*
        bpf,x86: Simplify computing label offsets
        x86,bugs: Unconditionally allow spectre_v2=retpoline,amd
        x86/alternative: Add debug prints to apply_retpolines()
        x86/alternative: Try inline spectre_v2=retpoline,amd
        x86/alternative: Handle Jcc __x86_indirect_thunk_\reg
        x86/alternative: Implement .retpoline_sites support
        x86/retpoline: Create a retpoline thunk array
        x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h
        x86/asm: Fixup odd GEN-for-each-reg.h usage
        x86/asm: Fix register order
        x86/retpoline: Remove unused replacement symbols
        objtool,x86: Replace alternatives with .retpoline_sites
        objtool: Shrink struct instruction
        objtool: Explicitly avoid self modifying code in .altinstr_replacement
        objtool: Classify symbols
        objtool: Support pv_opsindirect calls for noinstr
        x86/xen: Rework the xen_{cpu,irq,mmu}_opsarrays
        x86/xen: Mark xen_force_evtchn_callback() noinstr
        x86/xen: Make irq_disable() noinstr
        ...
      43aa0a19
    • Linus Torvalds's avatar
      Merge tag 'locking-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 595b28fb
      Linus Torvalds authored
      Pull locking updates from Thomas Gleixner:
      
       - Move futex code into kernel/futex/ and split up the kitchen sink into
         seperate files to make integration of sys_futex_waitv() simpler.
      
       - Add a new sys_futex_waitv() syscall which allows to wait on multiple
         futexes.
      
         The main use case is emulating Windows' WaitForMultipleObjects which
         allows Wine to improve the performance of Windows Games. Also native
         Linux games can benefit from this interface as this is a common wait
         pattern for this kind of applications.
      
       - Add context to ww_mutex_trylock() to provide a path for i915 to
         rework their eviction code step by step without making lockdep upset
         until the final steps of rework are completed. It's also useful for
         regulator and TTM to avoid dropping locks in the non contended path.
      
       - Lockdep and might_sleep() cleanups and improvements
      
       - A few improvements for the RT substitutions.
      
       - The usual small improvements and cleanups.
      
      * tag 'locking-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
        locking: Remove spin_lock_flags() etc
        locking/rwsem: Fix comments about reader optimistic lock stealing conditions
        locking: Remove rcu_read_{,un}lock() for preempt_{dis,en}able()
        locking/rwsem: Disable preemption for spinning region
        docs: futex: Fix kernel-doc references
        futex: Fix PREEMPT_RT build
        futex2: Documentation: Document sys_futex_waitv() uAPI
        selftests: futex: Test sys_futex_waitv() wouldblock
        selftests: futex: Test sys_futex_waitv() timeout
        selftests: futex: Add sys_futex_waitv() test
        futex,arm: Wire up sys_futex_waitv()
        futex,x86: Wire up sys_futex_waitv()
        futex: Implement sys_futex_waitv()
        futex: Simplify double_lock_hb()
        futex: Split out wait/wake
        futex: Split out requeue
        futex: Rename mark_wake_futex()
        futex: Rename: match_futex()
        futex: Rename: hb_waiter_{inc,dec,pending}()
        futex: Split out PI futex
        ...
      595b28fb
    • Linus Torvalds's avatar
      Merge tag 'perf-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 91e1c99e
      Linus Torvalds authored
      Pull perf updates from Thomas Gleixner:
       "Core:
      
         - Allow ftrace to instrument parts of the perf core code
      
         - Add a new mem_hops field to perf_mem_data_src which allows to
           represent intra-node/package or inter-node/off-package details to
           prepare for next generation systems which have more hieararchy
           within the node/pacakge level.
      
        Tools:
      
         - Update for the new mem_hops field in perf_mem_data_src
      
        Arch:
      
         - A set of constraints fixes for the Intel uncore PMU
      
         - The usual set of small fixes and improvements for x86 and PPC"
      
      * tag 'perf-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings
        powerpc/perf: Fix data source encodings for L2.1 and L3.1 accesses
        tools/perf: Add mem_hops field in perf_mem_data_src structure
        perf: Add mem_hops field in perf_mem_data_src structure
        perf: Add comment about current state of PERF_MEM_LVL_* namespace and remove an extra line
        perf/core: Allow ftrace for functions in kernel/event/core.c
        perf/x86: Add new event for AUX output counter index
        perf/x86: Add compiler barrier after updating BTS
        perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints
        perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints
        perf/x86/intel/uncore: Fix Intel SPR IIO event constraints
        perf/x86/intel/uncore: Fix Intel SPR CHA event constraints
        perf/x86/intel/uncore: Fix Intel ICX IIO event constraints
        perf/x86/intel/uncore: Fix invalid unit check
        perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server
      91e1c99e
    • Linus Torvalds's avatar
      Merge tag 'irq-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5a47ebe9
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "Updates for the interrupt subsystem:
      
        Core changes:
      
         - Prevent a potential deadlock when initial priority is assigned to a
           newly created interrupt thread. A recent change to plug a race
           between cpuset and __sched_setscheduler() introduced a new lock
           dependency which is now triggered. Break the lock dependency chain
           by moving the priority assignment to the thread function.
      
         - A couple of small updates to make the irq core RT safe.
      
         - Confine the irq_cpu_online/offline() API to the only left unfixable
           user Cavium Octeon so that it does not grow new usage.
      
         - A small documentation update
      
        Driver changes:
      
         - A large cross architecture rework to move irq_enter/exit() into the
           architecture code to make addressing the NOHZ_FULL/RCU issues
           simpler.
      
         - The obligatory new irq chip driver for Microchip EIC
      
         - Modularize a few irq chip drivers
      
         - Expand usage of devm_*() helpers throughout the driver code
      
         - The usual small fixes and improvements all over the place"
      
      * tag 'irq-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
        h8300: Fix linux/irqchip.h include mess
        dt-bindings: irqchip: renesas-irqc: Document r8a774e1 bindings
        MIPS: irq: Avoid an unused-variable error
        genirq: Hide irq_cpu_{on,off}line() behind a deprecated option
        irqchip/mips-gic: Get rid of the reliance on irq_cpu_online()
        MIPS: loongson64: Drop call to irq_cpu_offline()
        irq: remove handle_domain_{irq,nmi}()
        irq: remove CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
        irq: riscv: perform irqentry in entry code
        irq: openrisc: perform irqentry in entry code
        irq: csky: perform irqentry in entry code
        irq: arm64: perform irqentry in entry code
        irq: arm: perform irqentry in entry code
        irq: add a (temporary) CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
        irq: nds32: avoid CONFIG_HANDLE_DOMAIN_IRQ
        irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ
        irq: add generic_handle_arch_irq()
        irq: unexport handle_irq_desc()
        irq: simplify handle_domain_{irq,nmi}()
        irq: mips: simplify do_domain_IRQ()
        ...
      5a47ebe9
    • Linus Torvalds's avatar
      Merge tag 'for-5.16-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 037c50bf
      Linus Torvalds authored
      Pull btrfs updates from David Sterba:
       "The updates this time are more under the hood and enhancing existing
        features (subpage with compression and zoned namespaces).
      
        Performance related:
      
         - misc small inode logging improvements (+3% throughput, -11% latency
           on sample dbench workload)
      
         - more efficient directory logging: bulk item insertion, less tree
           searches and locking
      
         - speed up bulk insertion of items into a b-tree, which is used when
           logging directories, when running delayed items for directories
           (fsync and transaction commits) and when running the slow path
           (full sync) of an fsync (bulk creation run time -4%, deletion -12%)
      
        Core:
      
         - continued subpage support
            - make defragmentation work
            - make compression write work
      
         - zoned mode
            - support ZNS (zoned namespaces), zone capacity is number of
              usable blocks in each zone
            - add dedicated block group (zoned) for relocation, to prevent
              out of order writes in some cases
            - greedy block group reclaim, pick the ones with least usable
              space first
      
         - preparatory work for send protocol updates
      
         - error handling improvements
      
         - cleanups and refactoring
      
        Fixes:
      
         - lockdep warnings
            - in show_devname callback, on seeding device
            - device delete on loop device due to conversions to workqueues
      
         - fix deadlock between chunk allocation and chunk btree modifications
      
         - fix tracking of missing device count and status"
      
      * tag 'for-5.16-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (140 commits)
        btrfs: remove root argument from check_item_in_log()
        btrfs: remove root argument from add_link()
        btrfs: remove root argument from btrfs_unlink_inode()
        btrfs: remove root argument from drop_one_dir_item()
        btrfs: clear MISSING device status bit in btrfs_close_one_device
        btrfs: call btrfs_check_rw_degradable only if there is a missing device
        btrfs: send: prepare for v2 protocol
        btrfs: fix comment about sector sizes supported in 64K systems
        btrfs: update device path inode time instead of bd_inode
        fs: export an inode_update_time helper
        btrfs: fix deadlock when defragging transparent huge pages
        btrfs: sysfs: convert scnprintf and snprintf to sysfs_emit
        btrfs: make btrfs_super_block size match BTRFS_SUPER_INFO_SIZE
        btrfs: update comments for chunk allocation -ENOSPC cases
        btrfs: fix deadlock between chunk allocation and chunk btree modifications
        btrfs: zoned: use greedy gc for auto reclaim
        btrfs: check-integrity: stop storing the block device name in btrfsic_dev_state
        btrfs: use btrfs_get_dev_args_from_path in dev removal ioctls
        btrfs: add a btrfs_get_dev_args_from_path helper
        btrfs: handle device lookup with btrfs_dev_lookup_args
        ...
      037c50bf
    • Linus Torvalds's avatar
      btrfs: fix lzo_decompress_bio() kmap leakage · 2cf3f813
      Linus Torvalds authored
      Commit ccaa66c8 reinstated the kmap/kunmap that had been dropped in
      commit 8c945d32 ("btrfs: compression: drop kmap/kunmap from lzo").
      
      However, it seems to have done so incorrectly due to the change not
      reverting cleanly, and lzo_decompress_bio() ended up not having a
      matching "kunmap()" to the "kmap()" that was put back.
      
      Also, any assert that the page pointer is not NULL should be before the
      kmap() of said pointer, since otherwise you'd just oops in the kmap()
      before the assert would even trigger.
      
      I noticed this when trying to verify my btrfs merge, and things not
      adding up.  I'm doing this fixup before re-doing my merge, because this
      commit needs to also be backported to 5.15 (after verification from the
      btrfs people).
      
      Fixes: ccaa66c8 ("Revert 'btrfs: compression: drop kmap/kunmap from lzo'")
      Cc: David Sterba <dsterba@suse.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2cf3f813
    • Linus Torvalds's avatar
      Merge tag 'exfat-for-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat · 9c6e8d52
      Linus Torvalds authored
      Pull exfat fix from Namjae Jeon:
       "Fix ->i_blocks truncation issue caused by wrong 32bit mask"
      
      * tag 'exfat-for-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
        exfat: fix incorrect loading of i_blocks for large files
      9c6e8d52
    • Oscar Carter's avatar
      firewire: Remove function callback casts · ebe4560e
      Oscar Carter authored
      In 1394 OHCI specification, Isochronous Receive DMA context has several
      modes. One of mode is 'BufferFill' and Linux FireWire stack uses it to
      receive isochronous packets for multiple isochronous channel as
      FW_ISO_CONTEXT_RECEIVE_MULTICHANNEL.
      
      The mode is not used by in-kernel driver, while it's available for
      userspace. The character device driver in firewire-core includes
      cast of function callback for the mode since the type of callback
      function is different from the other modes. The case is inconvenient
      to effort of Control Flow Integrity builds due to
      -Wcast-function-type warning.
      
      This commit removes the cast. A static helper function is newly added
      to initialize isochronous context for the mode. The helper function
      arranges isochronous context to assign specific callback function
      after call of existent kernel API. It's noticeable that the number of
      isochronous channel, speed, and the size of header are not required for
      the mode. The helper function is used for the mode by character device
      driver instead of direct call of existent kernel API.
      
      The same goal can be achieved (in the ioctl_create_iso_context function)
      without this helper function as follows:
      - Call the fw_iso_context_create function passing NULL to the callback
        parameter.
      - Then setting the context->callback.sc or context->callback.mc
        variables based on the a->type value.
      
      However using the helper function created in this patch makes code more
      clear and declarative. This way avoid the call to a function with one
      purpose to achieved another one.
      Co-developed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Co-developed-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      Signed-off-by: default avatarOscar Carter <oscar.carter@gmx.com>
      Reviewed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Testeb-by: Takashi Sakamoto<o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      ebe4560e
    • Linus Torvalds's avatar
      Merge tag 'erofs-for-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs · 67a135b8
      Linus Torvalds authored
      Pull erofs updates from Gao Xiang:
       "There are some new features available for this cycle. Firstly, EROFS
        LZMA algorithm support, specifically called MicroLZMA, is available as
        an option for embedded devices, LiveCDs and/or as the secondary
        auxiliary compression algorithm besides the primary algorithm in one
        file.
      
        In order to better support the LZMA fixed-sized output compression,
        especially for 4KiB pcluster size (which has lowest memory pressure
        thus useful for memory-sensitive scenarios), Lasse introduced a new
        LZMA header/container format called MicroLZMA to minimize the original
        LZMA1 header (for example, we don't need to waste 4-byte dictionary
        size and another 8-byte uncompressed size, which can be calculated by
        fs directly, for each pcluster) and enable EROFS fixed-sized output
        compression.
      
        Note that MicroLZMA can also be later used by other things in addition
        to EROFS too where wasting minimal amount of space for headers is
        important and it can be only compiled by enabling XZ_DEC_MICROLZMA.
        MicroLZMA has been supported by the latest upstream XZ embedded [1] &
        XZ utils [2], apply the latest related XZ embedded upstream patches by
        the XZ author Lasse here.
      
        Secondly, multiple device is also supported in this cycle, which is
        designed for multi-layer container images. By working together with
        inter-layer data deduplication and compression, we can achieve the
        next high-performance container image solution. Our team will announce
        the new Nydus container image service [3] implementation with new RAFS
        v6 (EROFS-compatible) format in Open Source Summit 2021 China [4]
        soon.
      
        Besides, the secondary compression head support and readmore
        decompression strategy are also included in this cycle. There are also
        some minor bugfixes and cleanups, as always.
      
        Summary:
      
         - support multiple devices for multi-layer container images;
      
         - support the secondary compression head;
      
         - support readmore decompression strategy;
      
         - support new LZMA algorithm (specifically called MicroLZMA);
      
         - some bugfixes & cleanups"
      
      * tag 'erofs-for-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
        erofs: don't trigger WARN() when decompression fails
        erofs: get rid of ->lru usage
        erofs: lzma compression support
        erofs: rename some generic methods in decompressor
        lib/xz, lib/decompress_unxz.c: Fix spelling in comments
        lib/xz: Add MicroLZMA decoder
        lib/xz: Move s->lzma.len = 0 initialization to lzma_reset()
        lib/xz: Validate the value before assigning it to an enum variable
        lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
        erofs: introduce readmore decompression strategy
        erofs: introduce the secondary compression head
        erofs: get compression algorithms directly on mapping
        erofs: add multiple device support
        erofs: decouple basic mount options from fs_context
        erofs: remove the fast path of per-CPU buffer decompression
      67a135b8
    • Linus Torvalds's avatar
      Merge tag 'fscrypt-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt · cd3e8ea8
      Linus Torvalds authored
      Pull fscrypt updates from Eric Biggers:
       "Some cleanups for fs/crypto/:
      
         - Allow 256-bit master keys with AES-256-XTS
      
         - Improve documentation and comments
      
         - Remove unneeded field fscrypt_operations::max_namelen"
      
      * tag 'fscrypt-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt:
        fscrypt: improve a few comments
        fscrypt: allow 256-bit master keys with AES-256-XTS
        fscrypt: improve documentation for inline encryption
        fscrypt: clean up comments in bio.c
        fscrypt: remove fscrypt_operations::max_namelen
      cd3e8ea8
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/inode-sync-2021-10-29' of git://git.kernel.dk/linux-block · 19901165
      Linus Torvalds authored
      Pull block inode sync updates from Jens Axboe:
       "This contains improvements to how bdev inode syncing is handled,
        unifying the API"
      
      * tag 'for-5.16/inode-sync-2021-10-29' of git://git.kernel.dk/linux-block:
        block: simplify the block device syncing code
        ntfs3: use sync_blockdev_nowait
        fat: use sync_blockdev_nowait
        btrfs: use sync_blockdev
        xen-blkback: use sync_blockdev
        block: remove __sync_blockdev
        fs: remove __sync_filesystem
      19901165
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/ki_complete-2021-10-29' of git://git.kernel.dk/linux-block · b6773cdb
      Linus Torvalds authored
      Pull kiocb->ki_complete() cleanup from Jens Axboe:
       "This removes the res2 argument from kiocb->ki_complete().
      
        Only the USB gadget code used it, everybody else passes 0. The USB
        guys checked the user gadget code they could find, and everybody just
        uses res as expected for the async interface"
      
      * tag 'for-5.16/ki_complete-2021-10-29' of git://git.kernel.dk/linux-block:
        fs: get rid of the res2 iocb->ki_complete argument
        usb: remove res2 argument from gadget code completions
      b6773cdb
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/passthrough-flag-2021-10-29' of git://git.kernel.dk/linux-block · 71ae4262
      Linus Torvalds authored
      Pull QUEUE_FLAG_SCSI_PASSTHROUGH removal from Jens Axboe:
       "This contains a series leading to the removal of the
        QUEUE_FLAG_SCSI_PASSTHROUGH queue flag"
      
      * tag 'for-5.16/passthrough-flag-2021-10-29' of git://git.kernel.dk/linux-block:
        block: remove blk_{get,put}_request
        block: remove QUEUE_FLAG_SCSI_PASSTHROUGH
        block: remove the initialize_rq_fn blk_mq_ops method
        scsi: add a scsi_alloc_request helper
        bsg-lib: initialize the bsg_job in bsg_transport_sg_io_fn
        nfsd/blocklayout: use ->get_unique_id instead of sending SCSI commands
        sd: implement ->get_unique_id
        block: add a ->get_unique_id method
      71ae4262
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/cdrom-2021-10-29' of git://git.kernel.dk/linux-block · 737f1cd8
      Linus Torvalds authored
      Pull CDROM updates from Jens Axboe:
       "On behalf of Phillip, here are the CDROM updates for the 5.16-rc1
        merge window:
      
         - Add ioctl for improved media change detection (Lukas)
      
         - Reformat some documentation (Phillip)
      
         - Redundant variable removal (luo)"
      
      * tag 'for-5.16/cdrom-2021-10-29' of git://git.kernel.dk/linux-block:
        cdrom: Remove redundant variable and its assignment
        cdrom: docs: reformat table in Documentation/userspace-api/ioctl/cdrom.rst
        drivers/cdrom: improved ioctl for media change detection
      737f1cd8
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/scsi-ma-2021-10-29' of git://git.kernel.dk/linux-block · fcaec17b
      Linus Torvalds authored
      Pull SCSI multi-actuator support from Jens Axboe:
       "This adds SCSI support for the recently merged block multi-actuator
        support. Since this was sitting on top of the block tree, the SCSI
        side asked me to queue it up."
      
      * tag 'for-5.16/scsi-ma-2021-10-29' of git://git.kernel.dk/linux-block:
        doc: Fix typo in request queue sysfs documentation
        doc: document sysfs queue/independent_access_ranges attributes
        libata: support concurrent positioning ranges log
        scsi: sd: add concurrent positioning ranges support
      fcaec17b
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/bdev-size-2021-10-29' of git://git.kernel.dk/linux-block · 3f01727f
      Linus Torvalds authored
      Pull bdev size cleanups from Jens Axboe:
       "Clean up the bdev size handling with new bdev_nr_bytes() helper"
      
      * tag 'for-5.16/bdev-size-2021-10-29' of git://git.kernel.dk/linux-block: (34 commits)
        partitions/ibm: use bdev_nr_sectors instead of open coding it
        partitions/efi: use bdev_nr_bytes instead of open coding it
        block/ioctl: use bdev_nr_sectors and bdev_nr_bytes
        block: cache inode size in bdev
        udf: use sb_bdev_nr_blocks
        reiserfs: use sb_bdev_nr_blocks
        ntfs: use sb_bdev_nr_blocks
        jfs: use sb_bdev_nr_blocks
        ext4: use sb_bdev_nr_blocks
        block: add a sb_bdev_nr_blocks helper
        block: use bdev_nr_bytes instead of open coding it in blkdev_fallocate
        squashfs: use bdev_nr_bytes instead of open coding it
        reiserfs: use bdev_nr_bytes instead of open coding it
        pstore/blk: use bdev_nr_bytes instead of open coding it
        ntfs3: use bdev_nr_bytes instead of open coding it
        nilfs2: use bdev_nr_bytes instead of open coding it
        nfs/blocklayout: use bdev_nr_bytes instead of open coding it
        jfs: use bdev_nr_bytes instead of open coding it
        hfsplus: use bdev_nr_sectors instead of open coding it
        hfs: use bdev_nr_sectors instead of open coding it
        ...
      3f01727f
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/io_uring-2021-10-29' of git://git.kernel.dk/linux-block · 8d1f0177
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
       "Light on new features - basically just the hybrid mode support.
      
        Outside of that it's just fixes, cleanups, and performance
        improvements.
      
        In detail:
      
         - Add ring related information to the fdinfo output (Hao)
      
         - Hybrid async mode (Hao)
      
         - Support for batched issue on block (me)
      
         - sqe error trace improvement (me)
      
         - IOPOLL efficiency improvements (Pavel)
      
         - submit state cleanups and improvements (Pavel)
      
         - Completion side improvements (Pavel)
      
         - Drain improvements (Pavel)
      
         - Buffer selection cleanups (Pavel)
      
         - Fixed file node improvements (Pavel)
      
         - io-wq setup cancelation fix (Pavel)
      
         - Various other performance improvements and cleanups (Pavel)
      
         - Misc fixes (Arnd, Bixuan, Changcheng, Hao, me, Noah)"
      
      * tag 'for-5.16/io_uring-2021-10-29' of git://git.kernel.dk/linux-block: (97 commits)
        io-wq: remove worker to owner tw dependency
        io_uring: harder fdinfo sq/cq ring iterating
        io_uring: don't assign write hint in the read path
        io_uring: clusterise ki_flags access in rw_prep
        io_uring: kill unused param from io_file_supports_nowait
        io_uring: clean up timeout async_data allocation
        io_uring: don't try io-wq polling if not supported
        io_uring: check if opcode needs poll first on arming
        io_uring: clean iowq submit work cancellation
        io_uring: clean io_wq_submit_work()'s main loop
        io-wq: use helper for worker refcounting
        io_uring: implement async hybrid mode for pollable requests
        io_uring: Use ERR_CAST() instead of ERR_PTR(PTR_ERR())
        io_uring: split logic of force_nonblock
        io_uring: warning about unused-but-set parameter
        io_uring: inform block layer of how many requests we are submitting
        io_uring: simplify io_file_supports_nowait()
        io_uring: combine REQ_F_NOWAIT_{READ,WRITE} flags
        io_uring: arm poll for non-nowait files
        fs/io_uring: Prioritise checking faster conditions first in io_write
        ...
      8d1f0177