Merge 6.12.23 into android16-6.12

GKI (arm64) relevant 77 out of 426 changes, affecting 93 files +851/-461
  40426fc097 cpufreq: scpi: compare kHz instead of Hz [1 file, +3/-2]
  7b1d2454d0 sched: Cancel the slice protection of the idle entity [1 file, +33/-13]
  b576c4834d sched/eevdf: Force propagating min_slice of cfs_rq when {en,de}queue tasks [1 file, +4/-0]
  f381c92ab4 cpufreq: governor: Fix negative 'idle_time' handling in dbs_update() [1 file, +23/-22]
  4d28c2ab2a lockdep/mm: Fix might_fault() lockdep check of current->mm->mmap_lock [1 file, +0/-2]
  31d5665172 PM: sleep: Adjust check before setting power.must_resume [3 files, +9/-8]
  864750968d watchdog/hardlockup/perf: Fix perf_event memory leak [4 files, +1/-61]
  c3a4c91a40 PM: sleep: Fix handling devices with direct_complete set on errors [1 file, +4/-4]
  345957c1cf lockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*() [1 file, +4/-4]
  5108828fec perf/ring_buffer: Allow the EPOLLRDNORM flag for poll [1 file, +1/-1]
  15291b561d ALSA: timer: Don't take register_mutex with copy_from/to_user() [1 file, +77/-70]
  254f771c70 PCI: Use downstream bridges for distributing resources [1 file, +1/-2]
  372e387c4f PCI: Remove add_align overwrite unrelated to size0 [1 file, +0/-1]
  f556b6ba0a PCI/ASPM: Fix link state exit during switch upstream function removal [1 file, +9/-8]
  8ba27aa512 PCI/ACS: Fix 'pci=config_acs=' parameter [1 file, +13/-5]
  2a54a1a9c6 PCI/portdrv: Only disable pciehp interrupts early when needed [1 file, +5/-3]
  bcb4842004 PCI: Avoid reset when disabled via sysfs [1 file, +4/-0]
  362b5879a7 PCI: Remove stray put_device() in pci_register_host_bridge() [1 file, +2/-3]
  b004cf517d PCI: dwc: ep: Return -ENOMEM for allocation failures [1 file, +1/-0]
  e23dfb926f PCI: Fix BAR resizing when VF BARs are assigned [1 file, +2/-2]
  057298d193 crypto: bpf - Add MODULE_DESCRIPTION for skcipher [1 file, +1/-0]
  2df19f5f6f remoteproc: core: Clear table_sz when rproc_shutdown [1 file, +1/-0]
  bfcca46f01 of: property: Increase NR_FWNODE_REFERENCE_ARGS [1 file, +1/-1]
  8ed5381756 bpf: Use preempt_count() directly in bpf_send_signal_common() [1 file, +1/-1]
  6d4e56e4c5 crypto: api - Fix larval relookup type and mask [1 file, +7/-10]
  8ba426f170 rust: fix signature of rust_fmt_argument [2 files, +4/-5]
  19e6817f84 bpf: Fix array bounds error with may_goto [2 files, +22/-4]
  c2ddf2f576 leds: Fix LED_OFF brightness race [1 file, +18/-4]
  8109f57613 usb: xhci: correct debug message page size calculation [1 file, +3/-3]
  c42282a078 kernel/events/uprobes: handle device-exclusive entries correctly in __replace_page() [1 file, +12/-1]
  5b2b692804 tty: n_tty: use uint for space returned by tty_write_room() [1 file, +7/-6]
  aba9189992 fs/procfs: fix the comment above proc_pid_wchan() [1 file, +1/-1]
  456300be23 thermal: core: Remove duplicate struct declaration [1 file, +0/-2]
  6a14075325 exfat: fix the infinite loop in exfat_find_last_cluster() [1 file, +1/-1]
  4a9595eb02 exfat: fix missing shutdown check [1 file, +27/-2]
  28b21ee8e8 rtnetlink: Allocate vfinfo size for VF GUIDs when supported [1 file, +3/-0]
  2a6f8823ff ring-buffer: Fix bytes_dropped calculation issue [1 file, +2/-2]
  8e49f912ae sched/smt: Always inline sched_smt_active() [1 file, +1/-1]
  00911b416a context_tracking: Always inline ct_{nmi,irq}_{enter,exit}() [1 file, +4/-4]
  d80168db5e rcu-tasks: Always inline rcu_irq_work_resched() [1 file, +1/-1]
  63bd235de2 nvme-pci: clean up CMBMSC when registering CMB fails [1 file, +1/-0]
  5eb8c8fee7 nvme-pci: skip CMB blocks incompatible with PCI P2P DMA [1 file, +12/-8]
  7364420090 perf/core: Fix perf_pmu_register() vs. perf_init_event() [1 file, +26/-2]
  9207575878 exfat: add a check for invalid data size [1 file, +5/-0]
  ddf40162ac locking/semaphore: Use wake_q to wake up processes outside lock critical section [1 file, +9/-4]
  3e6ce0d9ec nvme-pci: fix stuck reset on concurrent DPC and HP [1 file, +12/-1]
  93c59b5548 net: devmem: do not WARN conditionally after netdev_rx_queue_restart() [1 file, +3/-1]
  d840c84cdd can: statistics: use atomic access in hot path [3 files, +39/-31]
  7a95b48873 netfs: Fix netfs_unbuffered_read() to return ssize_t rather than int [1 file, +3/-3]
  7e3497d7da ublk: make sure ubq->canceling is set when queue is frozen [1 file, +29/-10]
  a3800b64f8 nvme/ioctl: don't warn on vectorized uring_cmd with fixed buffer [1 file, +1/-1]
  94d5ad7b41 udp: Fix multiple wraparounds of sk->sk_rmem_alloc. [1 file, +17/-9]
  a116b271bf udp: Fix memory accounting leak. [1 file, +7/-9]
  47744d0d5f vsock: avoid timeout during connect() if the socket is closing [1 file, +5/-1]
  9539c1721a tunnels: Accept PACKET_HOST in skb_tunnel_check_pmtu(). [2 files, +1/-7]
  92a5c18513 net: decrease cached dst counters in dst_release [1 file, +8/-0]
  de579015d1 ipv6: fix omitted netlink attributes when using RTEXT_FILTER_SKIP_STATS [1 file, +25/-12]
  2952776c69 net: fix geneve_opt length integer overflow [4 files, +4/-4]
  1eb36a2cdf ipv6: Start path selection from the first nexthop [1 file, +35/-3]
  f4fea25f5c ipv6: Do not consider link down nexthops in path selection [1 file, +4/-2]
  e9c9288072 perf/core: Fix child_total_time_enabled accounting bug at task exit [1 file, +9/-9]
  387dc88c2c tracing: Switch trace_events_hist.c code over to use guard() [1 file, +10/-22]
  fe87f8d3a5 tracing/hist: Add poll(POLLIN) support on hist file [3 files, +95/-3]
  eecb62a24b tracing/hist: Support POLLPRI event for poll on histogram [1 file, +26/-3]
  ef79f2dec7 tracing: Correct the refcount if the hist/hist_debug file fails to open [1 file, +18/-6]
  39bc1484eb cgroup/rstat: Tracking cgroup-level niced CPU time [2 files, +15/-5]
  3501677651 cgroup/rstat: Fix forceidle time in cpu.stat [1 file, +13/-16]
  d689645cd1 usbnet:fix NPE during rx_complete [1 file, +3/-3]
  49b0a6ab8e exfat: fix random stack corruption after get_block [1 file, +33/-6]
  37c9875c17 exfat: fix potential wrong error return from get_block [1 file, +2/-0]
  cffc2a6718 tracing: Ensure module defining synth event cannot be unloaded while tracing [1 file, +29/-1]
  33052e7f52 tracing: Fix synth event printk format for str fields [1 file, +1/-1]
  2e877ff349 mm/gup: reject FOLL_SPLIT_PMD with hugetlb VMAs [1 file, +3/-0]
  13d6f8ba50 ext4: don't over-report free space or inodes in statvfs [1 file, +17/-10]
  b47584c556 ext4: fix OOB read when checking dotdot dir [1 file, +3/-0]
  e2d8e7bd33 exec: fix the racy usage of fs_struct->in_exec [1 file, +9/-6]
  625e9b91eb tracing: Do not use PERF enums when perf is not defined [1 file, +6/-2]

