Merge 6.12.23 into android16-6.12
GKI (arm64) relevant 77 out of 426 changes, affecting 93 files +851/-46140426fc097cpufreq: scpi: compare kHz instead of Hz [1 file, +3/-2]7b1d2454d0sched: Cancel the slice protection of the idle entity [1 file, +33/-13]b576c4834dsched/eevdf: Force propagating min_slice of cfs_rq when {en,de}queue tasks [1 file, +4/-0]f381c92ab4cpufreq: governor: Fix negative 'idle_time' handling in dbs_update() [1 file, +23/-22]4d28c2ab2alockdep/mm: Fix might_fault() lockdep check of current->mm->mmap_lock [1 file, +0/-2]31d5665172PM: sleep: Adjust check before setting power.must_resume [3 files, +9/-8]864750968dwatchdog/hardlockup/perf: Fix perf_event memory leak [4 files, +1/-61]c3a4c91a40PM: sleep: Fix handling devices with direct_complete set on errors [1 file, +4/-4]345957c1cflockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*() [1 file, +4/-4]5108828fecperf/ring_buffer: Allow the EPOLLRDNORM flag for poll [1 file, +1/-1]15291b561dALSA: timer: Don't take register_mutex with copy_from/to_user() [1 file, +77/-70]254f771c70PCI: Use downstream bridges for distributing resources [1 file, +1/-2]372e387c4fPCI: Remove add_align overwrite unrelated to size0 [1 file, +0/-1]f556b6ba0aPCI/ASPM: Fix link state exit during switch upstream function removal [1 file, +9/-8]8ba27aa512PCI/ACS: Fix 'pci=config_acs=' parameter [1 file, +13/-5]2a54a1a9c6PCI/portdrv: Only disable pciehp interrupts early when needed [1 file, +5/-3]bcb4842004PCI: Avoid reset when disabled via sysfs [1 file, +4/-0]362b5879a7PCI: Remove stray put_device() in pci_register_host_bridge() [1 file, +2/-3]b004cf517dPCI: dwc: ep: Return -ENOMEM for allocation failures [1 file, +1/-0]e23dfb926fPCI: Fix BAR resizing when VF BARs are assigned [1 file, +2/-2]057298d193crypto: bpf - Add MODULE_DESCRIPTION for skcipher [1 file, +1/-0]2df19f5f6fremoteproc: core: Clear table_sz when rproc_shutdown [1 file, +1/-0]bfcca46f01of: property: Increase NR_FWNODE_REFERENCE_ARGS [1 file, +1/-1]8ed5381756bpf: Use preempt_count() directly in bpf_send_signal_common() [1 file, +1/-1]6d4e56e4c5crypto: api - Fix larval relookup type and mask [1 file, +7/-10]8ba426f170rust: fix signature of rust_fmt_argument [2 files, +4/-5]19e6817f84bpf: Fix array bounds error with may_goto [2 files, +22/-4]c2ddf2f576leds: Fix LED_OFF brightness race [1 file, +18/-4]8109f57613usb: xhci: correct debug message page size calculation [1 file, +3/-3]c42282a078kernel/events/uprobes: handle device-exclusive entries correctly in __replace_page() [1 file, +12/-1]5b2b692804tty: n_tty: use uint for space returned by tty_write_room() [1 file, +7/-6]aba9189992fs/procfs: fix the comment above proc_pid_wchan() [1 file, +1/-1]456300be23thermal: core: Remove duplicate struct declaration [1 file, +0/-2]6a14075325exfat: fix the infinite loop in exfat_find_last_cluster() [1 file, +1/-1]4a9595eb02exfat: fix missing shutdown check [1 file, +27/-2]28b21ee8e8rtnetlink: Allocate vfinfo size for VF GUIDs when supported [1 file, +3/-0]2a6f8823ffring-buffer: Fix bytes_dropped calculation issue [1 file, +2/-2]8e49f912aesched/smt: Always inline sched_smt_active() [1 file, +1/-1]00911b416acontext_tracking: Always inline ct_{nmi,irq}_{enter,exit}() [1 file, +4/-4]d80168db5ercu-tasks: Always inline rcu_irq_work_resched() [1 file, +1/-1]63bd235de2nvme-pci: clean up CMBMSC when registering CMB fails [1 file, +1/-0]5eb8c8fee7nvme-pci: skip CMB blocks incompatible with PCI P2P DMA [1 file, +12/-8]7364420090perf/core: Fix perf_pmu_register() vs. perf_init_event() [1 file, +26/-2]9207575878exfat: add a check for invalid data size [1 file, +5/-0]ddf40162aclocking/semaphore: Use wake_q to wake up processes outside lock critical section [1 file, +9/-4]3e6ce0d9ecnvme-pci: fix stuck reset on concurrent DPC and HP [1 file, +12/-1]93c59b5548net: devmem: do not WARN conditionally after netdev_rx_queue_restart() [1 file, +3/-1]d840c84cddcan: statistics: use atomic access in hot path [3 files, +39/-31]7a95b48873netfs: Fix netfs_unbuffered_read() to return ssize_t rather than int [1 file, +3/-3]7e3497d7daublk: make sure ubq->canceling is set when queue is frozen [1 file, +29/-10]a3800b64f8nvme/ioctl: don't warn on vectorized uring_cmd with fixed buffer [1 file, +1/-1]94d5ad7b41udp: Fix multiple wraparounds of sk->sk_rmem_alloc. [1 file, +17/-9]a116b271bfudp: Fix memory accounting leak. [1 file, +7/-9]47744d0d5fvsock: avoid timeout during connect() if the socket is closing [1 file, +5/-1]9539c1721atunnels: Accept PACKET_HOST in skb_tunnel_check_pmtu(). [2 files, +1/-7]92a5c18513net: decrease cached dst counters in dst_release [1 file, +8/-0]de579015d1ipv6: fix omitted netlink attributes when using RTEXT_FILTER_SKIP_STATS [1 file, +25/-12]2952776c69net: fix geneve_opt length integer overflow [4 files, +4/-4]1eb36a2cdfipv6: Start path selection from the first nexthop [1 file, +35/-3]f4fea25f5cipv6: Do not consider link down nexthops in path selection [1 file, +4/-2]e9c9288072perf/core: Fix child_total_time_enabled accounting bug at task exit [1 file, +9/-9]387dc88c2ctracing: Switch trace_events_hist.c code over to use guard() [1 file, +10/-22]fe87f8d3a5tracing/hist: Add poll(POLLIN) support on hist file [3 files, +95/-3]eecb62a24btracing/hist: Support POLLPRI event for poll on histogram [1 file, +26/-3]ef79f2dec7tracing: Correct the refcount if the hist/hist_debug file fails to open [1 file, +18/-6]39bc1484ebcgroup/rstat: Tracking cgroup-level niced CPU time [2 files, +15/-5]3501677651cgroup/rstat: Fix forceidle time in cpu.stat [1 file, +13/-16]d689645cd1usbnet:fix NPE during rx_complete [1 file, +3/-3]49b0a6ab8eexfat: fix random stack corruption after get_block [1 file, +33/-6]37c9875c17exfat: fix potential wrong error return from get_block [1 file, +2/-0]cffc2a6718tracing: Ensure module defining synth event cannot be unloaded while tracing [1 file, +29/-1]33052e7f52tracing: Fix synth event printk format for str fields [1 file, +1/-1]2e877ff349mm/gup: reject FOLL_SPLIT_PMD with hugetlb VMAs [1 file, +3/-0]13d6f8ba50ext4: don't over-report free space or inodes in statvfs [1 file, +17/-10]b47584c556ext4: fix OOB read when checking dotdot dir [1 file, +3/-0]e2d8e7bd33exec: fix the racy usage of fs_struct->in_exec [1 file, +9/-6]625e9b91ebtracing: 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:
@@ -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
@@ -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
|
||||
|
||||
@@ -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); \
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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(¤t->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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1353,6 +1353,7 @@ void graph_trace_close(struct trace_iterator *iter)
|
||||
if (data) {
|
||||
free_percpu(data->cpu_data);
|
||||
kfree(data);
|
||||
iter->private = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user