1. 02 Jul, 2021 4 commits
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 71bd9341
      Linus Torvalds authored
      Merge more updates from Andrew Morton:
       "190 patches.
      
        Subsystems affected by this patch series: mm (hugetlb, userfaultfd,
        vmscan, kconfig, proc, z3fold, zbud, ras, mempolicy, memblock,
        migration, thp, nommu, kconfig, madvise, memory-hotplug, zswap,
        zsmalloc, zram, cleanups, kfence, and hmm), procfs, sysctl, misc,
        core-kernel, lib, lz4, checkpatch, init, kprobes, nilfs2, hfs,
        signals, exec, kcov, selftests, compress/decompress, and ipc"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (190 commits)
        ipc/util.c: use binary search for max_idx
        ipc/sem.c: use READ_ONCE()/WRITE_ONCE() for use_global_lock
        ipc: use kmalloc for msg_queue and shmid_kernel
        ipc sem: use kvmalloc for sem_undo allocation
        lib/decompressors: remove set but not used variabled 'level'
        selftests/vm/pkeys: exercise x86 XSAVE init state
        selftests/vm/pkeys: refill shadow register after implicit kernel write
        selftests/vm/pkeys: handle negative sys_pkey_alloc() return code
        selftests/vm/pkeys: fix alloc_random_pkey() to make it really, really random
        kcov: add __no_sanitize_coverage to fix noinstr for all architectures
        exec: remove checks in __register_bimfmt()
        x86: signal: don't do sas_ss_reset() until we are certain that sigframe won't be abandoned
        hfsplus: report create_date to kstat.btime
        hfsplus: remove unnecessary oom message
        nilfs2: remove redundant continue statement in a while-loop
        kprobes: remove duplicated strong free_insn_page in x86 and s390
        init: print out unknown kernel parameters
        checkpatch: do not complain about positive return values starting with EPOLL
        checkpatch: improve the indented label test
        checkpatch: scripts/spdxcheck.py now requires python3
        ...
      71bd9341
    • Linus Torvalds's avatar
      Merge branch 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 3dbdb38e
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
      
       - cgroup.kill is added which implements atomic killing of the whole
         subtree.
      
         Down the line, this should be able to replace the multiple userland
         implementations of "keep killing till empty".
      
       - PSI can now be turned off at boot time to avoid overhead for
         configurations which don't care about PSI.
      
      * 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: make per-cgroup pressure stall tracking configurable
        cgroup: Fix kernel-doc
        cgroup: inline cgroup_task_freeze()
        tests/cgroup: test cgroup.kill
        tests/cgroup: move cg_wait_for(), cg_prepare_for_wait()
        tests/cgroup: use cgroup.kill in cg_killall()
        docs/cgroup: add entry for cgroup.kill
        cgroup: introduce cgroup.kill
      3dbdb38e
    • Linus Torvalds's avatar
      Merge branch 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu · e267992f
      Linus Torvalds authored
      Pull percpu updates from Dennis Zhou:
      
       - percpu chunk depopulation - depopulate backing pages for chunks with
         empty pages when we exceed a global threshold without those pages.
         This lets us reclaim a portion of memory that would previously be
         lost until the full chunk would be freed (possibly never).
      
       - memcg accounting cleanup - previously separate chunks were managed
         for normal allocations and __GFP_ACCOUNT allocations. These are now
         consolidated which cleans up the code quite a bit.
      
       - a few misc clean ups for clang warnings
      
      * 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu:
        percpu: optimize locking in pcpu_balance_workfn()
        percpu: initialize best_upa variable
        percpu: rework memcg accounting
        mm, memcg: introduce mem_cgroup_kmem_disabled()
        mm, memcg: mark cgroup_memory_nosocket, nokmem and noswap as __ro_after_init
        percpu: make symbol 'pcpu_free_slot' static
        percpu: implement partial chunk depopulation
        percpu: use pcpu_free_slot instead of pcpu_nr_slots - 1
        percpu: factor out pcpu_check_block_hint()
        percpu: split __pcpu_balance_workfn()
        percpu: fix a comment about the chunks ordering
      e267992f
    • Linus Torvalds's avatar
      Merge tag 'mips_5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · 19b43859
      Linus Torvalds authored
      Pull MIPS updates from Thomas Bogendoerfer:
      
       - add support for OpeneEmbed SOM9331 board
      
       - Ingenic fixes/improvments
      
       - other fixes and cleanups
      
      * tag 'mips_5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (39 commits)
        MIPS: Fix PKMAP with 32-bit MIPS huge page support
        MIPS: CI20: Add second percpu timer for SMP.
        MIPS: CI20: Reduce clocksource to 750 kHz.
        MIPS: Ingenic: Add MAC syscon nodes for Ingenic SoCs.
        dt-bindings: clock: Add documentation for MAC PHY control bindings.
        MIPS: X1830: Respect cell count of common properties.
        MIPS: set mips32r5 for virt extensions
        MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops
        MIPS: MT extensions are not available on MIPS32r1
        mips/kvm: Use BUG_ON instead of if condition followed by BUG
        MIPS: OCTEON: octeon-usb: Use devm_platform_get_and_ioremap_resource()
        MIPS: add PMD table accounting into MIPS'pmd_alloc_one
        MIPS: Loongson64: fix spelling of SPDX tag
        MIPS: ingenic: rs90: Add dedicated VRAM memory region
        MIPS: ingenic: gcw0: Set codec to cap-less mode for FM radio
        MIPS: ingenic: jz4780: Fix I2C nodes to match DT doc
        MIPS: ingenic: Select CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
        MIPS: Kconfig: ingenic: Ensure MACH_INGENIC_GENERIC selects all SoCs
        MIPS: cpu-probe: Fix FPU detection on Ingenic JZ4760(B)
        MIPS: boot: Support specifying UART port on Ingenic SoCs
        ...
      19b43859
  2. 01 Jul, 2021 36 commits
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · a32b344e
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "This is the bulk of pin control changes for the v5.14 kernel. Not so
        much going on. No core changes, just drivers.
      
        The most interesting would be that MIPS Ralink is migrating to pin
        control and we have some bindings but not yet code for the Apple M1
        pin controller.
      
        New drivers:
      
         - Last merge window we created a driver for the Ralink RT2880. We are
           now moving the Ralink SoC pin control drivers out of the MIPS
           architecture code and into the pin control subsystem. This concerns
           RT288X, MT7620, RT305X, RT3883 and MT7621.
      
         - Qualcomm SM6125 SoC pin control driver.
      
         - Qualcomm spmi-gpio support for PM7325.
      
         - Qualcomm spmi-mpp also handles PMI8994 (just a compatible string)
      
         - Mediatek MT8365 SoC pin controller.
      
         - New device HID for the AMD GPIO controller.
      
        Improvements:
      
         - Pin bias config support for a slew of Renesas pin controllers.
      
         - Incremental improvements and non-urgent bug fixes to the Renesas
           SoC drivers.
      
         - Implement irq_set_wake on the AMD pin controller so we can wake up
           from external pin events.
      
        Misc:
      
         - Devicetree bindings for the Apple M1 pin controller, we will
           probably see a proper driver for this soon as well"
      
      * tag 'pinctrl-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (54 commits)
        pinctrl: ralink: rt305x: add missing include
        pinctrl: stm32: check for IRQ MUX validity during alloc()
        pinctrl: zynqmp: some code cleanups
        drivers: qcom: pinctrl: Add pinctrl driver for sm6125
        dt-bindings: pinctrl: qcom: sm6125: Document SM6125 pinctrl driver
        dt-bindings: pinctrl: mcp23s08: add documentation for reset-gpios
        pinctrl: mcp23s08: Add optional reset GPIO
        pinctrl: mediatek: fix mode encoding
        pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq()
        pinctrl: bcm: Constify static pinmux_ops
        pinctrl: bcm: Constify static pinctrl_ops
        pinctrl: ralink: move RT288X SoC pinmux config into a new 'pinctrl-rt288x.c' file
        pinctrl: ralink: move MT7620 SoC pinmux config into a new 'pinctrl-mt7620.c' file
        pinctrl: ralink: move RT305X SoC pinmux config into a new 'pinctrl-rt305x.c' file
        pinctrl: ralink: move RT3883 SoC pinmux config into a new 'pinctrl-rt3883.c' file
        pinctrl: ralink: move MT7621 SoC pinmux config into a new 'pinctrl-mt7621.c' file
        pinctrl: ralink: move ralink architecture pinmux header into the driver
        pinctrl: single: config: enable the pin's input
        pinctrl: mtk: Fix mt8365 Kconfig dependency
        pinctrl: mcp23s08: fix race condition in irq handler
        ...
      a32b344e
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · e04360a2
      Linus Torvalds authored
      Pull rdma updates from Jason Gunthorpe:
       "This contains a replacement driver for Intel iWarp hardware. This new
        driver supports the old ethernet hardware and also newer chips that
        can do ROCE.
      
        Other than that, this contains the typical mix of patches:
      
         - Driver updates and cleanups for bnxt_re, cxgb4, mlx4, and mlx5
      
         - Many static checker driven code clean ups, including a wide
           refcount_t conversion
      
         - Several series for the hns driver, more HIP09 HW capabilities,
           migration to new HW register manipulators, and code cleanups
      
         - Minor fixes and improvements in srp, rts, and cm
      
         - Improvements throughout for sysfs related code to use
           DEVICE_ATTR_*, make the ib_port sysfs first-class, and overall use
           sysfs APIs properly
      
         - Intel's new irdma driver replacing i40iw
      
         - rxe general clean ups and Memory Window support"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (211 commits)
        RDMA/core: Always release restrack object
        RDMA/mlx5: Don't access NULL-cleared mpi pointer
        RDMA/irdma: Fix potential overflow expression in irdma_prm_get_pbles
        RDMA/irdma: Check contents of user-space irdma_mem_reg_req object
        RDMA/rxe: Missing unlock on error in get_srq_wqe()
        RDMA/cma: Fix rdma_resolve_route() memory leak
        RDMA/core/sa_query: Remove unused argument
        RDMA/cma: Fix incorrect Packet Lifetime calculation
        RDMA/cma: Protect RMW with qp_mutex
        RDMA/cma: Remove unnecessary INIT->INIT transition
        RDMA/hns: Add window selection field of congestion control
        RDMA/hfi1: Remove use of kmap()
        RDMA/irdma: Remove use of kmap()
        RDMA/bnxt_re: Fix uninitialized struct bit field rsvd1
        IB/isert: Align target max I/O size to initiator size
        RDMA/hns: Fix incorrect vlan enable bit in QPC
        MAINTAINERS: Update Broadcom RDMA maintainers
        RDMA/irdma: Use the queried port attributes
        RDMA/rxe: Fix redundant skb_put_zero
        RDMA/rxe: Fix extra copy in prepare_ack_packet
        ...
      e04360a2
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 514798d3
      Linus Torvalds authored
      Pull clk updates from Stephen Boyd:
       "This round has a diffstat dominated by Qualcomm clk drivers. Honestly
        though that's just a bunch of data so the diffstat reflects that.
        Looking beyond that there's just a bunch of updates all around in
        various clk drivers. Renesas and NXP (for i.MX) are two SoC vendors
        that have a lot of patches in here.
      
        Overall the driver changes look to be mostly enabling more clks and
        non-critical fixes that we could hold until the next merge window.
      
        I'm especially excited about the series from Arnd that graduates
        clkdev to be the only implementation of clk_get() and clk_put().
        That's a good step in the right direction to migreate eveerything over
        to the common clk framework. Now we don't have to worry about clkdev
        specific details, they're just part of the clk API now.
      
        Core:
         - clkdev is now the only option, i.e. clk_get()/clk_put() is
           implemented in only one place in the kernel instead of in
           drivers/clk/clkdev.c and in architectures that want their own
           implementation
      
        New Drivers:
         - Texas Instruments' LMK04832 Ultra Low-Noise JESD204B Compliant
           Clock Jitter Cleaner With Dual Loop PLLs
         - Qualcomm MDM9607 GCC
         - Qualcomm SC8180X display clks
         - Qualcomm SM6125 GCC
         - Qualcomm SM8250 CAMCC (camera)
         - Renesas RZ/G2L SoC
         - Hisilicon hi3559A SoC
      
        Updates:
         - Stop using clock-output-names in ST clk drivers (yay!)
         - Support secure mode of STM32MP1 SoCs
         - Improve clock support for Actions S500 SoC
         - duty cycle setting support on qcom clks
         - Add TI am33xx spread spectrum clock support
         - Use determine_rate() for the Amlogic pll ops instead of
           round_rate()
         - Restrict Amlogic gp0/1 and audio plls range on g12a/sm1
         - Improve Amlogic axg-audio controller error on deferral
         - Add NNA clocks on Amlogic g12a
         - Reduce memory footprint of Rockchip PLL rate tables
         - A fix for the newly added Rockchip rk3568 clk driver
         - Exported clock for the newly added Rockchip video decoder
         - Remove audio ipg clock from i.MX8MP
         - Remove deprecated legacy clock binding for i.MX SCU clock driver
         - Use common clk-imx8qxp for both i.MX8QXP and i.MX8QM
         - Add multiple clocks to clk-imx8qxp driver (enet, hdmi, lcdif,
           audio, parallel interface)
         - Add dedicated clock ops for i.MX paralel interface
         - Different fixes for clocks controlled by ATF on i.MX SoCs
         - Add A53/A72 frequency scaling support i.MX clk-scu driver
         - Add special case for DCSS clock on suspend for i.MX clk-scu driver
         - Add parent save/restore on suspend/resume to i.MX clk-scu driver
         - Skip runtime PM enablement for CPU clocks in i.MX clk-scu driver
         - Remove the sys1_pll/sys2_pll clock gates for i.MX8MQ and their
           bindings
         - Tegra clk driver no longer deasserts resets on clk_enable as it
           gets in the way of certain power-up sequences
         - Fix compile testing for Tegra clk driver
         - One patch to fix a divider on the Allwinner v3s Audio PLL
         - Add support for CPU core clock boost modes on Renesas R-Car Gen3
         - Add ISPCS (Image Signal Processor) clocks on Renesas R-Car V3U
         - Switch SH/R-Mobile and R-Car "DIV6" clocks to .determine_rate() and
           improve support for multiple parents
         - Switch Renesas RZ/N1 divider clocks to .determine_rate()
         - Add ZA2 (Audio Clock Generator) clock on Renesas R-Car D3
         - Convert ar7 to common clk framework
         - Convert ralink to common clk framework"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (161 commits)
        clk: zynqmp: Handle divider specific read only flag
        clk: zynqmp: Use firmware specific mux clock flags
        clk: zynqmp: Use firmware specific divider clock flags
        clk: zynqmp: Use firmware specific common clock flags
        clk: lmk04832: Use of match table
        clk: lmk04832: Depend on SPI
        clk: stm32mp1: new compatible for secure RCC support
        dt-bindings: clock: stm32mp1 new compatible for secure rcc
        dt-bindings: reset: add MCU HOLD BOOT ID for SCMI reset domains on stm32mp15
        dt-bindings: reset: add IDs for SCMI reset domains on stm32mp15
        dt-bindings: clock: add IDs for SCMI clocks on stm32mp15
        reset: stm32mp1: remove stm32mp1 reset
        clk: hisilicon: Add clock driver for hi3559A SoC
        dt-bindings: Document the hi3559a clock bindings
        clk: si5341: Add sysfs properties to allow checking/resetting device faults
        clk: si5341: Add silabs,iovdd-33 property
        clk: si5341: Add silabs,xaxb-ext-clk property
        clk: si5341: Allow different output VDD_SEL values
        clk: si5341: Update initialization magic
        clk: si5341: Check for input clock presence and PLL lock on startup
        ...
      514798d3
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2021-07-01' of git://anongit.freedesktop.org/drm/drm · e058a84b
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "Highlights:
      
         - AMD enables two more GPUs, with resulting header files
      
         - i915 has started to move to TTM for discrete GPU and enable DG1
           discrete GPU support (not by default yet)
      
         - new HyperV drm driver
      
         - vmwgfx adds arm64 support
      
         - TTM refactoring ongoing
      
         - 16bpc display support for AMD hw
      
        Otherwise it's just the usual insane amounts of work all over the
        place in lots of drivers and the core, as mostly summarised below:
      
        Core:
         - mark AGP ioctls as legacy
         - disable force probing for non-master clients
         - HDR metadata property helpers
         - HDMI infoframe signal colorimetry support
         - remove drm_device.pdev pointer
         - remove DRM_KMS_FB_HELPER config option
         - remove drm_pci_alloc/free
         - drm_err_*/drm_dbg_* helpers
         - use drm driver names for fbdev
         - leaked DMA handle fix
         - 16bpc fixed point format fourcc
         - add prefetching memcpy for WC
         - Documentation fixes
      
        aperture:
         - add aperture ownership helpers
      
        dp:
         - aux fixes
         - downstream 0 port handling
         - use extended base receiver capability DPCD
         - Rename DP_PSR_SELECTIVE_UPDATE to better mach eDP spec
         - mst: use khz as link rate during init
         - VCPI fixes for StarTech hub
      
        ttm:
         - provide tt_shrink file via debugfs
         - warn about freeing pinned BOs
         - fix swapping error handling
         - move page alignment into BO
         - cleanup ttm_agp_backend
         - add ttm_sys_manager
         - don't override vm_ops
         - ttm_bo_mmap removed
         - make ttm_resource base of all managers
         - remove VM_MIXEDMAP usage
      
        panel:
         - sysfs_emit support
         - simple: runtime PM support
         - simple: power up panel when reading EDID + caching
      
        bridge:
         - MHDP8546: HDCP support + DT bindings
         - MHDP8546: Register DP AUX channel with userspace
         - TI SN65DSI83 + SN65DSI84: add driver
         - Sil8620: Fix module dependencies
         - dw-hdmi: make CEC driver loading optional
         - Ti-sn65dsi86: refclk fixes, subdrivers, runtime pm
         - It66121: Add driver + DT bindings
         - Adv7511: Support I2S IEC958 encoding
         - Anx7625: fix power-on delay
         - Nwi-dsi: Modesetting fixes; Cleanups
         - lt6911: add missing MODULE_DEVICE_TABLE
         - cdns: fix PM reference leak
      
        hyperv:
         - add new DRM driver for HyperV graphics
      
        efifb:
         - non-PCI device handling fixes
      
        i915:
         - refactor IP/device versioning
         - XeLPD Display IP preperation work
         - ADL-P enablement patches
         - DG1 uAPI behind BROKEN
         - disable mmap ioctl for discerte GPUs
         - start enabling HuC loading for Gen12+
         - major GuC backend rework for new platforms
         - initial TTM support for Discrete GPUs
         - locking rework for TTM prep
         - use correct max source link rate for eDP
         - %p4cc format printing
         - GLK display fixes
         - VLV DSI panel power fixes
         - PSR2 disabled for RKL and ADL-S
         - ACPI _DSM invalid access fixed
         - DMC FW path abstraction
         - ADL-S PCI ID update
         - uAPI headers converted to kerneldoc
         - initial LMEM support for DG1
         - x86/gpu: add Jasperlake to gen11 early quirks
      
        amdgpu:
         - Aldebaran updates + initial SR-IOV
         - new GPU: Beige Goby and Yellow Carp support
         - more LTTPR display work
         - Vangogh updates
         - SDMA 5.x GCR fixes
         - PCIe ASPM support
         - Renoir TMZ enablement
         - initial multiple eDP panel support
         - use fdinfo to track devices/process info
         - pin/unpin TTM fixes
         - free resource on fence usage query
         - fix fence calculation
         - fix hotunplug/suspend issues
         - GC/MM register access macro cleanup for SR-IOV
         - W=1 fixes
         - ACPI ATCS/ATIF handling rework
         - 16bpc fixed point format support
         - Initial smartshift support
         - RV/PCO power tuning fixes
         - new INFO query for additional vbios info
      
        amdkfd:
         - SR-IOV aldebaran support
         - HMM SVM support
      
        radeon:
         - SMU regression fixes
         - Oland flickering fix
      
        vmwgfx:
         - enable console with fbdev emulation
         - fix cpu updates of coherent multisample surfaces
         - remove reservation semaphore
         - add initial SVGA3 support
         - support arm64
      
        msm:
         - devcoredump support for display errors
         - dpu/dsi: yaml bindings conversion
         - mdp5: alpha/blend_mode/zpos support
         - a6xx: cached coherent buffer support
         - gpu iova fault improvement
         - a660 support
      
        rockchip:
         - RK3036 win1 scaling support
         - RK3066/3188 missing register support
         - RK3036/3066/3126/3188 alpha support
      
        mediatek:
         - MT8167 HDMI support
         - MT8183 DPI dual edge support
      
        tegra:
         - fixed YUV support/scaling on Tegra186+
      
        ast:
         - use pcim_iomap
         - fix DP501 EDID
      
        bochs:
         - screen blanking support
      
        etnaviv:
         - export more GPU ID values to userspace
         - add HWDB entry for GPU on i.MX8MP
         - rework linear window calcs
      
        exynos:
         - pm runtime changes
      
        imx:
         - Annotate dma_fence critical section
         - fix PRG modifiers after drmm conversion
         - Add 8 pixel alignment fix for 1366x768
         - fix YUV advertising
         - add color properties
      
        ingenic:
         - IPU planes fix
      
        panfrost:
         - Mediatek MT8183 support + DT bindings
         - export AFBC_FEATURES register to userspace
      
        simpledrm:
         - %pr for printing resources
      
        nouveau:
         - pin/unpin TTM fixes
      
        qxl:
         - unpin shadow BO
      
        virtio:
         - create dumb BOs as guest blob
      
        vkms:
         - drmm_universal_plane_alloc
         - add XRGB plane composition
         - overlay support"
      
      * tag 'drm-next-2021-07-01' of git://anongit.freedesktop.org/drm/drm: (1570 commits)
        drm/i915: Reinstate the mmap ioctl for some platforms
        drm/i915/dsc: abstract helpers to get bigjoiner primary/secondary crtc
        Revert "drm/msm/mdp5: provide dynamic bandwidth management"
        drm/msm/mdp5: provide dynamic bandwidth management
        drm/msm/mdp5: add perf blocks for holding fudge factors
        drm/msm/mdp5: switch to standard zpos property
        drm/msm/mdp5: add support for alpha/blend_mode properties
        drm/msm/mdp5: use drm_plane_state for pixel blend mode
        drm/msm/mdp5: use drm_plane_state for storing alpha value
        drm/msm/mdp5: use drm atomic helpers to handle base drm plane state
        drm/msm/dsi: do not enable PHYs when called for the slave DSI interface
        drm/msm: Add debugfs to trigger shrinker
        drm/msm/dpu: Avoid ABBA deadlock between IRQ modules
        drm/msm: devcoredump iommu fault support
        iommu/arm-smmu-qcom: Add stall support
        drm/msm: Improve the a6xx page fault handler
        iommu/arm-smmu-qcom: Add an adreno-smmu-priv callback to get pagefault info
        iommu/arm-smmu: Add support for driver IOMMU fault handlers
        drm/msm: export hangcheck_period in debugfs
        drm/msm/a6xx: add support for Adreno 660 GPU
        ...
      e058a84b
    • Linus Torvalds's avatar
      Merge tag 'for-5.14/io_uring-2021-06-30' of git://git.kernel.dk/linux-block · c288d9cd
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
      
       - Multi-queue iopoll improvement (Fam)
      
       - Allow configurable io-wq CPU masks (me)
      
       - renameat/linkat tightening (me)
      
       - poll re-arm improvement (Olivier)
      
       - SQPOLL race fix (Olivier)
      
       - Cancelation unification (Pavel)
      
       - SQPOLL cleanups (Pavel)
      
       - Enable file backed buffers for shmem/memfd (Pavel)
      
       - A ton of cleanups and performance improvements (Pavel)
      
       - Followup and misc fixes (Colin, Fam, Hao, Olivier)
      
      * tag 'for-5.14/io_uring-2021-06-30' of git://git.kernel.dk/linux-block: (83 commits)
        io_uring: code clean for kiocb_done()
        io_uring: spin in iopoll() only when reqs are in a single queue
        io_uring: pre-initialise some of req fields
        io_uring: refactor io_submit_flush_completions
        io_uring: optimise hot path restricted checks
        io_uring: remove not needed PF_EXITING check
        io_uring: mainstream sqpoll task_work running
        io_uring: refactor io_arm_poll_handler()
        io_uring: reduce latency by reissueing the operation
        io_uring: add IOPOLL and reserved field checks to IORING_OP_UNLINKAT
        io_uring: add IOPOLL and reserved field checks to IORING_OP_RENAMEAT
        io_uring: refactor io_openat2()
        io_uring: simplify struct io_uring_sqe layout
        io_uring: update sqe layout build checks
        io_uring: fix code style problems
        io_uring: refactor io_sq_thread()
        io_uring: don't change sqpoll creds if not needed
        io_uring: Create define to modify a SQPOLL parameter
        io_uring: Fix race condition when sqp thread goes to sleep
        io_uring: improve in tctx_task_work() resubmission
        ...
      c288d9cd
    • Linus Torvalds's avatar
      Merge tag 'fs_for_v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · 911a2997
      Linus Torvalds authored
      Pull misc fs updates from Jan Kara:
       "The new quotactl_fd() syscall (remake of quotactl_path() syscall that
        got introduced & disabled in 5.13 cycle), and couple of udf, reiserfs,
        isofs, and writeback fixes and cleanups"
      
      * tag 'fs_for_v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        writeback: fix obtain a reference to a freeing memcg css
        quota: remove unnecessary oom message
        isofs: remove redundant continue statement
        quota: Wire up quotactl_fd syscall
        quota: Change quotactl_path() systcall to an fd-based one
        reiserfs: Remove unneed check in reiserfs_write_full_page()
        udf: Fix NULL pointer dereference in udf_symlink function
        reiserfs: add check for invalid 1st journal block
      911a2997
    • Manfred Spraul's avatar
      ipc/util.c: use binary search for max_idx · b869d5be
      Manfred Spraul authored
      If semctl(), msgctl() and shmctl() are called with IPC_INFO, SEM_INFO,
      MSG_INFO or SHM_INFO, then the return value is the index of the highest
      used index in the kernel's internal array recording information about all
      SysV objects of the requested type for the current namespace.  (This
      information can be used with repeated ..._STAT or ..._STAT_ANY operations
      to obtain information about all SysV objects on the system.)
      
      There is a cache for this value.  But when the cache needs up be updated,
      then the highest used index is determined by looping over all possible
      values.  With the introduction of IPCMNI_EXTEND_SHIFT, this could be a
      loop over 16 million entries.  And due to /proc/sys/kernel/*next_id, the
      index values do not need to be consecutive.
      
      With <write 16000000 to msg_next_id>, msgget(), msgctl(,IPC_RMID) in a
      loop, I have observed a performance increase of around factor 13000.
      
      As there is no get_last() function for idr structures: Implement a
      "get_last()" using a binary search.
      
      As far as I see, ipc is the only user that needs get_last(), thus
      implement it in ipc/util.c and not in a central location.
      
      [akpm@linux-foundation.org: tweak comment, fix typo]
      
      Link: https://lkml.kernel.org/r/20210425075208.11777-2-manfred@colorfullife.comSigned-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
      Acked-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Cc: <1vier1@web.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b869d5be
    • Manfred Spraul's avatar
      ipc/sem.c: use READ_ONCE()/WRITE_ONCE() for use_global_lock · 17d056e0
      Manfred Spraul authored
      The patch solves three weaknesses in ipc/sem.c:
      
      1) The initial read of use_global_lock in sem_lock() is an intentional
         race.  KCSAN detects these accesses and prints a warning.
      
      2) The code assumes that plain C read/writes are not mangled by the CPU
         or the compiler.
      
      3) The comment it sysvipc_sem_proc_show() was hard to understand: The
         rest of the comments in ipc/sem.c speaks about sem_perm.lock, and
         suddenly this function speaks about ipc_lock_object().
      
      To solve 1) and 2), use READ_ONCE()/WRITE_ONCE().  Plain C reads are used
      in code that owns sma->sem_perm.lock.
      
      The comment is updated to solve 3)
      
      [manfred@colorfullife.com: use READ_ONCE()/WRITE_ONCE() for use_global_lock]
        Link: https://lkml.kernel.org/r/20210627161919.3196-3-manfred@colorfullife.com
      
      Link: https://lkml.kernel.org/r/20210514175319.12195-1-manfred@colorfullife.comSigned-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
      Reviewed-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      Reviewed-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Cc: <1vier1@web.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      17d056e0
    • Vasily Averin's avatar
      ipc: use kmalloc for msg_queue and shmid_kernel · bc8136a5
      Vasily Averin authored
      msg_queue and shmid_kernel are quite small objects, no need to use
      kvmalloc for them.  mhocko@: "Both of them are 256B on most 64b systems."
      
      Previously these objects was allocated via ipc_alloc/ipc_rcu_alloc(),
      common function for several ipc objects.  It had kvmalloc call inside().
      Later, this function went away and was finally replaced by direct kvmalloc
      call, and now we can use more suitable kmalloc/kfree for them.
      
      Link: https://lkml.kernel.org/r/0d0b6c9b-8af3-29d8-34e2-a565c53780f3@virtuozzo.comReported-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarVasily Averin <vvs@virtuozzo.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
      Acked-by: default avatarRoman Gushchin <guro@fb.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
      Cc: Dmitry Safonov <0x7f454c46@gmail.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bc8136a5
    • Vasily Averin's avatar
      ipc sem: use kvmalloc for sem_undo allocation · fc37a3b8
      Vasily Averin authored
      Patch series "ipc: allocations cleanup", v2.
      
      Some ipc objects use the wrong allocation functions: small objects can use
      kmalloc(), and vice versa, potentially large objects can use kmalloc().
      
      This patch (of 2):
      
      Size of sem_undo can exceed one page and with the maximum possible nsems =
      32000 it can grow up to 64Kb.  Let's switch its allocation to kvmalloc to
      avoid user-triggered disruptive actions like OOM killer in case of
      high-order memory shortage.
      
      User triggerable high order allocations are quite a problem on heavily
      fragmented systems.  They can be a DoS vector.
      
      Link: https://lkml.kernel.org/r/ebc3ac79-3190-520d-81ce-22ad194986ec@virtuozzo.com
      Link: https://lkml.kernel.org/r/a6354fd9-2d55-2e63-dd4d-fa7dc1d11134@virtuozzo.comSigned-off-by: default avatarVasily Averin <vvs@virtuozzo.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
      Acked-by: default avatarRoman Gushchin <guro@fb.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Dmitry Safonov <0x7f454c46@gmail.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fc37a3b8
    • Yu Kuai's avatar
      lib/decompressors: remove set but not used variabled 'level' · 3b523483
      Yu Kuai authored
      Fixes gcc '-Wunused-but-set-variable' warning:
      
      lib/decompress_unlzo.c:46:5: warning: variable `level' set but
      not used [-Wunused-but-set-variable]
      
      It is never used and so can be removed.
      
      [akpm@linux-foundation.org: warning: value computed is not used]
      
      Link: https://lkml.kernel.org/r/20210514062050.3532344-1-yukuai3@huawei.com
      Fixes: 7dd65feb ("lib: add support for LZO-compressed kernels")
      Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3b523483
    • Dave Hansen's avatar
      selftests/vm/pkeys: exercise x86 XSAVE init state · d892454b
      Dave Hansen authored
      On x86, there is a set of instructions used to save and restore register
      state collectively known as the XSAVE architecture.  There are about a
      dozen different features managed with XSAVE.  The protection keys
      register, PKRU, is one of those features.
      
      The hardware optimizes XSAVE by tracking when the state has not changed
      from its initial (init) state.  In this case, it can avoid the cost of
      writing state to memory (it would usually just be a bunch of 0's).
      
      When the pkey register is 0x0 the hardware optionally choose to track the
      register as being in the init state (optimize away the writes).  AMD CPUs
      do this more aggressively compared to Intel.
      
      On x86, PKRU is rarely in its (very permissive) init state.  Instead, the
      value defaults to something very restrictive.  It is not surprising that
      bugs have popped up in the rare cases when PKRU reaches its init state.
      
      Add a protection key selftest which gets the protection keys register into
      its init state in a way that should work on Intel and AMD.  Then, do a
      bunch of pkey register reads to watch for inadvertent changes.
      
      This adds "-mxsave" to CFLAGS for all the x86 vm selftests in order to
      allow use of the XSAVE instruction __builtin functions.  This will make
      the builtins available on all of the vm selftests, but is expected to be
      harmless.
      
      Link: https://lkml.kernel.org/r/20210611164202.1849B712@viggo.jf.intel.comSigned-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Cc: Ram Pai <linuxram@us.ibm.com>
      Cc: Sandipan Das <sandipan@linux.ibm.com>
      Cc: Florian Weimer <fweimer@redhat.com>
      Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Michal Suchanek <msuchanek@suse.de>
      Cc: Shuah Khan <shuah@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d892454b
    • Dave Hansen's avatar
      selftests/vm/pkeys: refill shadow register after implicit kernel write · 6039ca25
      Dave Hansen authored
      The pkey test code keeps a "shadow" of the pkey register around.  This
      ensures that any bugs which might write to the register can be caught more
      quickly.
      
      Generally, userspace has a good idea when the kernel is going to write to
      the register.  For instance, alloc_pkey() is passed a permission mask.
      The caller of alloc_pkey() can update the shadow based on the return value
      and the mask.
      
      But, the kernel can also modify the pkey register in a more sneaky way.
      For mprotect(PROT_EXEC) mappings, the kernel will allocate a pkey and
      write the pkey register to create an execute-only mapping.  The kernel
      never tells userspace what key it uses for this.
      
      This can cause the test to fail with messages like:
      
      	protection_keys_64.2: pkey-helpers.h:132: _read_pkey_reg: Assertion `pkey_reg == shadow_pkey_reg' failed.
      
      because the shadow was not updated with the new kernel-set value.
      
      Forcibly update the shadow value immediately after an mprotect().
      
      Link: https://lkml.kernel.org/r/20210611164200.EF76AB73@viggo.jf.intel.com
      Fixes: 6af17cf8 ("x86/pkeys/selftests: Add PROT_EXEC test")
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Cc: Ram Pai <linuxram@us.ibm.com>
      Cc: Sandipan Das <sandipan@linux.ibm.com>
      Cc: Florian Weimer <fweimer@redhat.com>
      Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Michal Suchanek <msuchanek@suse.de>
      Cc: Shuah Khan <shuah@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6039ca25
    • Dave Hansen's avatar
      selftests/vm/pkeys: handle negative sys_pkey_alloc() return code · bf68294a
      Dave Hansen authored
      The alloc_pkey() sefltest function wraps the sys_pkey_alloc() system call.
      On success, it updates its "shadow" register value because
      sys_pkey_alloc() updates the real register.
      
      But, the success check is wrong.  pkey_alloc() considers any non-zero
      return code to indicate success where the pkey register will be modified.
      This fails to take negative return codes into account.
      
      Consider only a positive return value as a successful call.
      
      Link: https://lkml.kernel.org/r/20210611164157.87AB4246@viggo.jf.intel.com
      Fixes: 5f23f6d0 ("x86/pkeys: Add self-tests")
      Reported-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Tested-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Cc: Ram Pai <linuxram@us.ibm.com>
      Cc: Sandipan Das <sandipan@linux.ibm.com>
      Cc: Florian Weimer <fweimer@redhat.com>
      Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Michal Suchanek <msuchanek@suse.de>
      Cc: Shuah Khan <shuah@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bf68294a
    • Dave Hansen's avatar
      selftests/vm/pkeys: fix alloc_random_pkey() to make it really, really random · f36ef407
      Dave Hansen authored
      Patch series "selftests/vm/pkeys: Bug fixes and a new test".
      
      There has been a lot of activity on the x86 front around the XSAVE
      architecture which is used to context-switch processor state (among other
      things).  In addition, AMD has recently joined the protection keys club by
      adding processor support for PKU.
      
      The AMD implementation helped uncover a kernel bug around the PKRU "init
      state", which actually applied to Intel's implementation but was just
      harder to hit.  This series adds a test which is expected to help find
      this class of bug both on AMD and Intel.  All the work around pkeys on x86
      also uncovered a few bugs in the selftest.
      
      This patch (of 4):
      
      The "random" pkey allocation code currently does the good old:
      
      	srand((unsigned int)time(NULL));
      
      *But*, it unfortunately does this on every random pkey allocation.
      
      There may be thousands of these a second.  time() has a one second
      resolution.  So, each time alloc_random_pkey() is called, the PRNG is
      *RESET* to time().  This is nasty.  Normally, if you do:
      
      	srand(<ANYTHING>);
      	foo = rand();
      	bar = rand();
      
      You'll be quite guaranteed that 'foo' and 'bar' are different.  But, if
      you do:
      
      	srand(1);
      	foo = rand();
      	srand(1);
      	bar = rand();
      
      You are quite guaranteed that 'foo' and 'bar' are the *SAME*.  The recent
      "fix" effectively forced the test case to use the same "random" pkey for
      the whole test, unless the test run crossed a second boundary.
      
      Only run srand() once at program startup.
      
      This explains some very odd and persistent test failures I've been seeing.
      
      Link: https://lkml.kernel.org/r/20210611164153.91B76FB8@viggo.jf.intel.com
      Link: https://lkml.kernel.org/r/20210611164155.192D00FF@viggo.jf.intel.com
      Fixes: 6e373263 ("selftests/vm/pkeys: fix alloc_random_pkey() to make it really random")
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Cc: Ram Pai <linuxram@us.ibm.com>
      Cc: Sandipan Das <sandipan@linux.ibm.com>
      Cc: Florian Weimer <fweimer@redhat.com>
      Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Michal Suchanek <msuchanek@suse.de>
      Cc: Shuah Khan <shuah@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f36ef407
    • Marco Elver's avatar
      kcov: add __no_sanitize_coverage to fix noinstr for all architectures · 540540d0
      Marco Elver authored
      Until now no compiler supported an attribute to disable coverage
      instrumentation as used by KCOV.
      
      To work around this limitation on x86, noinstr functions have their
      coverage instrumentation turned into nops by objtool.  However, this
      solution doesn't scale automatically to other architectures, such as
      arm64, which are migrating to use the generic entry code.
      
      Clang [1] and GCC [2] have added support for the attribute recently.
      [1] https://github.com/llvm/llvm-project/commit/280333021e9550d80f5c1152a34e33e81df1e178
      [2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=cec4d4a6782c9bd8d071839c50a239c49caca689
      The changes will appear in Clang 13 and GCC 12.
      
      Add __no_sanitize_coverage for both compilers, and add it to noinstr.
      
      Note: In the Clang case, __has_feature(coverage_sanitizer) is only true if
      the feature is enabled, and therefore we do not require an additional
      defined(CONFIG_KCOV) (like in the GCC case where __has_attribute(..) is
      always true) to avoid adding redundant attributes to functions if KCOV is
      off.  That being said, compilers that support the attribute will not
      generate errors/warnings if the attribute is redundantly used; however,
      where possible let's avoid it as it reduces preprocessed code size and
      associated compile-time overheads.
      
      [elver@google.com: Implement __has_feature(coverage_sanitizer) in Clang]
        Link: https://lkml.kernel.org/r/20210527162655.3246381-1-elver@google.com
      [elver@google.com: add comment explaining __has_feature() in Clang]
        Link: https://lkml.kernel.org/r/20210527194448.3470080-1-elver@google.com
      
      Link: https://lkml.kernel.org/r/20210525175819.699786-1-elver@google.comSigned-off-by: default avatarMarco Elver <elver@google.com>
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: Ard Biesheuvel <ardb@kernel.org>
      Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
      Cc: Arvind Sankar <nivedita@alum.mit.edu>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Cc: Sami Tolvanen <samitolvanen@google.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      540540d0
    • Alexey Dobriyan's avatar
      exec: remove checks in __register_bimfmt() · bae7702a
      Alexey Dobriyan authored
      Delete NULL check, all callers pass valid pointer.
      
      Delete ->load_binary check -- failure to provide hook in a custom module
      will be very noticeable at the very first execve call.
      
      Link: https://lkml.kernel.org/r/YK1Gy1qXaLAR+tPl@localhost.localdomainSigned-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bae7702a
    • Al Viro's avatar
      x86: signal: don't do sas_ss_reset() until we are certain that sigframe won't be abandoned · 97c885d5
      Al Viro authored
      Currently we handle SS_AUTODISARM as soon as we have stored the altstack
      settings into sigframe - that's the point when we have set the things up
      for eventual sigreturn to restore the old settings.  And if we manage to
      set the sigframe up (we are not done with that yet), everything's fine.
      However, in case of failure we end up with sigframe-to-be abandoned and
      SIGSEGV force-delivered.  And in that case we end up with inconsistent
      rules - late failures have altstack reset, early ones do not.
      
      It's trivial to get consistent behaviour - just handle SS_AUTODISARM once
      we have set the sigframe up and are committed to entering the handler,
      i.e.  in signal_delivered().
      
      Link: https://lore.kernel.org/lkml/20200404170604.GN23230@ZenIV.linux.org.uk/
      Link: https://github.com/ClangBuiltLinux/linux/issues/876
      Link: https://lkml.kernel.org/r/20210422230846.1756380-1-ndesaulniers@google.comSigned-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
      Tested-by: default avatarNathan Chancellor <natechancellor@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97c885d5
    • Chung-Chiang Cheng's avatar
      hfsplus: report create_date to kstat.btime · c3eb8409
      Chung-Chiang Cheng authored
      The create_date field of inode in hfsplus is corresponding to
      kstat.btime and could be reported in statx.
      
      Link: https://lkml.kernel.org/r/20210416172147.8736-1-cccheng@synology.comSigned-off-by: default avatarChung-Chiang Cheng <cccheng@synology.com>
      Reviewed-by: default avatarViacheslav Dubeyko <slava@dubeyko.com>
      Cc: Christian Brauner <christian.brauner@ubuntu.com>
      Cc: James Morris <jamorris@linux.microsoft.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c3eb8409
    • Zhen Lei's avatar
      hfsplus: remove unnecessary oom message · 7dcae11f
      Zhen Lei authored
      Fixes scripts/checkpatch.pl warning:
      WARNING: Possible unnecessary 'out of memory' message
      
      Remove it can help us save a bit of memory.
      
      Link: https://lkml.kernel.org/r/20210617084944.1279-1-thunder.leizhen@huawei.comSigned-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7dcae11f
    • Colin Ian King's avatar
    • Barry Song's avatar
      kprobes: remove duplicated strong free_insn_page in x86 and s390 · 66ce7514
      Barry Song authored
      free_insn_page() in x86 and s390 is same with the common weak function in
      kernel/kprobes.c.  Plus, the comment "Recover page to RW mode before
      releasing it" in x86 seems insensible to be there since resetting mapping
      is done by common code in vfree() of module_memfree().  So drop these two
      duplicated strong functions and related comment, then mark the common one
      in kernel/kprobes.c strong.
      
      Link: https://lkml.kernel.org/r/20210608065736.32656-1-song.bao.hua@hisilicon.comSigned-off-by: default avatarBarry Song <song.bao.hua@hisilicon.com>
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
      Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Qi Liu <liuqi115@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      66ce7514
    • Andrew Halaney's avatar
      init: print out unknown kernel parameters · 86d1919a
      Andrew Halaney authored
      It is easy to foobar setting a kernel parameter on the command line
      without realizing it, there's not much output that you can use to assess
      what the kernel did with that parameter by default.
      
      Make it a little more explicit which parameters on the command line
      _looked_ like a valid parameter for the kernel, but did not match anything
      and ultimately got tossed to init.  This is very similar to the unknown
      parameter message received when loading a module.
      
      This assumes the parameters are processed in a normal fashion, some
      parameters (dyndbg= for example) don't register their parameter with the
      rest of the kernel's parameters, and therefore always show up in this list
      (and are also given to init - like the rest of this list).
      
      Another example is BOOT_IMAGE= is highlighted as an offender, which it
      technically is, but is passed by LILO and GRUB so most systems will see
      that complaint.
      
      An example output where "foobared" and "unrecognized" are intentionally
      invalid parameters:
      
        Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.12-dirty debug log_buf_len=4M foobared unrecognized=foo
        Unknown command line parameters: foobared BOOT_IMAGE=/boot/vmlinuz-5.12-dirty unrecognized=foo
      
      Link: https://lkml.kernel.org/r/20210511211009.42259-1-ahalaney@redhat.comSigned-off-by: default avatarAndrew Halaney <ahalaney@redhat.com>
      Suggested-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Suggested-by: default avatarBorislav Petkov <bp@suse.de>
      Acked-by: default avatarBorislav Petkov <bp@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      86d1919a
    • Guenter Roeck's avatar
      checkpatch: do not complain about positive return values starting with EPOLL · 46b85bf9
      Guenter Roeck authored
      checkpatch complains about positive return values of poll functions.
      Example:
      
      WARNING: return of an errno should typically be negative (ie: return -EPOLLIN)
      +		return EPOLLIN;
      
      Poll functions return positive values.  The defines for the return values
      of poll functions all start with EPOLL, resulting in a number of false
      positives.  An often used workaround is to assign poll function return
      values to variables and returning that variable, but that is a less than
      perfect solution.
      
      There is no error definition which starts with EPOLL, so it is safe to
      omit the warning for return values starting with EPOLL.
      
      Link: https://lkml.kernel.org/r/20210622004334.638680-1-linux@roeck-us.netSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJoe Perches <joe@perches.com>
      Cc: Ricardo Ribalda <ribalda@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      46b85bf9
    • Joe Perches's avatar
      checkpatch: improve the indented label test · 69078651
      Joe Perches authored
      checkpatch identifies a label only when a terminating colon
      immediately follows an identifier.
      
      Bitfield definitions can appear to be labels so ignore any
      spaces between the identifier terminating colon and any digit
      that may be used to define a bitfield length.
      
      Miscellanea:
      
      o Improve the initial checkpatch comment
      o Use the more typical '&&' instead of 'and'
      o Require the initial label character to be a non-digit
        (Can't use $Ident here because $Ident allows ## concatenation)
      o Use $sline instead of $line to ignore comments
      o Use '$sline !~ /.../' instead of '!($line =~ /.../)'
      
      Link: https://lkml.kernel.org/r/b54d673e7cde7de5de0c9ba4dd57dd0858580ca4.camel@perches.comSigned-off-by: default avatarJoe Perches <joe@perches.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Manikishan Ghantasala <manikishanghantasala@gmail.com>
      Cc: Alex Elder <elder@ieee.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      69078651
    • Guenter Roeck's avatar
      checkpatch: scripts/spdxcheck.py now requires python3 · f9363b31
      Guenter Roeck authored
      Since commit d0259c42 ("spdxcheck.py: Use Python 3"), spdxcheck.py
      explicitly expects to run as python3 script.  If "python" still points to
      python v2.7 and the script is executed with "python scripts/spdxcheck.py",
      the following error may be seen even if git-python is installed for
      python3.
      
      Traceback (most recent call last):
        File "scripts/spdxcheck.py", line 10, in <module>
          import git
      ImportError: No module named git
      
      To fix the problem, check for the existence of python3, check if
      the script is executable and not just for its existence, and execute
      it directly.
      
      Link: https://lkml.kernel.org/r/20210505211720.447111-1-linux@roeck-us.netSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Cc: Joe Perches <joe@perches.com>
      Cc: Bert Vermeulen <bert@biot.com>
      Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
      Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f9363b31
    • Dimitri John Ledkov's avatar
      lib/decompress_unlz4.c: correctly handle zero-padding around initrds. · 2c484419
      Dimitri John Ledkov authored
      lz4 compatible decompressor is simple.  The format is underspecified and
      relies on EOF notification to determine when to stop.  Initramfs buffer
      format[1] explicitly states that it can have arbitrary number of zero
      padding.  Thus when operating without a fill function, be extra careful to
      ensure that sizes less than 4, or apperantly empty chunksizes are treated
      as EOF.
      
      To test this I have created two cpio initrds, first a normal one,
      main.cpio.  And second one with just a single /test-file with content
      "second" second.cpio.  Then i compressed both of them with gzip, and with
      lz4 -l.  Then I created a padding of 4 bytes (dd if=/dev/zero of=pad4 bs=1
      count=4).  To create four testcase initrds:
      
       1) main.cpio.gzip + extra.cpio.gzip = pad0.gzip
       2) main.cpio.lz4  + extra.cpio.lz4 = pad0.lz4
       3) main.cpio.gzip + pad4 + extra.cpio.gzip = pad4.gzip
       4) main.cpio.lz4  + pad4 + extra.cpio.lz4 = pad4.lz4
      
      The pad4 test-cases replicate the initrd load by grub, as it pads and
      aligns every initrd it loads.
      
      All of the above boot, however /test-file was not accessible in the initrd
      for the testcase #4, as decoding in lz4 decompressor failed.  Also an
      error message printed which usually is harmless.
      
      Whith a patched kernel, all of the above testcases now pass, and
      /test-file is accessible.
      
      This fixes lz4 initrd decompress warning on every boot with grub.  And
      more importantly this fixes inability to load multiple lz4 compressed
      initrds with grub.  This patch has been shipping in Ubuntu kernels since
      January 2021.
      
      [1] ./Documentation/driver-api/early-userspace/buffer-format.rst
      
      BugLink: https://bugs.launchpad.net/bugs/1835660
      Link: https://lore.kernel.org/lkml/20210114200256.196589-1-xnox@ubuntu.com/ # v0
      Link: https://lkml.kernel.org/r/20210513104831.432975-1-dimitri.ledkov@canonical.comSigned-off-by: default avatarDimitri John Ledkov <dimitri.ledkov@canonical.com>
      Cc: Kyungsik Lee <kyungsik.lee@lge.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Bongkyu Kim <bongkyu.kim@lge.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Sven Schmidt <4sschmid@informatik.uni-hamburg.de>
      Cc: Rajat Asthana <thisisrast7@gmail.com>
      Cc: Nick Terrell <terrelln@fb.com>
      Cc: Gao Xiang <hsiangkao@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2c484419
    • Rajat Asthana's avatar
      lz4_decompress: declare LZ4_decompress_safe_withPrefix64k static · 7fde9d6e
      Rajat Asthana authored
      Declare LZ4_decompress_safe_withPrefix64k as static to fix sparse
      warning:
      
      > warning: symbol 'LZ4_decompress_safe_withPrefix64k' was not declared.
      > Should it be static?
      
      Link: https://lkml.kernel.org/r/20210511154345.610569-1-thisisrast7@gmail.comSigned-off-by: default avatarRajat Asthana <thisisrast7@gmail.com>
      Reviewed-by: default avatarNick Terrell <terrelln@fb.com>
      Cc: Gao Xiang <hsiangkao@redhat.com>
      Cc: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7fde9d6e
    • Andy Shevchenko's avatar
      kernel.h: split out kstrtox() and simple_strtox() to a separate header · 4c527293
      Andy Shevchenko authored
      kernel.h is being used as a dump for all kinds of stuff for a long time.
      Here is the attempt to start cleaning it up by splitting out kstrtox() and
      simple_strtox() helpers.
      
      At the same time convert users in header and lib folders to use new
      header.  Though for time being include new header back to kernel.h to
      avoid twisted indirected includes for existing users.
      
      [andy.shevchenko@gmail.com: fix documentation references]
        Link: https://lkml.kernel.org/r/20210615220003.377901-1-andy.shevchenko@gmail.com
      
      Link: https://lkml.kernel.org/r/20210611185815.44103-1-andriy.shevchenko@linux.intel.comSigned-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Acked-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
      Cc: Francis Laniel <laniel_francis@privacyrequired.com>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Kars Mulder <kerneldev@karsmulder.nl>
      Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
      Cc: Anna Schumaker <anna.schumaker@netapp.com>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Chuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4c527293
    • Matteo Croce's avatar
      lib/test_string.c: allow module removal · ce71efd0
      Matteo Croce authored
      The test_string module can't be removed because it lacks an exit hook.
      Since there is no reason for it to be permanent, add an empty one to allow
      module removal.
      
      Link: https://lkml.kernel.org/r/20210616234503.28678-1-mcroce@linux.microsoft.comSigned-off-by: default avatarMatteo Croce <mcroce@microsoft.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ce71efd0
    • Alexey Dobriyan's avatar
      lib: uninline simple_strtoull() · ad65dcef
      Alexey Dobriyan authored
      Gcc inlines simple_strtoull() too agressively.
      
      Given that all 4 signatures match, everything very efficiently calls or
      tailcalls into simple_strtoull():
      
      	ffffffff81da0240 <simple_strtoll>:
      	ffffffff81da0240:       80 3f 2d                cmp    BYTE PTR [rdi],0x2d
      	ffffffff81da0243:       74 05                   je     ffffffff81da024a <simple_strtoll+0xa>
      	ffffffff81da0245:       e9 76 ff ff ff          jmp    simple_strtoull
      	ffffffff81da024a:       48 83 c7 01             add    rdi,0x1
      	ffffffff81da024e:       e8 6d ff ff ff          call   simple_strtoull
      	ffffffff81da0253:       48 f7 d8                neg    rax
      	ffffffff81da0256:       c3                      ret
      
      Space savings (on F34-ish .config)
      
      	add/remove: 0/0 grow/shrink: 1/3 up/down: 52/-313 (-261)
      	Function                                     old     new   delta
      	vsscanf                                     2167    2219     +52
      	simple_strtoul                                72       2     -70
      	simple_strtoll                               143      23    -120
      	simple_strtol                                143      20    -123
      
      Link: https://lkml.kernel.org/r/YMO2zoOQk2eF34tn@localhost.localdomainSigned-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ad65dcef
    • Alexey Dobriyan's avatar
      lib: memscan() fixlet · 1a58be62
      Alexey Dobriyan authored
      Generic version doesn't trucate second argument to char.
      
      Older brother memchr() does as do s390, sparc and i386 assembly versions.
      
      Fortunately, no code passes c >= 256.
      
      Link: https://lkml.kernel.org/r/YLv4cCf0t5UPdyK+@localhost.localdomainSigned-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1a58be62
    • Zhen Lei's avatar
      lib/mpi: fix spelling mistakes · 478485f6
      Zhen Lei authored
      Fix some spelling mistakes in comments:
      flaged ==> flagged
      bufer ==> buffer
      multipler ==> multiplier
      MULTIPLER ==> MULTIPLIER
      leaset ==> least
      chnage ==> change
      
      Link: https://lkml.kernel.org/r/20210604074401.12198-1-thunder.leizhen@huawei.comSigned-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      478485f6
    • Zhen Lei's avatar
      lib/decompressors: fix spelling mistakes · 05911c5d
      Zhen Lei authored
      Fix some spelling mistakes in comments:
      sentinal ==> sentinel
      compresed ==> compressed
      dependeny ==> dependency
      immediatelly ==> immediately
      dervied ==> derived
      splitted ==> split
      nore ==> not
      independed ==> independent
      asumed ==> assumed
      
      Link: https://lkml.kernel.org/r/20210604085656.12257-1-thunder.leizhen@huawei.comSigned-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      05911c5d
    • Trent Piepho's avatar
      lib/math/rational: add Kunit test cases · b6c75c4a
      Trent Piepho authored
      Adds a number of test cases that cover a range of possible code paths.
      
      [akpm@linux-foundation.org: remove non-ascii characters, fix whitespace]
      [colin.king@canonical.com: fix spelling mistake "demominator" -> "denominator"]
        Link: https://lkml.kernel.org/r/20210526085049.6393-1-colin.king@canonical.com
      
      Link: https://lkml.kernel.org/r/20210525144250.214670-2-tpiepho@gmail.comSigned-off-by: default avatarTrent Piepho <tpiepho@gmail.com>
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Daniel Latypov <dlatypov@google.com>
      Cc: Oskar Schirmer <oskar@scara.com>
      Cc: Yiyuan Guo <yguoaz@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b6c75c4a
    • Trent Piepho's avatar
      lib/math/rational.c: fix divide by zero · 65a0d3c1
      Trent Piepho authored
      If the input is out of the range of the allowed values, either larger than
      the largest value or closer to zero than the smallest non-zero allowed
      value, then a division by zero would occur.
      
      In the case of input too large, the division by zero will occur on the
      first iteration.  The best result (largest allowed value) will be found by
      always choosing the semi-convergent and excluding the denominator based
      limit when finding it.
      
      In the case of the input too small, the division by zero will occur on the
      second iteration.  The numerator based semi-convergent should not be
      calculated to avoid the division by zero.  But the semi-convergent vs
      previous convergent test is still needed, which effectively chooses
      between 0 (the previous convergent) vs the smallest allowed fraction (best
      semi-convergent) as the result.
      
      Link: https://lkml.kernel.org/r/20210525144250.214670-1-tpiepho@gmail.com
      Fixes: 323dd2c3 ("lib/math/rational.c: fix possible incorrect result from rational fractions helper")
      Signed-off-by: default avatarTrent Piepho <tpiepho@gmail.com>
      Reported-by: default avatarYiyuan Guo <yguoaz@gmail.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Oskar Schirmer <oskar@scara.com>
      Cc: Daniel Latypov <dlatypov@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      65a0d3c1