Changes in 6.12.23
        watch_queue: fix pipe accounting mismatch
        x86/mm/pat: cpa-test: fix length for CPA_ARRAY test
        cpufreq: scpi: compare kHz instead of Hz
        smack: dont compile ipv6 code unless ipv6 is configured
        smack: ipv4/ipv6: tcp/dccp/sctp: fix incorrect child socket label
        sched: Cancel the slice protection of the idle entity
        sched/eevdf: Force propagating min_slice of cfs_rq when {en,de}queue tasks
        cpufreq: governor: Fix negative 'idle_time' handling in dbs_update()
        EDAC/{skx_common,i10nm}: Fix some missing error reports on Emerald Rapids
        x86/fpu: Fix guest FPU state buffer allocation size
        x86/fpu: Avoid copying dynamic FP state from init_task in arch_dup_task_struct()
        x86/platform: Only allow CONFIG_EISA for 32-bit
        x86/sev: Add missing RIP_REL_REF() invocations during sme_enable()
        lockdep/mm: Fix might_fault() lockdep check of current->mm->mmap_lock
        PM: sleep: Adjust check before setting power.must_resume
        cpufreq: tegra194: Allow building for Tegra234
        RISC-V: KVM: Disable the kernel perf counter during configure
        kunit/stackinit: Use fill byte different from Clang i386 pattern
        watchdog/hardlockup/perf: Fix perf_event memory leak
        selinux: Chain up tool resolving errors in install_policy.sh
        EDAC/ie31200: Fix the size of EDAC_MC_LAYER_CHIP_SELECT layer
        EDAC/ie31200: Fix the DIMM size mask for several SoCs
        EDAC/ie31200: Fix the error path order of ie31200_init()
        x86/resctrl: Fix allocation of cleanest CLOSID on platforms with no monitors
        thermal: int340x: Add NULL check for adev
        PM: sleep: Fix handling devices with direct_complete set on errors
        lockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*()
        perf/ring_buffer: Allow the EPOLLRDNORM flag for poll
        x86/traps: Make exc_double_fault() consistently noreturn
        x86/fpu/xstate: Fix inconsistencies in guest FPU xfeatures
        x86/entry: Add __init to ia32_emulation_override_cmdline()
        regulator: pca9450: Fix enable register for LDO5
        auxdisplay: MAX6959 should select BITREVERSE
        media: verisilicon: HEVC: Initialize start_bit field
        media: platform: allgro-dvt: unregister v4l2_device on the error path
        auxdisplay: panel: Fix an API misuse in panel.c
        platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: Make symbol static
        platform/x86: dell-uart-backlight: Make dell_uart_bl_serdev_driver static
        platform/x86: dell-ddv: Fix temperature calculation
        ASoC: cs35l41: check the return value from spi_setup()
        ASoC: amd: acp: Fix for enabling DMIC on acp platforms via _DSD entry
        HID: remove superfluous (and wrong) Makefile entry for CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER
        dt-bindings: vendor-prefixes: add GOcontroll
        ALSA: hda/realtek: Always honor no_shutup_pins
        ASoC: ti: j721e-evm: Fix clock configuration for ti,j7200-cpb-audio compatible
        ALSA: timer: Don't take register_mutex with copy_from/to_user()
        drm/bridge: ti-sn65dsi86: Fix multiple instances
        drm/ssd130x: Set SPI .id_table to prevent an SPI core warning
        drm/ssd130x: fix ssd132x encoding
        drm/ssd130x: ensure ssd132x pitch is correct
        drm/dp_mst: Fix drm RAD print
        drm/bridge: it6505: fix HDCP V match check is not performed correctly
        drm: xlnx: zynqmp: Fix max dma segment size
        drm/vkms: Fix use after free and double free on init error
        gpu: cdns-mhdp8546: fix call balance of mhdp->clk handling routines
        drm/amdgpu: refine smu send msg debug log format
        drm/amdgpu/umsch: fix ucode check
        PCI: Use downstream bridges for distributing resources
        PCI: Remove add_align overwrite unrelated to size0
        drm/mediatek: mtk_hdmi: Unregister audio platform device on failure
        drm/mediatek: mtk_hdmi: Fix typo for aud_sampe_size member
        PCI/ASPM: Fix link state exit during switch upstream function removal
        drm/panel: ilitek-ili9882t: fix GPIO name in error message
        PCI/ACS: Fix 'pci=config_acs=' parameter
        drm/amd/display: fix an indent issue in DML21
        drm/msm/dpu: don't use active in atomic_check()
        drm/msm/dsi/phy: Program clock inverters in correct register
        drm/msm/dsi: Use existing per-interface slice count in DSC timing
        drm/msm/dsi: Set PHY usescase (and mode) before registering DSI host
        drm/amdkfd: Fix Circular Locking Dependency in 'svm_range_cpu_invalidate_pagetables'
        PCI: cadence-ep: Fix the driver to send MSG TLP for INTx without data payload
        PCI: brcmstb: Set generation limit before PCIe link up
        PCI: brcmstb: Use internal register to change link capability
        PCI: brcmstb: Fix error path after a call to regulator_bulk_get()
        PCI: brcmstb: Fix potential premature regulator disabling
        PCI/portdrv: Only disable pciehp interrupts early when needed
        PCI: Avoid reset when disabled via sysfs
        drm/panthor: Update CS_STATUS_ defines to correct values
        drm/amd/display: fix type mismatch in CalculateDynamicMetadataParameters()
        drm/msm/a6xx: Fix a6xx indexed-regs in devcoreduump
        crypto: powerpc: Mark ghashp8-ppc.o as an OBJECT_FILES_NON_STANDARD
        powerpc/kexec: fix physical address calculation in clear_utlb_entry()
        PCI: Remove stray put_device() in pci_register_host_bridge()
        PCI: xilinx-cpm: Fix IRQ domain leak in error path of probe
        drm/mediatek: Fix config_updating flag never false when no mbox channel
        drm/mediatek: dp: drm_err => dev_err in HPD path to avoid NULL ptr
        drm/mediatek: dsi: fix error codes in mtk_dsi_host_transfer()
        drm/amd/display: avoid NPD when ASIC does not support DMUB
        PCI: dwc: ep: Return -ENOMEM for allocation failures
        PCI: histb: Fix an error handling path in histb_pcie_probe()
        PCI: Fix BAR resizing when VF BARs are assigned
        PCI: pciehp: Don't enable HPIE when resuming in poll mode
        fbdev: au1100fb: Move a variable assignment behind a null pointer check
        dummycon: fix default rows/cols
        mdacon: rework dependency list
        fbdev: sm501fb: Add some geometry checks.
        crypto: iaa - Test the correct request flag
        crypto: qat - set parity error mask for qat_420xx
        crypto: tegra - Use separate buffer for setkey
        crypto: tegra - check return value for hash do_one_req
        crypto: bpf - Add MODULE_DESCRIPTION for skcipher
        crypto: tegra - Use HMAC fallback when keyslots are full
        clk: amlogic: gxbb: drop incorrect flag on 32k clock
        crypto: hisilicon/sec2 - fix for aead authsize alignment
        crypto: hisilicon/sec2 - fix for sec spec check
        RDMA/mlx5: Fix page_size variable overflow
        remoteproc: core: Clear table_sz when rproc_shutdown
        of: property: Increase NR_FWNODE_REFERENCE_ARGS
        pinctrl: renesas: rzg2l: Suppress binding attributes
        remoteproc: qcom_q6v5_pas: Make single-PD handling more robust
        libbpf: Fix hypothetical STT_SECTION extern NULL deref case
        selftests/bpf: Fix string read in strncmp benchmark
        x86/mm/pat: Fix VM_PAT handling when fork() fails in copy_page_range()
        clk: renesas: r8a08g045: Check the source of the CPU PLL settings
        remoteproc: qcom: pas: add minidump_id to SC7280 WPSS
        clk: samsung: Fix UBSAN panic in samsung_clk_init()
        pinctrl: nuvoton: npcm8xx: Fix error handling in npcm8xx_gpio_fw()
        crypto: tegra - Fix CMAC intermediate result handling
        clk: qcom: gcc-msm8953: fix stuck venus0_core0 clock
        s390: Remove ioremap_wt() and pgprot_writethrough()
        RDMA/mana_ib: Ensure variable err is initialized
        crypto: tegra - Set IV to NULL explicitly for AES ECB
        remoteproc: qcom_q6v5_pas: Use resource with CX PD for MSM8226
        clk: qcom: gcc-x1e80100: Unregister GCC_GPU_CFG_AHB_CLK/GCC_DISP_XO_CLK
        bpf: Use preempt_count() directly in bpf_send_signal_common()
        lib: 842: Improve error handling in sw842_compress()
        pinctrl: renesas: rza2: Fix missing of_node_put() call
        pinctrl: renesas: rzg2l: Fix missing of_node_put() call
        RDMA/mlx5: Fix MR cache initialization error flow
        selftests/bpf: Fix freplace_link segfault in tailcalls prog test
        clk: rockchip: rk3328: fix wrong clk_ref_usb3otg parent
        RDMA/core: Don't expose hw_counters outside of init net namespace
        RDMA/mlx5: Fix calculation of total invalidated pages
        RDMA/erdma: Prevent use-after-free in erdma_accept_newconn()
        remoteproc: qcom_q6v5_mss: Handle platforms with one power domain
        power: supply: bq27xxx_battery: do not update cached flags prematurely
        crypto: api - Fix larval relookup type and mask
        IB/mad: Check available slots before posting receive WRs
        pinctrl: tegra: Set SFIO mode to Mux Register
        clk: amlogic: g12b: fix cluster A parent data
        clk: amlogic: gxbb: drop non existing 32k clock parent
        selftests/bpf: Select NUMA_NO_NODE to create map
        rust: fix signature of rust_fmt_argument
        pinctrl: npcm8xx: Fix incorrect struct npcm8xx_pincfg assignment
        crypto: qat - remove access to parity register for QAT GEN4
        clk: clk-imx8mp-audiomix: fix dsp/ocram_a clock parents
        clk: amlogic: g12a: fix mmc A peripheral clock
        x86/entry: Fix ORC unwinder for PUSH_REGS with save_ret=1
        power: supply: max77693: Fix wrong conversion of charge input threshold value
        crypto: nx - Fix uninitialised hv_nxc on error
        clk: qcom: gcc-sm8650: Do not turn off USB GDSCs during gdsc_disable()
        bpf: Fix array bounds error with may_goto
        RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow
        pinctrl: renesas: rzv2m: Fix missing of_node_put() call
        mfd: sm501: Switch to BIT() to mitigate integer overflows
        leds: Fix LED_OFF brightness race
        x86/dumpstack: Fix inaccurate unwinding from exception stacks due to misplaced assignment
        RDMA/core: Fix use-after-free when rename device name
        crypto: hisilicon/sec2 - fix for aead auth key length
        pinctrl: intel: Fix wrong bypass assignment in intel_pinctrl_probe_pwm()
        clk: qcom: mmcc-sdm660: fix stuck video_subcore0 clock
        perf stat: Fix find_stat for mixed legacy/non-legacy events
        perf: Always feature test reallocarray
        w1: fix NULL pointer dereference in probe
        fs/ntfs3: Update inode->i_mapping->a_ops on compression state
        phy: phy-rockchip-samsung-hdptx: Don't use dt aliases to determine phy-id
        isofs: fix KMSAN uninit-value bug in do_isofs_readdir()
        soundwire: slave: fix an OF node reference leak in soundwire slave device
        perf report: Switch data file correctly in TUI
        greybus: gb-beagleplay: Add error handling for gb_greybus_init
        coresight: catu: Fix number of pages while using 64k pages
        vhost-scsi: Fix handling of multiple calls to vhost_scsi_set_endpoint
        coresight-etm4x: add isb() before reading the TRCSTATR
        perf pmu: Don't double count common sysfs and json events
        tools/x86: Fix linux/unaligned.h include path in lib/insn.c
        perf build: Fix in-tree build due to symbolic link
        ucsi_ccg: Don't show failed to get FW build information error
        iio: accel: mma8452: Ensure error return on failure to matching oversampling ratio
        iio: accel: msa311: Fix failure to release runtime pm if direct mode claim fails.
        iio: backend: make sure to NULL terminate stack buffer
        perf arm-spe: Fix load-store operation checking
        perf bench: Fix perf bench syscall loop count
        usb: xhci: correct debug message page size calculation
        fs/ntfs3: Fix a couple integer overflows on 32bit systems
        fs/ntfs3: Prevent integer overflow in hdr_first_de()
        dmaengine: fsl-edma: cleanup chan after dma_async_device_unregister
        dmaengine: fsl-edma: free irq correctly in remove path
        iio: adc: ad4130: Fix comparison of channel setups
        iio: adc: ad7124: Fix comparison of channel configs
        iio: adc: ad7173: Fix comparison of channel configs
        iio: adc: ad7768-1: set MOSI idle state to prevent accidental reset
        iio: light: Add check for array bounds in veml6075_read_int_time_ms
        perf debug: Avoid stack overflow in recursive error message
        perf evlist: Add success path to evlist__create_syswide_maps
        perf units: Fix insufficient array space
        kernel/events/uprobes: handle device-exclusive entries correctly in __replace_page()
        kexec: initialize ELF lowest address to ULONG_MAX
        ocfs2: validate l_tree_depth to avoid out-of-bounds access
        arch/powerpc: drop GENERIC_PTDUMP from mpc885_ads_defconfig
        NFSv4: Don't trigger uneccessary scans for return-on-close delegations
        NFSv4: Avoid unnecessary scans of filesystems for returning delegations
        NFSv4: Avoid unnecessary scans of filesystems for expired delegations
        NFSv4: Avoid unnecessary scans of filesystems for delayed delegations
        NFS: fix open_owner_id_maxsz and related fields.
        fuse: fix dax truncate/punch_hole fault path
        selftests/mm/cow: fix the incorrect error handling
        um: Pass the correct Rust target and options with gcc
        um: remove copy_from_kernel_nofault_allowed
        um: hostfs: avoid issues on inode number reuse by host
        i3c: master: svc: Fix missing the IBI rules
        perf python: Fixup description of sample.id event member
        perf python: Decrement the refcount of just created event on failure
        perf python: Don't keep a raw_data pointer to consumed ring buffer space
        perf python: Check if there is space to copy all the event
        perf dso: fix dso__is_kallsyms() check
        perf: intel-tpebs: Fix incorrect usage of zfree()
        staging: rtl8723bs: select CONFIG_CRYPTO_LIB_AES
        staging: vchiq_arm: Register debugfs after cdev
        staging: vchiq_arm: Fix possible NPR of keep-alive thread
        tty: n_tty: use uint for space returned by tty_write_room()
        perf vendor events arm64 AmpereOneX: Fix frontend_bound calculation
        fs/procfs: fix the comment above proc_pid_wchan()
        perf tools: annotate asm_pure_loop.S
        perf bpf-filter: Fix a parsing error with comma
        thermal: core: Remove duplicate struct declaration
        objtool, nvmet: Fix out-of-bounds stack access in nvmet_ctrl_state_show()
        objtool, media: dib8000: Prevent divide-by-zero in dib8000_set_dds()
        NFS: Shut down the nfs_client only after all the superblocks
        smb: client: Fix netns refcount imbalance causing leaks and use-after-free
        exfat: fix the infinite loop in exfat_find_last_cluster()
        exfat: fix missing shutdown check
        rtnetlink: Allocate vfinfo size for VF GUIDs when supported
        rndis_host: Flag RNDIS modems as WWAN devices
        ksmbd: use aead_request_free to match aead_request_alloc
        ksmbd: fix multichannel connection failure
        ksmbd: fix r_count dec/increment mismatch
        net/mlx5e: SHAMPO, Make reserved size independent of page size
        ring-buffer: Fix bytes_dropped calculation issue
        objtool: Fix segfault in ignore_unreachable_insn()
        LoongArch: Fix help text of CMDLINE_EXTEND in Kconfig
        LoongArch: Fix device node refcount leak in fdt_cpu_clk_init()
        LoongArch: Rework the arch_kgdb_breakpoint() implementation
        ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid
        net: phy: broadcom: Correct BCM5221 PHY model detection
        octeontx2-af: Fix mbox INTR handler when num VFs > 64
        octeontx2-af: Free NIX_AF_INT_VEC_GEN irq
        objtool: Fix verbose disassembly if CROSS_COMPILE isn't set
        sched/smt: Always inline sched_smt_active()
        context_tracking: Always inline ct_{nmi,irq}_{enter,exit}()
        rcu-tasks: Always inline rcu_irq_work_resched()
        objtool/loongarch: Add unwind hints in prepare_frametrace()
        nfs: Add missing release on error in nfs_lock_and_join_requests()
        wifi: mac80211: Cleanup sta TXQs on flush
        wifi: mac80211: remove debugfs dir for virtual monitor
        wifi: iwlwifi: fw: allocate chained SG tables for dump
        wifi: iwlwifi: mvm: use the right version of the rate API
        nvme-tcp: fix possible UAF in nvme_tcp_poll
        nvme-pci: clean up CMBMSC when registering CMB fails
        nvme-pci: skip CMB blocks incompatible with PCI P2P DMA
        wifi: brcmfmac: keep power during suspend if board requires it
        affs: generate OFS sequence numbers starting at 1
        affs: don't write overlarge OFS data block size fields
        ALSA: hda/realtek: Fix Asus Z13 2025 audio
        ALSA: hda: Fix speakers on ASUS EXPERTBOOK P5405CSA 1.0
        perf/core: Fix perf_pmu_register() vs. perf_init_event()
        smb: common: change the data type of num_aces to le16
        cifs: fix incorrect validation for num_aces field of smb_acl
        platform/x86: intel-hid: fix volume buttons on Microsoft Surface Go 4 tablet
        platform/x86/intel/vsec: Add Diamond Rapids support
        net: dsa: rtl8366rb: don't prompt users for LED control
        HID: i2c-hid: improve i2c_hid_get_report error message
        platform/x86/amd/pmf: Propagate PMF-TA return codes
        platform/x86/amd/pmf: Update PMF Driver for Compatibility with new PMF-TA
        exfat: add a check for invalid data size
        ALSA: hda/realtek: Add support for ASUS ROG Strix G814 Laptop using CS35L41 HDA
        ALSA: hda/realtek: Add support for ASUS ROG Strix GA603 Laptops using CS35L41 HDA
        ALSA: hda/realtek: Add support for ASUS ROG Strix G614 Laptops using CS35L41 HDA
        ALSA: hda/realtek: Add support for various ASUS Laptops using CS35L41 HDA
        ALSA: hda/realtek: Add support for ASUS B3405 and B3605 Laptops using CS35L41 HDA
        ALSA: hda/realtek: Add support for ASUS B5405 and B5605 Laptops using CS35L41 HDA
        ALSA: hda/realtek: Add support for ASUS Zenbook UM3406KA Laptops using CS35L41 HDA
        sched/deadline: Use online cpus for validating runtime
        x86/hyperv/vtl: Stop kernel from probing VTL0 low memory
        ASoC: codecs: wsa884x: report temps to hwmon in millidegree of Celsius
        ASoC: rt1320: set wake_capable = 0 explicitly
        wifi: mac80211: flush the station before moving it to UN-AUTHORIZED state
        wifi: mac80211: fix SA Query processing in MLO
        locking/semaphore: Use wake_q to wake up processes outside lock critical section
        x86/hyperv: Fix output argument to hypercall that changes page visibility
        x86/sgx: Warn explicitly if X86_FEATURE_SGX_LC is not enabled
        nvme-pci: fix stuck reset on concurrent DPC and HP
        drm/amd: Keep display off while going into S4
        net: devmem: do not WARN conditionally after netdev_rx_queue_restart()
        selftests: netfilter: skip br_netfilter queue tests if kernel is tainted
        ALSA: hda/realtek: Add mute LED quirk for HP Pavilion x360 14-dy1xxx
        can: statistics: use atomic access in hot path
        memory: omap-gpmc: drop no compatible check
        hwmon: (nct6775-core) Fix out of bounds access for NCT679{8,9}
        netfs: Fix netfs_unbuffered_read() to return ssize_t rather than int
        spufs: fix a leak on spufs_new_file() failure
        spufs: fix gang directory lifetimes
        spufs: fix a leak in spufs_create_context()
        fs/9p: fix NULL pointer dereference on mkdir
        riscv: ftrace: Add parentheses in macro definitions of make_call_t0 and make_call_ra
        ntb_hw_switchtec: Fix shift-out-of-bounds in switchtec_ntb_mw_set_trans
        ntb: intel: Fix using link status DB's
        firmware: cs_dsp: Ensure cs_dsp_load[_coeff]() returns 0 on success
        ALSA: hda/realtek: Fix built-in mic breakage on ASUS VivoBook X515JA
        RISC-V: errata: Use medany for relocatable builds
        x86/uaccess: Improve performance by aligning writes to 8 bytes in copy_user_generic(), on non-FSRM/ERMS CPUs
        ublk: make sure ubq->canceling is set when queue is frozen
        s390/entry: Fix setting _CIF_MCCK_GUEST with lowcore relocation
        ASoC: codecs: rt5665: Fix some error handling paths in rt5665_probe()
        spi: cadence: Fix out-of-bounds array access in cdns_mrvl_xspi_setup_clock()
        riscv: Fix hugetlb retrieval of number of ptes in case of !present pte
        riscv/kexec_file: Handle R_RISCV_64 in purgatory relocator
        riscv/purgatory: 4B align purgatory_start
        nvme/ioctl: don't warn on vectorized uring_cmd with fixed buffer
        ASoC: imx-card: Add NULL check in imx_card_probe()
        spi: bcm2835: Do not call gpiod_put() on invalid descriptor
        ALSA: hda/realtek: Fix built-in mic on another ASUS VivoBook model
        spi: bcm2835: Restore native CS probing when pinctrl-bcm2835 is absent
        e1000e: change k1 configuration on MTP and later platforms
        idpf: fix adapter NULL pointer dereference on reboot
        netfilter: nft_set_hash: GC reaps elements with conncount for dynamic sets only
        netfilter: nf_tables: don't unregister hook when table is dormant
        netlabel: Fix NULL pointer exception caused by CALIPSO on IPv4 sockets
        net_sched: skbprio: Remove overly strict queue assertions
        sctp: add mutual exclusion in proc_sctp_do_udp_port()
        net: mvpp2: Prevent parser TCAM memory corruption
        udp: Fix multiple wraparounds of sk->sk_rmem_alloc.
        udp: Fix memory accounting leak.
        vsock: avoid timeout during connect() if the socket is closing
        tunnels: Accept PACKET_HOST in skb_tunnel_check_pmtu().
        net: decrease cached dst counters in dst_release
        netfilter: nft_tunnel: fix geneve_opt type confusion addition
        ipv6: fix omitted netlink attributes when using RTEXT_FILTER_SKIP_STATS
        net: dsa: mv88e6xxx: propperly shutdown PPU re-enable timer on destroy
        net: fix geneve_opt length integer overflow
        ipv6: Start path selection from the first nexthop
        ipv6: Do not consider link down nexthops in path selection
        arcnet: Add NULL check in com20020pci_probe()
        net: ibmveth: make veth_pool_store stop hanging
        kbuild: deb-pkg: don't set KBUILD_BUILD_VERSION unconditionally
        drm/amdgpu/gfx11: fix num_mec
        drm/amdgpu/gfx12: fix num_mec
        perf/core: Fix child_total_time_enabled accounting bug at task exit
        tools/power turbostat: report CoreThr per measurement interval
        tracing: Switch trace_events_hist.c code over to use guard()
        tracing/hist: Add poll(POLLIN) support on hist file
        tracing/hist: Support POLLPRI event for poll on histogram
        tracing: Correct the refcount if the hist/hist_debug file fails to open
        cgroup/rstat: Tracking cgroup-level niced CPU time
        cgroup/rstat: Fix forceidle time in cpu.stat
        tty: serial: fsl_lpuart: Use u32 and u8 for register variables
        tty: serial: fsl_lpuart: use port struct directly to simply code
        tty: serial: fsl_lpuart: Fix unused variable 'sport' build warning
        tty: serial: lpuart: only disable CTS instead of overwriting the whole UARTMODIR register
        wifi: mac80211: Fix sparse warning for monitor_sdata
        usbnet:fix NPE during rx_complete
        rust: Fix enabling Rust and building with GCC for LoongArch
        LoongArch: Increase ARCH_DMA_MINALIGN up to 16
        LoongArch: Increase MAX_IO_PICS up to 8
        LoongArch: BPF: Fix off-by-one error in build_prologue()
        LoongArch: BPF: Don't override subprog's return value
        LoongArch: BPF: Use move_addr() for BPF_PSEUDO_FUNC
        x86/hyperv: Fix check of return value from snp_set_vmsa()
        KVM: x86: block KVM_CAP_SYNC_REGS if guest state is protected
        x86/microcode/AMD: Fix __apply_microcode_amd()'s return value
        x86/mce: use is_copy_from_user() to determine copy-from-user context
        x86/tdx: Fix arch_safe_halt() execution for TDX VMs
        ACPI: x86: Extend Lenovo Yoga Tab 3 quirk with skip GPIO event-handlers
        platform/x86: thinkpad_acpi: disable ACPI fan access for T495* and E560
        platform/x86: ISST: Correct command storage data length
        ntb_perf: Delete duplicate dmaengine_unmap_put() call in perf_copy_chunk()
        perf/x86/intel: Apply static call for drain_pebs
        perf/x86/intel: Avoid disable PMU if !cpuc->enabled in sample read
        uprobes/x86: Harden uretprobe syscall trampoline check
        idpf: Don't hard code napi_struct size
        x86/Kconfig: Add cmpxchg8b support back to Geode CPUs
        x86/tsc: Always save/restore TSC sched_clock() on suspend/resume
        x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs
        wifi: mt76: mt7925: remove unused acpi function for clc
        acpi: nfit: fix narrowing conversion in acpi_nfit_ctl
        ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP
        ARM: 9444/1: add KEEP() keyword to ARM_VECTORS
        media: omap3isp: Handle ARM dma_iommu_mapping
        Remove unnecessary firmware version check for gc v9_4_2
        mmc: omap: Fix memory leak in mmc_omap_new_slot
        mmc: sdhci-pxav3: set NEED_RSP_BUSY capability
        mmc: sdhci-omap: Disable MMC_CAP_AGGRESSIVE_PM for eMMC/SD
        KVM: SVM: Don't change target vCPU state on AP Creation VMGEXIT error
        ksmbd: add bounds check for durable handle context
        ksmbd: add bounds check for create lease context
        ksmbd: fix use-after-free in ksmbd_sessions_deregister()
        ksmbd: fix session use-after-free in multichannel connection
        ksmbd: fix overflow in dacloffset bounds check
        ksmbd: validate zero num_subauth before sub_auth is accessed
        ksmbd: fix null pointer dereference in alloc_preauth_hash()
        exfat: fix random stack corruption after get_block
        exfat: fix potential wrong error return from get_block
        tracing: Fix use-after-free in print_graph_function_flags during tracer switching
        tracing: Ensure module defining synth event cannot be unloaded while tracing
        tracing: Fix synth event printk format for str fields
        tracing/osnoise: Fix possible recursive locking for cpus_read_lock()
        mm/gup: reject FOLL_SPLIT_PMD with hugetlb VMAs
        arm64: Don't call NULL in do_compat_alignment_fixup()
        wifi: mt76: mt7921: fix kernel panic due to null pointer dereference
        ext4: don't over-report free space or inodes in statvfs
        ext4: fix OOB read when checking dotdot dir
        jfs: fix slab-out-of-bounds read in ea_get()
        jfs: add index corruption check to DT_GETPAGE()
        mm: zswap: fix crypto_free_acomp() deadlock in zswap_cpu_comp_dead()
        exec: fix the racy usage of fs_struct->in_exec
        media: vimc: skip .s_stream() for stopped entities
        media: streamzap: fix race between device disconnection and urb callback
        nfsd: allow SC_STATUS_FREEABLE when searching via nfs4_lookup_stateid()
        nfsd: put dl_stid if fail to queue dl_recall
        nfsd: fix management of listener transports
        NFSD: nfsd_unlink() clobbers non-zero status returned from fh_fill_pre_attrs()
        NFSD: Never return NFS4ERR_FILE_OPEN when removing a directory
        NFSD: Skip sending CB_RECALL_ANY when the backchannel isn't up
        ARM: 9443/1: Require linker to support KEEP within OVERLAY for DCE
        tracing: Do not use PERF enums when perf is not defined
        platform/x86/amd/pmf: fix cleanup in amd_pmf_init_smart_pc()
        Linux 6.12.23

Change-Id: I007dc80a847f3232a2d12c056a74d16d2ab92b29
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2025-04-29 15:45:52 +00:00
committed by Treehugger Robot
24 changed files with 213 additions and 94 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 6
PATCHLEVEL = 12
SUBLEVEL = 22
SUBLEVEL = 23
EXTRAVERSION =
NAME = Baby Opossum Posse
+1 -1
View File
@@ -118,7 +118,7 @@ config ARM
select HAVE_KERNEL_XZ
select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M
select HAVE_KRETPROBES if HAVE_KPROBES
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_IS_LLD)
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_CAN_USE_KEEP_IN_OVERLAY)
select HAVE_MOD_ARCH_SPECIFIC
select HAVE_NMI
select HAVE_OPTPROBES if !THUMB2_KERNEL
+6
View File
@@ -34,6 +34,12 @@
#define NOCROSSREFS
#endif
#ifdef CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY
#define OVERLAY_KEEP(x) KEEP(x)
#else
#define OVERLAY_KEEP(x) x
#endif
/* Set start/end symbol names to the LMA for the section */
#define ARM_LMA(sym, section) \
sym##_start = LOADADDR(section); \
+2
View File
@@ -368,6 +368,8 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)
return 1;
}
if (!handler)
return 1;
type = handler(addr, instr, regs);
if (type == TYPE_ERROR || type == TYPE_FAULT)
+1 -1
View File
@@ -385,8 +385,8 @@ static void streamzap_disconnect(struct usb_interface *interface)
if (!sz)
return;
rc_unregister_device(sz->rdev);
usb_kill_urb(sz->urb_in);
rc_unregister_device(sz->rdev);
usb_free_urb(sz->urb_in);
usb_free_coherent(usbdev, sz->buf_in_len, sz->buf_in, sz->dma_in);
@@ -59,6 +59,12 @@ static void vimc_streamer_pipeline_terminate(struct vimc_stream *stream)
continue;
sd = media_entity_to_v4l2_subdev(ved->ent);
/*
* Do not call .s_stream() to stop an already
* stopped/unstarted subdev.
*/
if (!v4l2_subdev_is_streaming(sd))
continue;
v4l2_subdev_call(sd, video, s_stream, 0);
}
}
@@ -805,6 +805,7 @@ int mt7921_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
msta->deflink.wcid.phy_idx = mvif->bss_conf.mt76.band_idx;
msta->deflink.wcid.tx_info |= MT_WCID_TX_INFO_SET;
msta->deflink.last_txs = jiffies;
msta->deflink.sta = msta;
ret = mt76_connac_pm_wake(&dev->mphy, &dev->pm);
if (ret)
+25 -11
View File
@@ -510,18 +510,18 @@ int amd_pmf_init_smart_pc(struct amd_pmf_dev *dev)
ret = amd_pmf_set_dram_addr(dev, true);
if (ret)
goto error;
goto err_cancel_work;
dev->policy_base = devm_ioremap(dev->dev, dev->policy_addr, dev->policy_sz);
if (!dev->policy_base) {
ret = -ENOMEM;
goto error;
goto err_free_dram_buf;
}
dev->policy_buf = kzalloc(dev->policy_sz, GFP_KERNEL);
if (!dev->policy_buf) {
ret = -ENOMEM;
goto error;
goto err_free_dram_buf;
}
memcpy_fromio(dev->policy_buf, dev->policy_base, dev->policy_sz);
@@ -531,13 +531,13 @@ int amd_pmf_init_smart_pc(struct amd_pmf_dev *dev)
dev->prev_data = kzalloc(sizeof(*dev->prev_data), GFP_KERNEL);
if (!dev->prev_data) {
ret = -ENOMEM;
goto error;
goto err_free_policy;
}
for (i = 0; i < ARRAY_SIZE(amd_pmf_ta_uuid); i++) {
ret = amd_pmf_tee_init(dev, &amd_pmf_ta_uuid[i]);
if (ret)
return ret;
goto err_free_prev_data;
ret = amd_pmf_start_policy_engine(dev);
switch (ret) {
@@ -550,27 +550,41 @@ int amd_pmf_init_smart_pc(struct amd_pmf_dev *dev)
status = false;
break;
default:
goto error;
ret = -EINVAL;
amd_pmf_tee_deinit(dev);
goto err_free_prev_data;
}
if (status)
break;
}
if (!status && !pb_side_load)
goto error;
if (!status && !pb_side_load) {
ret = -EINVAL;
goto err_free_prev_data;
}
if (pb_side_load)
amd_pmf_open_pb(dev, dev->dbgfs_dir);
ret = amd_pmf_register_input_device(dev);
if (ret)
goto error;
goto err_pmf_remove_pb;
return 0;
error:
amd_pmf_deinit_smart_pc(dev);
err_pmf_remove_pb:
if (pb_side_load && dev->esbin)
amd_pmf_remove_pb(dev);
amd_pmf_tee_deinit(dev);
err_free_prev_data:
kfree(dev->prev_data);
err_free_policy:
kfree(dev->policy_buf);
err_free_dram_buf:
kfree(dev->buf);
err_cancel_work:
cancel_delayed_work_sync(&dev->pb_work);
return ret;
}
+9 -6
View File
@@ -1249,13 +1249,12 @@ int begin_new_exec(struct linux_binprm * bprm)
*/
bprm->point_of_no_return = true;
/*
* Make this the only thread in the thread group.
*/
/* Make this the only thread in the thread group */
retval = de_thread(me);
if (retval)
goto out;
/* see the comment in check_unsafe_exec() */
current->fs->in_exec = 0;
/*
* Cancel any io_uring activity across execve
*/
@@ -1517,6 +1516,8 @@ static void free_bprm(struct linux_binprm *bprm)
}
free_arg_pages(bprm);
if (bprm->cred) {
/* in case exec fails before de_thread() succeeds */
current->fs->in_exec = 0;
mutex_unlock(&current->signal->cred_guard_mutex);
abort_creds(bprm->cred);
}
@@ -1623,6 +1624,10 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
* suid exec because the differently privileged task
* will be able to manipulate the current directory, etc.
* It would be nice to force an unshare instead...
*
* Otherwise we set fs->in_exec = 1 to deny clone(CLONE_FS)
* from another sub-thread until de_thread() succeeds, this
* state is protected by cred_guard_mutex we hold.
*/
n_fs = 1;
spin_lock(&p->fs->lock);
@@ -1881,7 +1886,6 @@ static int bprm_execve(struct linux_binprm *bprm)
sched_mm_cid_after_execve(current);
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
rseq_execve(current);
user_events_execve(current);
@@ -1900,7 +1904,6 @@ out:
force_fatal_sig(SIGSEGV);
sched_mm_cid_after_execve(current);
current->fs->in_exec = 0;
current->in_execve = 0;
return retval;
+3
View File
@@ -104,6 +104,9 @@ int __ext4_check_dir_entry(const char *function, unsigned int line,
else if (unlikely(le32_to_cpu(de->inode) >
le32_to_cpu(EXT4_SB(dir->i_sb)->s_es->s_inodes_count)))
error_msg = "inode out of bounds";
else if (unlikely(next_offset == size && de->name_len == 1 &&
de->name[0] == '.'))
error_msg = "'.' directory cannot be the last in data block";
else
return 0;
+17 -10
View File
@@ -6784,22 +6784,29 @@ static int ext4_statfs_project(struct super_block *sb,
dquot->dq_dqb.dqb_bhardlimit);
limit >>= sb->s_blocksize_bits;
if (limit && buf->f_blocks > limit) {
if (limit) {
uint64_t remaining = 0;
curblock = (dquot->dq_dqb.dqb_curspace +
dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits;
buf->f_blocks = limit;
buf->f_bfree = buf->f_bavail =
(buf->f_blocks > curblock) ?
(buf->f_blocks - curblock) : 0;
if (limit > curblock)
remaining = limit - curblock;
buf->f_blocks = min(buf->f_blocks, limit);
buf->f_bfree = min(buf->f_bfree, remaining);
buf->f_bavail = min(buf->f_bavail, remaining);
}
limit = min_not_zero(dquot->dq_dqb.dqb_isoftlimit,
dquot->dq_dqb.dqb_ihardlimit);
if (limit && buf->f_files > limit) {
buf->f_files = limit;
buf->f_ffree =
(buf->f_files > dquot->dq_dqb.dqb_curinodes) ?
(buf->f_files - dquot->dq_dqb.dqb_curinodes) : 0;
if (limit) {
uint64_t remaining = 0;
if (limit > dquot->dq_dqb.dqb_curinodes)
remaining = limit - dquot->dq_dqb.dqb_curinodes;
buf->f_files = min(buf->f_files, limit);
buf->f_ffree = min(buf->f_ffree, remaining);
}
spin_unlock(&dquot->dq_dqb_lock);
+2 -1
View File
@@ -117,7 +117,8 @@ do { \
if (!(RC)) { \
if (((P)->header.nextindex > \
(((BN) == 0) ? DTROOTMAXSLOT : (P)->header.maxslot)) || \
((BN) && ((P)->header.maxslot > DTPAGEMAXSLOT))) { \
((BN) && (((P)->header.maxslot > DTPAGEMAXSLOT) || \
((P)->header.stblindex >= DTPAGEMAXSLOT)))) { \
BT_PUTPAGE(MP); \
jfs_error((IP)->i_sb, \
"DT_GETPAGE: dtree page corrupt\n"); \
+9 -4
View File
@@ -559,11 +559,16 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size)
size_check:
if (EALIST_SIZE(ea_buf->xattr) != ea_size) {
int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));
if (unlikely(EALIST_SIZE(ea_buf->xattr) > INT_MAX)) {
printk(KERN_ERR "ea_get: extended attribute size too large: %u > INT_MAX\n",
EALIST_SIZE(ea_buf->xattr));
} else {
int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));
printk(KERN_ERR "ea_get: invalid extended attribute\n");
print_hex_dump(KERN_ERR, "", DUMP_PREFIX_ADDRESS, 16, 1,
ea_buf->xattr, size, 1);
printk(KERN_ERR "ea_get: invalid extended attribute\n");
print_hex_dump(KERN_ERR, "", DUMP_PREFIX_ADDRESS, 16, 1,
ea_buf->xattr, size, 1);
}
ea_release(inode, ea_buf);
rc = -EIO;
goto clean_up;
+25 -12
View File
@@ -1057,6 +1057,12 @@ static struct nfs4_ol_stateid * nfs4_alloc_open_stateid(struct nfs4_client *clp)
return openlockstateid(stid);
}
/*
* As the sc_free callback of deleg, this may be called by nfs4_put_stid
* in nfsd_break_one_deleg.
* Considering nfsd_break_one_deleg is called with the flc->flc_lock held,
* this function mustn't ever sleep.
*/
static void nfs4_free_deleg(struct nfs4_stid *stid)
{
struct nfs4_delegation *dp = delegstateid(stid);
@@ -5269,6 +5275,7 @@ static const struct nfsd4_callback_ops nfsd4_cb_recall_ops = {
static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
{
bool queued;
/*
* We're assuming the state code never drops its reference
* without first removing the lease. Since we're in this lease
@@ -5277,7 +5284,10 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
* we know it's safe to take a reference.
*/
refcount_inc(&dp->dl_stid.sc_count);
WARN_ON_ONCE(!nfsd4_run_cb(&dp->dl_recall));
queued = nfsd4_run_cb(&dp->dl_recall);
WARN_ON_ONCE(!queued);
if (!queued)
nfs4_put_stid(&dp->dl_stid);
}
/* Called from break_lease() with flc_lock held. */
@@ -6689,14 +6699,19 @@ deleg_reaper(struct nfsd_net *nn)
spin_lock(&nn->client_lock);
list_for_each_safe(pos, next, &nn->client_lru) {
clp = list_entry(pos, struct nfs4_client, cl_lru);
if (clp->cl_state != NFSD4_ACTIVE ||
list_empty(&clp->cl_delegations) ||
atomic_read(&clp->cl_delegs_in_recall) ||
test_bit(NFSD4_CLIENT_CB_RECALL_ANY, &clp->cl_flags) ||
(ktime_get_boottime_seconds() -
clp->cl_ra_time < 5)) {
if (clp->cl_state != NFSD4_ACTIVE)
continue;
if (list_empty(&clp->cl_delegations))
continue;
if (atomic_read(&clp->cl_delegs_in_recall))
continue;
if (test_bit(NFSD4_CLIENT_CB_RECALL_ANY, &clp->cl_flags))
continue;
if (ktime_get_boottime_seconds() - clp->cl_ra_time < 5)
continue;
if (clp->cl_cb_state != NFSD4_CB_UP)
continue;
}
list_add(&clp->cl_ra_cblist, &cblist);
/* release in nfsd4_cb_recall_any_release */
@@ -6880,7 +6895,7 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate,
*/
statusmask |= SC_STATUS_REVOKED;
statusmask |= SC_STATUS_ADMIN_REVOKED;
statusmask |= SC_STATUS_ADMIN_REVOKED | SC_STATUS_FREEABLE;
if (ZERO_STATEID(stateid) || ONE_STATEID(stateid) ||
CLOSE_STATEID(stateid))
@@ -7535,9 +7550,7 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
if ((status = fh_verify(rqstp, &cstate->current_fh, S_IFREG, 0)))
return status;
status = nfsd4_lookup_stateid(cstate, stateid, SC_TYPE_DELEG,
SC_STATUS_REVOKED | SC_STATUS_FREEABLE,
&s, nn);
status = nfsd4_lookup_stateid(cstate, stateid, SC_TYPE_DELEG, SC_STATUS_REVOKED, &s, nn);
if (status)
goto out;
dp = delegstateid(s);
+21 -23
View File
@@ -1959,6 +1959,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
struct svc_serv *serv;
LIST_HEAD(permsocks);
struct nfsd_net *nn;
bool delete = false;
int err, rem;
mutex_lock(&nfsd_mutex);
@@ -2019,34 +2020,28 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
}
}
/* For now, no removing old sockets while server is running */
if (serv->sv_nrthreads && !list_empty(&permsocks)) {
/*
* If there are listener transports remaining on the permsocks list,
* it means we were asked to remove a listener.
*/
if (!list_empty(&permsocks)) {
list_splice_init(&permsocks, &serv->sv_permsocks);
spin_unlock_bh(&serv->sv_lock);
delete = true;
}
spin_unlock_bh(&serv->sv_lock);
/* Do not remove listeners while there are active threads. */
if (serv->sv_nrthreads) {
err = -EBUSY;
goto out_unlock_mtx;
}
/* Close the remaining sockets on the permsocks list */
while (!list_empty(&permsocks)) {
xprt = list_first_entry(&permsocks, struct svc_xprt, xpt_list);
list_move(&xprt->xpt_list, &serv->sv_permsocks);
/*
* Newly-created sockets are born with the BUSY bit set. Clear
* it if there are no threads, since nothing can pick it up
* in that case.
*/
if (!serv->sv_nrthreads)
clear_bit(XPT_BUSY, &xprt->xpt_flags);
set_bit(XPT_CLOSE, &xprt->xpt_flags);
spin_unlock_bh(&serv->sv_lock);
svc_xprt_close(xprt);
spin_lock_bh(&serv->sv_lock);
}
spin_unlock_bh(&serv->sv_lock);
/*
* Since we can't delete an arbitrary llist entry, destroy the
* remaining listeners and recreate the list.
*/
if (delete)
svc_xprt_destroy_all(serv, net);
/* walk list of addrs again, open any that still don't exist */
nlmsg_for_each_attr(attr, info->nlhdr, GENL_HDRLEN, rem) {
@@ -2073,6 +2068,9 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
xprt = svc_find_listener(serv, xcl_name, net, sa);
if (xprt) {
if (delete)
WARN_ONCE(1, "Transport type=%s already exists\n",
xcl_name);
svc_xprt_put(xprt);
continue;
}
+19 -9
View File
@@ -1935,9 +1935,17 @@ out:
return err;
}
/*
* Unlink a file or directory
* N.B. After this call fhp needs an fh_put
/**
* nfsd_unlink - remove a directory entry
* @rqstp: RPC transaction context
* @fhp: the file handle of the parent directory to be modified
* @type: enforced file type of the object to be removed
* @fname: the name of directory entry to be removed
* @flen: length of @fname in octets
*
* After this call fhp needs an fh_put.
*
* Returns a generic NFS status code in network byte-order.
*/
__be32
nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
@@ -2011,15 +2019,17 @@ out_drop_write:
fh_drop_write(fhp);
out_nfserr:
if (host_err == -EBUSY) {
/* name is mounted-on. There is no perfect
* error status.
/*
* See RFC 8881 Section 18.25.4 para 4: NFSv4 REMOVE
* wants a status unique to the object type.
*/
err = nfserr_file_open;
} else {
err = nfserrno(host_err);
if (type != S_IFDIR)
err = nfserr_file_open;
else
err = nfserr_acces;
}
out:
return err;
return err != nfs_ok ? err : nfserrno(host_err);
out_unlock:
inode_unlock(dirp);
goto out_drop_write;
+5
View File
@@ -129,6 +129,11 @@ config CC_HAS_COUNTED_BY
# https://github.com/llvm/llvm-project/pull/112636
depends on !(CC_IS_CLANG && CLANG_VERSION < 190103)
config LD_CAN_USE_KEEP_IN_OVERLAY
# ld.lld prior to 21.0.0 did not support KEEP within an overlay description
# https://github.com/llvm/llvm-project/pull/130661
def_bool LD_IS_BFD || LLD_VERSION >= 210000
config PAHOLE_VERSION
int
default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE))
+34 -2
View File
@@ -312,7 +312,7 @@ static const char *synth_field_fmt(char *type)
else if (strcmp(type, "gfp_t") == 0)
fmt = "%x";
else if (synth_field_is_string(type))
fmt = "%.*s";
fmt = "%s";
else if (synth_field_is_stack(type))
fmt = "%s";
@@ -859,6 +859,38 @@ static struct trace_event_fields synth_event_fields_array[] = {
{}
};
static int synth_event_reg(struct trace_event_call *call,
enum trace_reg type, void *data)
{
struct synth_event *event = container_of(call, struct synth_event, call);
switch (type) {
#ifdef CONFIG_PERF_EVENTS
case TRACE_REG_PERF_REGISTER:
#endif
case TRACE_REG_REGISTER:
if (!try_module_get(event->mod))
return -EBUSY;
break;
default:
break;
}
int ret = trace_event_reg(call, type, data);
switch (type) {
#ifdef CONFIG_PERF_EVENTS
case TRACE_REG_PERF_UNREGISTER:
#endif
case TRACE_REG_UNREGISTER:
module_put(event->mod);
break;
default:
break;
}
return ret;
}
static int register_synth_event(struct synth_event *event)
{
struct trace_event_call *call = &event->call;
@@ -888,7 +920,7 @@ static int register_synth_event(struct synth_event *event)
goto out;
}
call->flags = TRACE_EVENT_FL_TRACEPOINT;
call->class->reg = trace_event_reg;
call->class->reg = synth_event_reg;
call->class->probe = trace_event_raw_event_synth;
call->data = event;
call->tp = event->tp;
+1
View File
@@ -1353,6 +1353,7 @@ void graph_trace_close(struct trace_iterator *iter)
if (data) {
free_percpu(data->cpu_data);
kfree(data);
iter->private = NULL;
}
}
-2
View File
@@ -233,8 +233,6 @@ static void irqsoff_trace_open(struct trace_iterator *iter)
{
if (is_graph(iter->tr))
graph_trace_open(iter);
else
iter->private = NULL;
}
static void irqsoff_trace_close(struct trace_iterator *iter)
-1
View File
@@ -2038,7 +2038,6 @@ static int start_kthread(unsigned int cpu)
if (IS_ERR(kthread)) {
pr_err(BANNER "could not start sampling thread\n");
stop_per_cpu_kthreads();
return -ENOMEM;
}
-2
View File
@@ -170,8 +170,6 @@ static void wakeup_trace_open(struct trace_iterator *iter)
{
if (is_graph(iter->tr))
graph_trace_open(iter);
else
iter->private = NULL;
}
static void wakeup_trace_close(struct trace_iterator *iter)
+3
View File
@@ -1283,6 +1283,9 @@ static int check_vma_flags(struct vm_area_struct *vma, unsigned long gup_flags)
if ((gup_flags & FOLL_LONGTERM) && vma_is_fsdax(vma))
return -EOPNOTSUPP;
if ((gup_flags & FOLL_SPLIT_PMD) && is_vm_hugetlb_page(vma))
return -EOPNOTSUPP;
if (vma_is_secretmem(vma))
return -EFAULT;
+22 -8
View File
@@ -876,18 +876,32 @@ static int zswap_cpu_comp_dead(unsigned int cpu, struct hlist_node *node)
{
struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node);
struct crypto_acomp_ctx *acomp_ctx = per_cpu_ptr(pool->acomp_ctx, cpu);
struct acomp_req *req;
struct crypto_acomp *acomp;
u8 *buffer;
if (IS_ERR_OR_NULL(acomp_ctx))
return 0;
mutex_lock(&acomp_ctx->mutex);
if (!IS_ERR_OR_NULL(acomp_ctx)) {
if (!IS_ERR_OR_NULL(acomp_ctx->req))
acomp_request_free(acomp_ctx->req);
acomp_ctx->req = NULL;
if (!IS_ERR_OR_NULL(acomp_ctx->acomp))
crypto_free_acomp(acomp_ctx->acomp);
kfree(acomp_ctx->buffer);
}
req = acomp_ctx->req;
acomp = acomp_ctx->acomp;
buffer = acomp_ctx->buffer;
acomp_ctx->req = NULL;
acomp_ctx->acomp = NULL;
acomp_ctx->buffer = NULL;
mutex_unlock(&acomp_ctx->mutex);
/*
* Do the actual freeing after releasing the mutex to avoid subtle
* locking dependencies causing deadlocks.
*/
if (!IS_ERR_OR_NULL(req))
acomp_request_free(req);
if (!IS_ERR_OR_NULL(acomp))
crypto_free_acomp(acomp);
kfree(buffer);
return 0;
}