Commit Graph

3874 Commits

Author SHA1 Message Date
Greg Kroah-Hartman 9634c94147 Merge 6.12.13 into android16-6.12
GKI (arm64) relevant 102 out of 584 changes, affecting 165 files +1491/-594
  4338831b83 coredump: Do not lock during 'comm' reporting [1 file, +2/-2]
  784908004f fs: fix proc_handler for sysctl_nr_open [1 file, +1/-1]
  f83f330fc4 block: retry call probe after request_module in blk_request_module [1 file, +17/-5]
  e278c7ff75 block: check BLK_FEAT_POLL under q_usage_count [2 files, +22/-12]
  d313ff5308 block: don't update BLK_FEAT_POLL in __blk_mq_update_nr_hw_queues [4 files, +22/-26]
  4621771de1 nvme: Add error check for xa_store in nvme_get_effects_log [1 file, +6/-2]
  e8c390a9a5 nvme: Add error path for xa_store in nvme_init_effects [1 file, +22/-4]
  68303b5d38 select: Fix unbalanced user_access_end() [1 file, +2/-2]
  1e8c151fb2 nvme: fix bogus kzalloc() return check in nvme_init_effects_log() [1 file, +1/-1]
  e4b64d34a4 sched/fair: Untangle NEXT_BUDDY and pick_next_task() [2 files, +11/-2]
  5bb4039f77 sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat [2 files, +14/-4]
  fd2818c5e0 sched: Split out __schedule() deactivate task logic into a helper [1 file, +40/-27]
  3f1215588b sched: psi: pass enqueue/dequeue flags to psi callbacks directly [3 files, +53/-44]
  10a7d3e734 psi: Fix race when task wakes up before psi_sched_switch() adjusts flags [2 files, +7/-3]
  ebaeca33d3 HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections [1 file, +2/-0]
  7d68c20638 OPP: add index check to assert to avoid buffer overflow in _read_freq() [1 file, +27/-15]
  ff2def2518 OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized [1 file, +13/-2]
  82bd38bd54 net_sched: sch_sfq: handle bigger packets [1 file, +13/-26]
  7d8947f215 net_sched: sch_sfq: don't allow 1 packet limit [1 file, +4/-0]
  e561d1a2ba clk: fix an OF node reference leak in of_clk_get_parent_name() [1 file, +3/-1]
  bd1bb30b9f HID: multitouch: fix support for Goodix PID 0x01e9 [1 file, +1/-1]
  d474a73856 inetpeer: remove create argument of inet_getpeer_v[46]() [7 files, +11/-12]
  dc4fd82dad inetpeer: remove create argument of inet_getpeer() [2 files, +5/-13]
  4622e45097 inetpeer: update inetpeer timestamp in inet_getpeer() [1 file, +4/-8]
  9345b588f8 inetpeer: do not get a refcount in inet_getpeer() [7 files, +32/-29]
  4f8344fce9 udp: Deal with race between UDP socket address change and rehash [2 files, +106/-0]
  a7175e363a dt-bindings: clock: imx93: Drop IMX93_CLK_END macro definition [1 file, +0/-1]
  036f2f5109 dt-bindings: clock: imx93: Add SPDIF IPG clk [1 file, +1/-0]
  5078123528 regulator: of: Implement the unwind path of of_regulator_match() [1 file, +13/-1]
  8937f5e38a ax25: rcu protect dev->ax25_ptr [7 files, +35/-20]
  3d62a5037f OPP: OF: Fix an OF node leak in _opp_add_static_v2() [1 file, +3/-1]
  a3bdd14936 HID: fix generic desktop D-Pad controls [2 files, +18/-20]
  a8251d3a4c mfd: syscon: Fix race in device_node_get_regmap() [1 file, +10/-9]
  984e7d2aa0 wifi: mac80211: Fix common size calculation for ML element [1 file, +3/-8]
  df2f2d9199 Bluetooth: btbcm: Fix NULL deref in btbcm_get_board_name() [1 file, +3/-0]
  f98ccd7d77 dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name(). [1 file, +2/-0]
  33e2168788 net: let net.core.dev_weight always be non-zero [1 file, +4/-1]
  b382ab9b88 net: avoid race between device unregistration and ethnl ops [1 file, +1/-1]
  73c7e1d689 net: sched: Disallow replacing of child qdisc from one parent to another [1 file, +4/-0]
  d7fe7e1bbe netfilter: nf_tables: fix set size with rbtree backend [3 files, +96/-2]
  5213efec90 net: sched: refine software bypass handling in tc_run [8 files, +55/-45]
  a0753466f0 tcp_cubic: fix incorrect HyStart round start detection [1 file, +5/-3]
  b7de862bda crypto: api - Fix boot-up self-test race [1 file, +2/-2]
  b002750000 bpf: bpf_local_storage: Always use bpf_mem_alloc in PREEMPT_RT [1 file, +6/-2]
  eb2e58484b rhashtable: Fix potential deadlock by moving schedule_work outside lock [1 file, +6/-4]
  8e7d29b698 bpf: Use refcount_t instead of atomic_t for mmap_count [1 file, +4/-4]
  b777b14c2a bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing [3 files, +26/-5]
  78b9778349 bpf: Send signals asynchronously if !preemptible [1 file, +1/-1]
  0e272fe6a0 bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write [1 file, +1/-1]
  f939008a52 rhashtable: Fix rhashtable_try_insert test [1 file, +7/-5]
  33e47d9573 bpf: Cancel the running bpf_timer through kworker for PREEMPT_RT [1 file, +16/-2]
  6cffdf4838 of: property: Avoiding using uninitialized variable @imaplen in parse_interrupt_map() [1 file, +1/-1]
  92ed1efb6a of: reserved-memory: Do not make kmemleak ignore freed address [1 file, +2/-1]
  9a0fe62f93 of: reserved_mem: Restructure how the reserved memory regions are processed [3 files, +122/-54]
  e61977c714 of/fdt: Restore possibility to use both ACPI and FDT from bootloader [1 file, +1/-9]
  45e1246e5c PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy() [1 file, +1/-1]
  58465dfc42 media: uvcvideo: Propagate buf->error to userspace [1 file, +2/-1]
  a2c80a1881 PCI: qcom: Update ICC and OPP values after Link Up event [1 file, +2/-0]
  a665fab63d PCI: dwc: Always stop link in the dw_pcie_suspend_noirq [1 file, +1/-0]
  0e0ac81d51 scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails [1 file, +1/-0]
  4896402780 erofs: fix potential return value overflow of z_erofs_shrink_scan() [1 file, +1/-2]
  565611d101 module: Extend the preempt disabled section in dereference_symbol_descriptor(). [1 file, +1/-1]
  fd41b2e9aa module: Don't fail module loading when setting ro_after_init section RO failed [1 file, +4/-3]
  1614e75d1a driver core: class: Fix wild pointer dereferences in API class_dev_iter_next() [1 file, +8/-1]
  b35a3edc7c serial: 8250: Adjust the timeout for FIFO mode [1 file, +26/-6]
  87fdd4c447 xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO [1 file, +6/-4]
  2a64cff2aa xfrm: Add support for per cpu xfrm state handling. [6 files, +112/-22]
  aa48a18fdb xfrm: Cache used outbound xfrm states at the policy. [3 files, +71/-0]
  5e4334dc39 xfrm: Add an inbound percpu state cache. [6 files, +70/-7]
  a16871c783 xfrm: state: fix out-of-bounds read during lookup [1 file, +70/-19]
  6945701ca1 xfrm: delete intermediate secpath entry in packet offload mode [1 file, +13/-3]
  24ac5b7524 regulator: core: Add missing newline character [1 file, +1/-1]
  a099834a51 ipmr: do not call mr_mfc_uses_dev() for unres entries [1 file, +0/-3]
  3b732c60a0 PM: hibernate: Add error handling for syscore_suspend() [1 file, +6/-1]
  e468aace40 xfrm: Don't disable preemption while looking up cache state. [1 file, +1/-3]
  3e44707da8 ptp: Properly handle compat ioctls [1 file, +4/-0]
  a68d7a9fb8 ethtool: Fix set RXNFC command with symmetric RSS hash [1 file, +1/-1]
  a06bb37d65 vsock: Allow retrying on connect() failure [1 file, +5/-0]
  1dd823a46e tcp: correct handling of extreme memory squeeze [1 file, +6/-3]
  557707906d net: xdp: Disallow attaching device-bound programs in generic mode [1 file, +4/-0]
  a23834b782 genksyms: fix memory leak when the same symbol is added from source [2 files, +15/-2]
  52f0a28e17 genksyms: fix memory leak when the same symbol is read from *.symref file [3 files, +9/-5]
  206d8e0242 io_uring/uring_cmd: use cached cmd_op in io_uring_cmd_sock() [1 file, +1/-1]
  6e26ca1818 kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST [1 file, +4/-2]
  e4e8ed67e0 kconfig: fix memory leak in sym_warn_unmet_dep() [1 file, +1/-0]
  00d1943fe4 f2fs: Introduce linear search for dentries [3 files, +45/-19]
  e0216c39b4 ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro [1 file, +2/-0]
  f395b7efce net: usb: rtl8150: enable basic endpoint checking [1 file, +22/-0]
  ae069cd2ba usb: xhci: Fix NULL pointer dereference on certain command aborts [1 file, +2/-1]
  ebba1bebf0 usb: dwc3: core: Defer the probe until USB power supply ready [1 file, +21/-9]
  01c74aeac2 usb: dwc3: Skip resume if pm_runtime_set_active() fails [1 file, +4/-1]
  ce5c91a1b2 usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE [1 file, +1/-1]
  15b50cbc6f usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS [3 files, +16/-8]
  f2013d19b7 remoteproc: core: Fix ida_free call while not allocated [1 file, +7/-7]
  d1f8e69eec media: uvcvideo: Fix double free in error path [1 file, +1/-0]
  8de4e5a922 of: reserved-memory: Warn for missing static reserved memory regions [1 file, +5/-0]
  698943070e dma-mapping: save base/size instead of pointer to shared DMA pool [1 file, +8/-6]
  78b366aa0e xfrm: Add error handling when nla_put_u32() returns an error [1 file, +4/-1]
  364d7e7f30 xfrm: Fix acquire state insertion. [1 file, +1/-0]
  1cf2177959 ethtool: Fix access to uninitialized fields in set RXNFC command [1 file, +2/-1]
  c3a3741db8 memcg: fix soft lockup in the OOM process [2 files, +13/-2]
  333f128224 ethtool: ntuple: fix rss + ring_cookie check [1 file, +1/-1]

Changes in 6.12.13
	coredump: Do not lock during 'comm' reporting
	powerpc/book3s64/hugetlb: Fix disabling hugetlb when fadump is active
	dlm: fix removal of rsb struct that is master and dir record
	dlm: fix srcu_read_lock() return type to int
	afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY
	afs: Fix directory format encoding struct
	afs: Fix cleanup of immediately failed async calls
	fs: fix proc_handler for sysctl_nr_open
	block: copy back bounce buffer to user-space correctly in case of split
	block: retry call probe after request_module in blk_request_module
	ps3disk: Do not use dev->bounce_size before it is set
	nbd: don't allow reconnect after disconnect
	pstore/blk: trivial typo fixes
	block: check BLK_FEAT_POLL under q_usage_count
	block: don't update BLK_FEAT_POLL in __blk_mq_update_nr_hw_queues
	nvme-tcp: Fix I/O queue cpu spreading for multiple controllers
	nvme: Add error check for xa_store in nvme_get_effects_log
	powerpc/pseries/iommu: IOMMU incorrectly marks MMIO range in DDW
	selftests/powerpc: Fix argument order to timer_sub()
	nvme: Add error path for xa_store in nvme_init_effects
	btrfs: improve the warning and error message for btrfs_remove_qgroup()
	partitions: ldm: remove the initial kernel-doc notation
	btrfs: subpage: fix the bitmap dump of the locked flags
	select: Fix unbalanced user_access_end()
	nvme: fix bogus kzalloc() return check in nvme_init_effects_log()
	afs: Fix the fallback handling for the YFS.RemoveFile2 RPC call
	perf/core: Save raw sample data conditionally based on sample type
	sched/fair: Untangle NEXT_BUDDY and pick_next_task()
	sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat
	sched: Fix race between yield_to() and try_to_wake_up()
	x86/cpu: Enable SD_ASYM_PACKING for PKG domain on AMD
	x86/topology: Use x86_sched_itmt_flags for PKG domain unconditionally
	sched: Split out __schedule() deactivate task logic into a helper
	sched: psi: pass enqueue/dequeue flags to psi callbacks directly
	psi: Fix race when task wakes up before psi_sched_switch() adjusts flags
	drm/v3d: Fix performance counter source settings on V3D 7.x
	drm/rockchip: vop2: fix rk3588 dp+dsi maxclk verification
	drm/msm/dp: set safe_to_exit_level before printing it
	drm/msm/hdmi: simplify code in pll_get_integloop_gain
	drm/etnaviv: Fix page property being used for non writecombine buffers
	HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections
	drm/amd/pm: Fix an error handling path in vega10_enable_se_edc_force_stall_config()
	drm/amdgpu: Fix potential NULL pointer dereference in atomctrl_get_smc_sclk_range_table
	drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset
	drm/rockchip: vop2: Fix the mixer alpha setup for layer 0
	drm/panthor: Preserve the result returned by panthor_fw_resume()
	drm/rockchip: vop2: Fix the windows switch between different layers
	printk: Defer legacy printing when holding printk_cpu_sync
	drm/connector: Allow clearing HDMI infoframes
	drm/rockchip: vop2: Set AXI id for rk3588
	drm/rockchip: vop2: Setup delay cycle for Esmart2/3
	drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8
	drm/rockchip: vop2: Add check for 32 bpp format for rk3588
	drm/rockchip: vop2: include rockchip_drm_drv.h
	drm/amdgpu/vcn: reset fw_shared under SRIOV
	OPP: add index check to assert to avoid buffer overflow in _read_freq()
	OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
	drm/msm/dpu: provide DSPP and correct LM config for SDM670
	drm/msm/dpu: link DSPP_2/_3 blocks on SM8150
	drm/msm/dpu: link DSPP_2/_3 blocks on SC8180X
	drm/msm/dpu: link DSPP_2/_3 blocks on SM8250
	drm/msm/dpu: link DSPP_2/_3 blocks on SM8350
	drm/msm/dpu: link DSPP_2/_3 blocks on SM8550
	drm/msm/dpu: link DSPP_2/_3 blocks on SM8650
	drm/msm/dpu: link DSPP_2/_3 blocks on X1E80100
	drm/msm: Check return value of of_dma_configure()
	drm/msm: don't clean up priv->kms prematurely
	drm/msm/mdp4: correct LCDC regulator name
	drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE
	drm/amdgpu: tear down ttm range manager for doorbell in amdgpu_ttm_fini()
	Revert "drm/amdgpu/gfx9: put queue resets behind a debug option"
	drm/amdgpu: fix gpu recovery disable with per queue reset
	genirq: Make handle_enforce_irqctx() unconditionally available
	ipmi: ipmb: Add check devm_kasprintf() returned value
	wifi: ath11k: Fix unexpected return buffer manager error for WCN6750/WCN6855
	wifi: rtlwifi: rtl8821ae: phy: restore removed code to fix infinite loop
	wifi: rtlwifi: do not complete firmware loading needlessly
	wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step
	wifi: rtlwifi: wait for firmware loading before releasing memory
	wifi: rtlwifi: fix init_sw_vars leak when probe fails
	wifi: rtlwifi: usb: fix workqueue leak when probe fails
	wifi: wcn36xx: fix channel survey memory allocation size
	clk: renesas: cpg-mssr: Fix 'soc' node handling in cpg_mssr_reserved_init()
	wifi: cfg80211: tests: Fix potential NULL dereference in test_cfg80211_parse_colocated_ap()
	selftests/bpf: Actuate tx_metadata_len in xdp_hw_metadata
	net_sched: sch_sfq: handle bigger packets
	net_sched: sch_sfq: don't allow 1 packet limit
	spi: zynq-qspi: Add check for clk_enable()
	rxrpc: Fix handling of received connection abort
	dt-bindings: mmc: controller: clarify the address-cells description
	clk: fix an OF node reference leak in of_clk_get_parent_name()
	dt-bindings: leds: class-multicolor: Fix path to color definitions
	wifi: rtlwifi: remove unused check_buddy_priv
	wifi: rtlwifi: destroy workqueue at rtl_deinit_core
	wifi: rtlwifi: fix memory leaks and invalid access at probe error path
	wifi: rtlwifi: pci: wait for firmware loading before releasing memory
	HID: multitouch: fix support for Goodix PID 0x01e9
	regulator: dt-bindings: mt6315: Drop regulator-compatible property
	wifi: brcmfmac: add missing header include for brcmf_dbg
	module: Convert default symbol namespace to string literal
	hwmon: (nct6775): Actually make use of the HWMON_NCT6775 symbol namespace
	ACPI: fan: cleanup resources in the error path of .probe()
	cpupower: fix TSC MHz calculation
	dt-bindings: mfd: bd71815: Fix rsense and typos
	leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata()
	inetpeer: remove create argument of inet_getpeer_v[46]()
	inetpeer: remove create argument of inet_getpeer()
	inetpeer: update inetpeer timestamp in inet_getpeer()
	inetpeer: do not get a refcount in inet_getpeer()
	pwm: stm32-lp: Add check for clk_enable()
	cpufreq: schedutil: Fix superfluous updates caused by need_freq_update
	selftests: ktap_helpers: Fix uninitialized variable
	ptr_ring: do not block hard interrupts in ptr_ring_resize_multiple()
	net: airoha: Fix error path in airoha_probe()
	gpio: pca953x: log an error when failing to get the reset GPIO
	cpufreq: qcom: Fix qcom_cpufreq_hw_recalc_rate() to query LUT if LMh IRQ is not available
	cpufreq: qcom: Implement clk_ops::determine_rate() for qcom_cpufreq* clocks
	udp: Deal with race between UDP socket address change and rehash
	clk: imx8mp: Fix clkout1/2 support
	dt-bindings: clock: imx93: Drop IMX93_CLK_END macro definition
	dt-bindings: clock: Add i.MX91 clock support
	dt-bindings: clock: imx93: Add SPDIF IPG clk
	clk: imx93: Move IMX93_CLK_END macro to clk driver
	clk: imx: add i.MX91 clk
	clk: imx93: Add IMX93_CLK_SPDIF_IPG clock
	arm64: dts: imx93: Use IMX93_CLK_SPDIF_IPG as SPDIF IPG clock
	clk: imx: Apply some clks only for i.MX93
	clk: qcom: camcc-x1e80100: Set titan_top_gdsc as the parent GDSC of subordinate GDSCs
	team: prevent adding a device which is already a team device lower
	dt-bindings: clock: sunxi: Export PLL_VIDEO_2X and PLL_MIPI
	clk: sunxi-ng: a64: drop redundant CLK_PLL_VIDEO0_2X and CLK_PLL_MIPI
	clk: sunxi-ng: a64: stop force-selecting PLL-MIPI as TCON0 parent
	regulator: of: Implement the unwind path of of_regulator_match()
	ax25: rcu protect dev->ax25_ptr
	net/mlx5: HWS, fix definer's HWS_SET32 macro for negative offset
	OPP: OF: Fix an OF node leak in _opp_add_static_v2()
	ipmi: ssif_bmc: Fix new request loss when bmc ready for a response
	wifi: ath12k: fix tx power, max reg power update to firmware
	clk: qcom: gcc-sdm845: Do not use shared clk_ops for QUPs
	HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check
	HID: fix generic desktop D-Pad controls
	leds: cht-wcove: Use devm_led_classdev_register() to avoid memory leak
	mfd: syscon: Fix race in device_node_get_regmap()
	samples/landlock: Fix possible NULL dereference in parse_path()
	wifi: mt76: mt7996: fix invalid interface combinations
	wifi: wlcore: fix unbalanced pm_runtime calls
	wifi: rtw89: handle entity active flag per PHY
	wifi: rtw89: chan: manage active interfaces
	wifi: rtw89: tweak setting of channel and TX power for MLO
	wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes
	wifi: rtw89: chan: fix soft lockup in rtw89_entity_recalc_mgnt_roles()
	wifi: rtw89: avoid to init mgnt_entry list twice when WoWLAN failed
	wifi: rtw89: mcc: consider time limits not divisible by 1024
	wifi: rtw89: fix race between cancel_hw_scan and hw_scan completion
	hwmon: Fix help text for aspeed-g6-pwm-tach
	wifi: mt76: mt7925: fix off by one in mt7925_load_clc()
	wifi: mt76: mt7915: Fix mesh scan on MT7916 DBDC
	wifi: iwlwifi: fw: read STEP table from correct UEFI var
	wifi: iwlwifi: mvm: avoid NULL pointer dereference
	wifi: iwlwifi: mvm: don't count mgmt frames as MPDU
	wifi: mac80211: prohibit deactivating all links
	wifi: cfg80211: Move cfg80211_scan_req_add_chan() n_channels increment earlier
	wifi: mac80211: fix tid removal during mesh forwarding
	wifi: mac80211: Fix common size calculation for ML element
	wifi: mac80211: don't flush non-uploaded STAs
	clk: ralink: mtmips: remove duplicated 'xtal' clock for Ralink SoC RT3883
	clk: thead: Fix clk gate registration to pass flags
	clk: thead: Add CLK_IGNORE_UNUSED to fix TH1520 boot
	clk: thead: Fix cpu2vp_clk for TH1520 AP_SUBSYS clocks
	net/smc: fix data error when recvmsg with MSG_PEEK flag
	landlock: Handle weird files
	wifi: mt76: mt76u_vendor_request: Do not print error messages when -EPROTO
	wifi: mt76: mt7921: fix using incorrect group cipher after disconnection.
	wifi: mt76: mt7915: Fix an error handling path in mt7915_add_interface()
	wifi: mt76: mt7925: fix NULL deref check in mt7925_change_vif_links
	wifi: mt76: mt7925: fix wrong band_idx setting when enable sniffer mode
	wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer
	wifi: mt76: mt7925: fix the invalid ip address for arp offload
	wifi: mt76: mt7996: fix overflows seen when writing limit attributes
	wifi: mt76: mt7915: fix overflows seen when writing limit attributes
	wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev for MLO
	wifi: mt76: mt7925: Fix incorrect MLD address in bss_mld_tlv for MLO support
	wifi: mt76: mt7925: Fix incorrect WCID assignment for MLO
	wifi: mt76: mt7925: Fix incorrect WCID phy_idx assignment
	wifi: mt76: mt7925: fix wrong parameter for related cmd of chan info
	wifi: mt76: mt7925: Fix CNM Timeout with Single Active Link in MLO
	wifi: mt76: mt7925: Enhance mt7925_mac_link_bss_add to support MLO
	wifi: mt76: Enhance mt7925_mac_link_sta_add to support MLO
	wifi: mt76: mt7925: Update mt7925_mcu_sta_update for BC in ASSOC state
	wifi: mt76: mt7925: Update mt792x_rx_get_wcid for per-link STA
	wifi: mt76: mt7925: Update mt7925_unassign_vif_chanctx for per-link BSS
	wifi: mt76: mt7925: Update secondary link PS flow
	wifi: mt76: mt7925: Init secondary link PM state
	wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO
	wifi: mt76: mt7925: Cleanup MLO settings post-disconnection
	wifi: mt76: mt7925: Properly handle responses for commands with events
	wifi: mt76: mt7996: fix rx filter setting for bfee functionality
	wifi: mt76: only enable tx worker after setting the channel
	wifi: mt76: mt7915: firmware restart on devices with a second pcie link
	wifi: mt76: mt7915: fix omac index assignment after hardware reset
	wifi: mt76: mt7915: fix register mapping
	wifi: mt76: mt7996: fix register mapping
	wifi: mt76: mt7996: add max mpdu len capability
	wifi: mt76: mt7996: fix the capability of reception of EHT MU PPDU
	wifi: mt76: mt7996: fix HE Phy capability
	wifi: mt76: mt7996: fix incorrect indexing of MIB FW event
	wifi: mt76: mt7996: fix definition of tx descriptor
	wifi: mt76: mt7996: fix ldpc setting
	i2c: designware: Actually make use of the I2C_DW_COMMON and I2C_DW symbol namespaces
	cpufreq: ACPI: Fix max-frequency computation
	selftests: timers: clocksource-switch: Adapt progress to kselftest framework
	selftests: harness: fix printing of mismatch values in __EXPECT()
	wifi: cfg80211: adjust allocation of colocated AP data
	Bluetooth: btbcm: Fix NULL deref in btbcm_get_board_name()
	Bluetooth: btrtl: check for NULL in btrtl_setup_realtek()
	inet: ipmr: fix data-races
	clk: analogbits: Fix incorrect calculation of vco rate delta
	dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name().
	pwm: stm32: Add check for clk_enable()
	selftests/landlock: Fix build with non-default pthread linking
	selftests/landlock: Fix error message
	net: let net.core.dev_weight always be non-zero
	net/mlxfw: Drop hard coded max FW flash image size
	octeon_ep: remove firmware stats fetch in ndo_get_stats64
	octeon_ep_vf: remove firmware stats fetch in ndo_get_stats64
	net: avoid race between device unregistration and ethnl ops
	net: sched: Disallow replacing of child qdisc from one parent to another
	netfilter: nf_tables: fix set size with rbtree backend
	netfilter: nft_flow_offload: update tcp state flags under lock
	net: sched: refine software bypass handling in tc_run
	net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns()
	tcp_cubic: fix incorrect HyStart round start detection
	net/rose: prevent integer overflows in rose_setsockopt()
	platform/mellanox: mlxbf-pmc: incorrect type in assignment
	platform/x86: x86-android-tablets: make platform data be static
	pinctrl: samsung: Fix irq handling if an error occurs in exynos_irq_demux_eint16_31()
	libbpf: don't adjust USDT semaphore address if .stapsdt.base addr is missing
	ASoC: cs40l50: Use *-y for Makefile
	ASoC: mediatek: mt8365: Use *-y for Makefile
	ASoC: wcd937x: Use *-y for Makefile
	tools/testing/selftests/bpf/test_tc_tunnel.sh: Fix wait for server bind
	libbpf: Fix segfault due to libelf functions not setting errno
	ASoC: Intel: sof_sdw: correct mach_params->dmic_num
	ASoC: sun4i-spdif: Add clock multiplier settings
	selftests/bpf: Fix fill_link_info selftest on powerpc
	iommu/arm-smmuv3: Update comments about ATS and bypass
	crypto: tegra - do not transfer req when tegra init fails
	crypto: api - Fix boot-up self-test race
	crypto: caam - use JobR's space to access page 0 regs
	perf header: Fix one memory leakage in process_bpf_btf()
	perf header: Fix one memory leakage in process_bpf_prog_info()
	perf bpf: Fix two memory leakages when calling perf_env__insert_bpf_prog_info()
	ASoC: renesas: rz-ssi: Use only the proper amount of dividers
	perf expr: Initialize is_test value in expr__ctx_new()
	pinctrl: nomadik: Add check for clk_enable()
	ktest.pl: Remove unused declarations in run_bisect_test function
	bpf: bpf_local_storage: Always use bpf_mem_alloc in PREEMPT_RT
	rhashtable: Fix potential deadlock by moving schedule_work outside lock
	crypto: hisilicon/sec2 - fix for aead icv error
	crypto: hisilicon/sec2 - fix for aead invalid authsize
	crypto: ixp4xx - fix OF node reference leaks in init_ixp_crypto()
	crypto: iaa - Fix IAA disabling that occurs when sync_mode is set to 'async'
	bpf: Use refcount_t instead of atomic_t for mmap_count
	ALSA: seq: Make dependency on UMP clearer
	bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing
	padata: fix sysfs store callback check
	selftests/bpf: Avoid generating untracked files when running bpf selftests
	perf top: Don't complain about lack of vmlinux when not resolving some kernel samples
	perf maps: Fix display of kernel symbols
	perf machine: Don't ignore _etext when not a text symbol
	perf namespaces: Introduce nsinfo__set_in_pidns()
	perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool
	ASoC: Intel: avs: Do not readq() u32 registers
	ASoC: Intel: avs: Fix the minimum firmware version numbers
	ASoC: Intel: avs: Fix theoretical infinite loop
	ASoC: Intel: avs: Fix init-config parsing
	perf MANIFEST: Add arch/*/include/uapi/asm/bpf_perf_event.h to the perf tarball
	ALSA: hda: Fix compilation of snd_hdac_adsp_xxx() helpers
	perf report: Fix misleading help message about --demangle
	pinctrl: stm32: Add check for clk_enable()
	pinctrl: amd: Take suspend type into consideration which pins are non-wake
	perf inject: Fix use without initialization of local variables
	ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83LC
	ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83JX, 83MC and 83NM
	bpf: Send signals asynchronously if !preemptible
	selftests/bpf: Fix btf leak on new btf alloc failure in btf_distill test
	libbpf: Fix return zero when elf_begin failed
	libbpf: Fix incorrect traversal end type ID when marking BTF_IS_EMBEDDED
	bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write
	iommu/amd: Remove unused amd_iommu_domain_update()
	ALSA: hda/realtek - Fixed headphone distorted sound on Acer Aspire A115-31 laptop
	tools: Sync if_xdp.h uapi tooling header
	perf lock: Fix parse_lock_type which only retrieve one lock flag
	padata: fix UAF in padata_reorder
	padata: add pd get/put refcnt helper
	padata: avoid UAF for reorder_work
	rhashtable: Fix rhashtable_try_insert test
	smb: client: fix oops due to unset link speed
	cifs: Use cifs_autodisable_serverino() for disabling CIFS_MOUNT_SERVER_INUM in readdir.c
	bpf: Cancel the running bpf_timer through kworker for PREEMPT_RT
	soc: atmel: fix device_node release in atmel_soc_device_init()
	ARM: at91: pm: change BU Power Switch to automatic mode
	ARM: dts: imx7-tqma7: add missing vs-supply for LM75A (rev. 01xxx)
	arm64: dts: mediatek: mt8186: Move wakeup to MTU3 to get working suspend
	arm64: dts: mt8183: set DMIC one-wire mode on Damu
	arm64: dts: mediatek: mt8516: fix GICv2 range
	arm64: dts: mediatek: mt8516: fix wdt irq type
	arm64: dts: mediatek: mt8516: add i2c clock-div property
	arm64: dts: mediatek: mt8516: reserve 192 KiB for TF-A
	ARM: dts: stm32: Increase CPU core voltage on STM32MP13xx DHCOR SoM
	ARM: dts: stm32: Fix IPCC EXTI declaration on stm32mp151
	RDMA/mlx4: Avoid false error about access to uninitialized gids array
	arm64: dts: renesas: rzg3s-smarc: Fix the debug serial alias
	rdma/cxgb4: Prevent potential integer overflow on 32bit
	arm64: dts: mediatek: mt8173-evb: Drop regulator-compatible property
	arm64: dts: mediatek: mt8173-elm: Drop regulator-compatible property
	arm64: dts: mediatek: mt8192-asurada: Drop regulator-compatible property
	arm64: dts: mediatek: mt8195-cherry: Drop regulator-compatible property
	arm64: dts: mediatek: mt8195-demo: Drop regulator-compatible property
	arm64: dts: medaitek: mt8395-nio-12l: Drop regulator-compatible property
	arm64: dts: mediatek: mt8395-genio-1200-evk: Drop regulator-compatible property
	arm64: dts: mediatek: mt8173-elm: Fix MT6397 PMIC sub-node names
	arm64: dts: mediatek: mt8173-evb: Fix MT6397 PMIC sub-node names
	ARM: dts: aspeed: yosemite4: correct the compatible string of adm1272
	ARM: dts: aspeed: yosemite4: Add required properties for IOE on fan boards
	ARM: dts: aspeed: yosemite4: correct the compatible string for max31790
	arm: dts: socfpga: use reset-name "stmmaceth-ocp" instead of "ahb"
	RDMA/rxe: Fix mismatched max_msg_sz
	arm64: dts: mediatek: mt8183: kenzo: Support second source touchscreen
	arm64: dts: mediatek: mt8183: willow: Support second source touchscreen
	RDMA/srp: Fix error handling in srp_add_port
	arm64: dts: mediatek: mt8195: Remove suspend-breaking reset from pcie1
	ARM: dts: stm32: Deduplicate serial aliases and chosen node for STM32MP15xx DHCOM SoM
	ARM: dts: stm32: Swap USART3 and UART8 alias on STM32MP15xx DHCOM SoM
	memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code()
	arm64: dts: mediatek: mt8183-kukui-jacuzzi: Drop pp3300_panel voltage settings
	arm64: dts: qcom: msm8996-xiaomi-gemini: Fix LP5562 LED1 reg property
	arm64: dts: qcom: sa8775p: Update sleep_clk frequency
	arm64: defconfig: remove obsolete CONFIG_SM_DISPCC_8650
	arm64: dts: qcom: msm8996: Fix up USB3 interrupts
	arm64: dts: qcom: msm8994: Describe USB interrupts
	arm64: dts: qcom: sm7225-fairphone-fp4: Drop extra qcom,msm-id value
	arm64: dts: qcom: msm8916: correct sleep clock frequency
	arm64: dts: qcom: msm8939: correct sleep clock frequency
	arm64: dts: qcom: msm8994: correct sleep clock frequency
	arm64: dts: qcom: qcs404: correct sleep clock frequency
	arm64: dts: qcom: q[dr]u1000: correct sleep clock frequency
	arm64: dts: qcom: qrb4210-rb2: correct sleep clock frequency
	arm64: dts: qcom: sc7280: correct sleep clock frequency
	arm64: dts: qcom: sdx75: correct sleep clock frequency
	arm64: dts: qcom: sm4450: correct sleep clock frequency
	arm64: dts: qcom: sm6125: correct sleep clock frequency
	arm64: dts: qcom: sm6375: correct sleep clock frequency
	arm64: dts: qcom: sm8250: correct sleep clock frequency
	arm64: dts: qcom: sm8350: correct sleep clock frequency
	arm64: dts: qcom: sm8450: correct sleep clock frequency
	arm64: dts: qcom: sm8550: correct sleep clock frequency
	arm64: dts: qcom: sm8650: correct sleep clock frequency
	arm64: dts: qcom: x1e80100: correct sleep clock frequency
	arm64: dts: qcom: sm8650: Fix CDSP context banks unit addresses
	ARM: dts: microchip: sama5d29_curiosity: Add no-1-8-v property to sdmmc0 node
	ARM: dts: microchip: sama5d27_wlsom1_ek: Add no-1-8-v property to sdmmc0 node
	arm64: dts: ti: k3-am62: Remove duplicate GICR reg
	arm64: dts: ti: k3-am62a: Remove duplicate GICR reg
	arm64: dts: rockchip: Fix sdmmc access on rk3308-rock-s0 v1.1 boards
	arm64: dts: allwinner: a64: explicitly assign clock parent for TCON0
	RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error
	RDMA/rtrs: Add missing deinit() call
	RDMA/hns: Clean up the legacy CONFIG_INFINIBAND_HNS
	ARM: omap1: Fix up the Retu IRQ on Nokia 770
	arm64: dts: qcom: qcm6490-shift-otter: remove invalid orientation-switch
	arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Convert mezzanine riser to dtso
	arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: remove disabled ov7251 camera
	arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply
	arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone
	arm64: dts: qcom: sc7180: change labels to lower-case
	arm64: dts: qcom: sc7180: fix psci power domain node names
	arm64: dts: qcom: sm8150-microsoft-surface-duo: fix typos in da7280 properties
	arm64: dts: qcom: sc8280xp: Fix up remoteproc register space sizes
	firmware: qcom: scm: Cleanup global '__scm' on probe failures
	arm64: dts: mediatek: mt7988: Add missing clock-div property for i2c
	dts: arm64: mediatek: mt8195: Remove MT8183 compatible for OVL
	arm64: dts: mediatek: add per-SoC compatibles for keypad nodes
	arm64: dts: qcom: sc8280xp: Fix interrupt type of camss interrupts
	arm64: dts: qcom: sdm845: Fix interrupt types of camss interrupts
	arm64: dts: qcom: sm8250: Fix interrupt types of camss interrupts
	arm64: dts: marvell: cn9131-cf-solidwan: fix cp1 comphy links
	ARM: dts: mediatek: mt7623: fix IR nodename
	arm64: dts: rockchip: fix num-channels property of wolfvision pf5 mic
	arm64: dts: ti: k3-am642-hummingboard-t: Convert overlay to board dts
	fbdev: omapfb: Fix an OF node leak in dss_of_port_get_parent_device()
	arm64: tegra: Fix DMA ID for SPI2
	arm64: dts: qcom: x1e80100-romulus: Update firmware nodes
	i3c: dw: Fix use-after-free in dw_i3c_master driver due to race condition
	RDMA/mlx5: Fix indirect mkey ODP page count
	of: property: Avoiding using uninitialized variable @imaplen in parse_interrupt_map()
	of: reserved-memory: Do not make kmemleak ignore freed address
	efi: sysfb_efi: fix W=1 warnings when EFI is not set
	RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event
	RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]"
	iommu: iommufd: fix WARNING in iommufd_device_unbind
	iommufd/iova_bitmap: Fix shift-out-of-bounds in iova_bitmap_offset_to_index()
	spi: omap2-mcspi: Correctly handle devm_clk_get_optional() errors
	of: reserved_mem: Restructure how the reserved memory regions are processed
	of/fdt: Restore possibility to use both ACPI and FDT from bootloader
	media: rc: iguanair: handle timeouts
	media: lmedm04: Handle errors for lme2510_int_read
	PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy()
	remoteproc: mtk_scp: Only populate devices for SCP cores
	media: marvell: Add check for clk_enable()
	media: i2c: imx290: Register 0x3011 varies between imx327 and imx290
	media: i2c: imx412: Add missing newline to prints
	media: i2c: ov9282: Correct the exposure offset
	media: mipi-csis: Add check for clk_enable()
	media: camif-core: Add check for clk_enable()
	media: uvcvideo: Propagate buf->error to userspace
	mtd: rawnand: brcmnand: fix status read of brcmnand_waitfunc
	mtd: hyperbus: hbmc-am654: fix an OF node reference leak
	media: nxp: imx8-isi: fix v4l2-compliance test errors
	watchdog: rti_wdt: Fix an OF node leak in rti_wdt_probe()
	staging: media: imx: fix OF node leak in imx_media_add_of_subdevs()
	media: dvb-usb-v2: af9035: fix ISO C90 compilation error on af9035_i2c_master_xfer
	PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region()
	PCI: imx6: Configure PHY based on Root Complex or Endpoint mode
	PCI: imx6: Skip controller_id generation logic for i.MX7D
	PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset()
	PCI: imx6: Add missing reference clock disable logic
	PCI: qcom: Update ICC and OPP values after Link Up event
	PCI: dwc: Always stop link in the dw_pcie_suspend_noirq
	PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error
	PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test
	PCI: microchip: Add support for using either Root Port 1 or 2
	PCI: microchip: Set inbound address translation for coherent or non-coherent mode
	scsi: mpt3sas: Set ioc->manu_pg11.EEDPTagMode directly to 1
	scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails
	scsi: mpi3mr: Fix possible crash when setting up bsg fails
	firewire: test: Fix potential null dereference in firewire kunit test
	erofs: get rid of erofs_{find,insert}_workgroup
	erofs: move erofs_workgroup operations into zdata.c
	erofs: sunset `struct erofs_workgroup`
	erofs: fix potential return value overflow of z_erofs_shrink_scan()
	ocfs2: mark dquot as inactive if failed to start trans while releasing dquot
	nilfs2: do not force clear folio if buffer is referenced
	nilfs2: protect access to buffers with no active references
	nilfs2: handle errors that nilfs_prepare_chunk() may return
	module: Extend the preempt disabled section in dereference_symbol_descriptor().
	module: Don't fail module loading when setting ro_after_init section RO failed
	driver core: class: Fix wild pointer dereferences in API class_dev_iter_next()
	tty: mips_ejtag_fdc: fix one more u8 warning
	serial: 8250: Adjust the timeout for FIFO mode
	nfs: fix incorrect error handling in LOCALIO
	NFSv4.2: fix COPY_NOTIFY xdr buf size calculation
	NFSv4.2: mark OFFLOAD_CANCEL MOVEABLE
	LoongArch: Fix warnings during S3 suspend
	tools/bootconfig: Fix the wrong format specifier
	xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO
	xfrm: Add support for per cpu xfrm state handling.
	xfrm: Cache used outbound xfrm states at the policy.
	xfrm: Add an inbound percpu state cache.
	xfrm: state: fix out-of-bounds read during lookup
	dmaengine: ti: edma: fix OF node reference leaks in edma_driver
	xfrm: delete intermediate secpath entry in packet offload mode
	rtc: tps6594: Fix integer overflow on 32bit systems
	rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read
	rtc: loongson: clear TOY_MATCH0_REG in loongson_rtc_isr()
	ubifs: skip dumping tnc tree when zroot is null
	regulator: core: Add missing newline character
	net: airoha: Fix wrong GDM4 register definition
	net: hns3: fix oops when unload drivers paralleling
	gpio: mxc: remove dead code after switch to DT-only
	net: phy: marvell-88q2xxx: Fix temperature measurement with reset-gpios
	net: fec: implement TSO descriptor cleanup
	ipmr: do not call mr_mfc_uses_dev() for unres entries
	PM: hibernate: Add error handling for syscore_suspend()
	perf trace: Fix BPF loading failure (-E2BIG)
	xfrm: Don't disable preemption while looking up cache state.
	idpf: add read memory barrier when checking descriptor done bit
	idpf: fix transaction timeouts on reset
	idpf: Acquire the lock before accessing the xn->salt
	idpf: convert workqueues to unbound
	ice: fix ice_parser_rt::bst_key array size
	ice: rework of dump serdes equalizer values feature
	ice: extend dump serdes equalizer values feature
	ice: remove invalid parameter of equalizer
	iavf: allow changing VLAN state without calling PF
	s390/mm: Allow large pages for KASAN shadow mapping
	net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
	net: rose: fix timer races against user threads
	net: netdevsim: try to close UDP port harness races
	tools: ynl: c: correct reverse decode of empty attrs
	selftests: mptcp: extend CFLAGS to keep options from environment
	selftests: net/{lib,openvswitch}: extend CFLAGS to keep options from environment
	rxrpc, afs: Fix peer hash locking vs RCU callback
	vxlan: Fix uninit-value in vxlan_vnifilter_dump()
	net: davicom: fix UAF in dm9000_drv_remove
	ptp: Properly handle compat ioctls
	net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in
	ethtool: Fix set RXNFC command with symmetric RSS hash
	net: stmmac: Limit the number of MTL queues to hardware capability
	net: stmmac: Limit FIFO size by hardware capability
	s390/sclp: Initialize sclp subsystem via arch_cpu_finalize_init()
	perf trace: Fix runtime error of index out of bounds
	perf test: Skip syscall enum test if no landlock syscall
	Bluetooth: btusb: mediatek: Add locks for usb_driver_claim_interface()
	Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming
	vsock: Allow retrying on connect() failure
	bgmac: reduce max frame size to support just MTU 1500
	tcp: correct handling of extreme memory squeeze
	net: xdp: Disallow attaching device-bound programs in generic mode
	net: ravb: Fix missing rtnl lock in suspend/resume path
	net: sh_eth: Fix missing rtnl lock in suspend/resume path
	net: hsr: fix fill_frame_info() regression vs VLAN packets
	genksyms: fix memory leak when the same symbol is added from source
	genksyms: fix memory leak when the same symbol is read from *.symref file
	hostfs: fix string handling in __dentry_name()
	tools/power turbostat: Allow using cpu device in perf counters on hybrid platforms
	tools/power turbostat: Fix PMT mmaped file size rounding
	RISC-V: Mark riscv_v_init() as __init
	ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback
	io_uring/uring_cmd: use cached cmd_op in io_uring_cmd_sock()
	ASoC: amd: acp: Fix possible deadlock
	tools/power turbostat: Fix forked child affinity regression
	cifs: Validate EAs for WSL reparse points
	cifs: Fix getting and setting SACLs over SMB1
	kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST
	kconfig: fix memory leak in sym_warn_unmet_dep()
	hexagon: fix using plain integer as NULL pointer warning in cmpxchg
	hexagon: Fix unbalanced spinlock in die()
	f2fs: Introduce linear search for dentries
	md/md-bitmap: factor behind write counters out from bitmap_{start/end}write()
	md/md-bitmap: remove the last parameter for bimtap_ops->endwrite()
	md: add a new callback pers->bitmap_sector()
	md/raid5: implement pers->bitmap_sector()
	md/md-bitmap: move bitmap_{start, end}write to md upper layer
	Revert "SUNRPC: Reduce thread wake-up rate when receiving large RPC messages"
	kbuild: switch from lz4c to lz4 for compression
	netfilter: nf_tables: reject mismatching sum of field_len with set key length
	drm/amd/display: Reduce accessing remote DPCD overhead
	selftests/rseq: Fix handling of glibc without rseq support
	selftests/ftrace: Fix to use remount when testing mount GID option
	ktest.pl: Check kernelrelease return in get_version
	xfs: check for dead buffers in xfs_buf_find_insert
	xfs: don't shut down the filesystem for media failures beyond end of log
	ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro
	net: usb: rtl8150: enable basic endpoint checking
	usb: xhci: Fix NULL pointer dereference on certain command aborts
	drivers/card_reader/rtsx_usb: Restore interrupt based detection
	usb: gadget: f_tcm: Fix Get/SetInterface return value
	usb: dwc3-am62: Fix an OF node leak in phy_syscon_pll_refclk()
	usb: dwc3: core: Defer the probe until USB power supply ready
	usb: dwc3: Skip resume if pm_runtime_set_active() fails
	usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE
	usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS
	clk: qcom: gcc-x1e80100: Do not turn off usb_2 controller GDSC
	mptcp: consolidate suboption status
	mptcp: pm: only set fullmesh for subflow endp
	mptcp: handle fastopen disconnect correctly
	mptcp: blackhole only if 1st SYN retrans w/o MPC is accepted
	RDMA/mlx5: Fix implicit ODP use after free
	remoteproc: core: Fix ida_free call while not allocated
	media: uvcvideo: Fix double free in error path
	pps: Fix a use-after-free
	usb: gadget: f_tcm: Don't free command immediately
	staging: media: max96712: fix kernel oops when removing module
	media: imx-jpeg: Fix potential error pointer dereference in detach_pm()
	powerpc/pseries/iommu: Don't unset window if it was never set
	md/md-bitmap: Synchronize bitmap_get_stats() with bitmap lifetime
	btrfs: output the reason for open_ctree() failure
	of: reserved-memory: Warn for missing static reserved memory regions
	dma-mapping: save base/size instead of pointer to shared DMA pool
	xfrm: Add error handling when nla_put_u32() returns an error
	xfrm: Fix acquire state insertion.
	ethtool: Fix access to uninitialized fields in set RXNFC command
	Revert "s390/mm: Allow large pages for KASAN shadow mapping"
	selftests/bpf: Add test to verify tailcall and freplace restrictions
	ASoC: da7213: Initialize the mutex
	s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
	drm/amd/display: Add hubp cache reset when powergating
	KVM: x86: Plumb in the vCPU to kvm_x86_ops.hwapic_isr_update()
	memcg: fix soft lockup in the OOM process
	LoongArch: Change 8 to 14 for LOONGARCH_MAX_{BRP,WRP}
	btrfs: do proper folio cleanup when run_delalloc_nocow() failed
	ethtool: ntuple: fix rss + ring_cookie check
	Linux 6.12.13

Change-Id: I0b4278d2911ea7c72e068418ed56d1514b393980
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2025-02-10 07:46:27 -08:00
Hou Tao 33e47d9573 bpf: Cancel the running bpf_timer through kworker for PREEMPT_RT
[ Upstream commit 58f038e6d209d2dd862fcf5de55407855856794d ]

During the update procedure, when overwrite element in a pre-allocated
htab, the freeing of old_element is protected by the bucket lock. The
reason why the bucket lock is necessary is that the old_element has
already been stashed in htab->extra_elems after alloc_htab_elem()
returns. If freeing the old_element after the bucket lock is unlocked,
the stashed element may be reused by concurrent update procedure and the
freeing of old_element will run concurrently with the reuse of the
old_element. However, the invocation of check_and_free_fields() may
acquire a spin-lock which violates the lockdep rule because its caller
has already held a raw-spin-lock (bucket lock). The following warning
will be reported when such race happens:

  BUG: scheduling while atomic: test_progs/676/0x00000003
  3 locks held by test_progs/676:
  #0: ffffffff864b0240 (rcu_read_lock_trace){....}-{0:0}, at: bpf_prog_test_run_syscall+0x2c0/0x830
  #1: ffff88810e961188 (&htab->lockdep_key){....}-{2:2}, at: htab_map_update_elem+0x306/0x1500
  #2: ffff8881f4eac1b8 (&base->softirq_expiry_lock){....}-{2:2}, at: hrtimer_cancel_wait_running+0xe9/0x1b0
  Modules linked in: bpf_testmod(O)
  Preemption disabled at:
  [<ffffffff817837a3>] htab_map_update_elem+0x293/0x1500
  CPU: 0 UID: 0 PID: 676 Comm: test_progs Tainted: G ... 6.12.0+ #11
  Tainted: [W]=WARN, [O]=OOT_MODULE
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)...
  Call Trace:
  <TASK>
  dump_stack_lvl+0x57/0x70
  dump_stack+0x10/0x20
  __schedule_bug+0x120/0x170
  __schedule+0x300c/0x4800
  schedule_rtlock+0x37/0x60
  rtlock_slowlock_locked+0x6d9/0x54c0
  rt_spin_lock+0x168/0x230
  hrtimer_cancel_wait_running+0xe9/0x1b0
  hrtimer_cancel+0x24/0x30
  bpf_timer_delete_work+0x1d/0x40
  bpf_timer_cancel_and_free+0x5e/0x80
  bpf_obj_free_fields+0x262/0x4a0
  check_and_free_fields+0x1d0/0x280
  htab_map_update_elem+0x7fc/0x1500
  bpf_prog_9f90bc20768e0cb9_overwrite_cb+0x3f/0x43
  bpf_prog_ea601c4649694dbd_overwrite_timer+0x5d/0x7e
  bpf_prog_test_run_syscall+0x322/0x830
  __sys_bpf+0x135d/0x3ca0
  __x64_sys_bpf+0x75/0xb0
  x64_sys_call+0x1b5/0xa10
  do_syscall_64+0x3b/0xc0
  entry_SYSCALL_64_after_hwframe+0x4b/0x53
  ...
  </TASK>

It seems feasible to break the reuse and refill of per-cpu extra_elems
into two independent parts: reuse the per-cpu extra_elems with bucket
lock being held and refill the old_element as per-cpu extra_elems after
the bucket lock is unlocked. However, it will make the concurrent
overwrite procedures on the same CPU return unexpected -E2BIG error when
the map is full.

Therefore, the patch fixes the lock problem by breaking the cancelling
of bpf_timer into two steps for PREEMPT_RT:
1) use hrtimer_try_to_cancel() and check its return value
2) if the timer is running, use hrtimer_cancel() through a kworker to
   cancel it again
Considering that the current implementation of hrtimer_cancel() will try
to acquire a being held softirq_expiry_lock when the current timer is
running, these steps above are reasonable. However, it also has
downside. When the timer is running, the cancelling of the timer is
delayed when releasing the last map uref. The delay is also fixable
(e.g., break the cancelling of bpf timer into two parts: one part in
locked scope, another one in unlocked scope), it can be revised later if
necessary.

It is a bit hard to decide the right fix tag. One reason is that the
problem depends on PREEMPT_RT which is enabled in v6.12. Considering the
softirq_expiry_lock lock exists since v5.4 and bpf_timer is introduced
in v5.15, the bpf_timer commit is used in the fixes tag and an extra
depends-on tag is added to state the dependency on PREEMPT_RT.

Fixes: b00628b1c7 ("bpf: Introduce bpf timers.")
Depends-on: v6.12+ with PREEMPT_RT enabled
Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Closes: https://lore.kernel.org/bpf/20241106084527.4gPrMnHt@linutronix.de
Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Toke Høiland-Jørgensen <toke@kernel.org>
Link: https://lore.kernel.org/r/20250117101816.2101857-5-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:57:36 +01:00
Martin KaFai Lau b777b14c2a bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing
[ Upstream commit 96ea081ed52bf077cad6d00153b6fba68e510767 ]

There is a UAF report in the bpf_struct_ops when CONFIG_MODULES=n.
In particular, the report is on tcp_congestion_ops that has
a "struct module *owner" member.

For struct_ops that has a "struct module *owner" member,
it can be extended either by the regular kernel module or
by the bpf_struct_ops. bpf_try_module_get() will be used
to do the refcounting and different refcount is done
based on the owner pointer. When CONFIG_MODULES=n,
the btf_id of the "struct module" is missing:

WARN: resolve_btfids: unresolved symbol module

Thus, the bpf_try_module_get() cannot do the correct refcounting.

Not all subsystem's struct_ops requires the "struct module *owner" member.
e.g. the recent sched_ext_ops.

This patch is to disable bpf_struct_ops registration if
the struct_ops has the "struct module *" member and the
"struct module" btf_id is missing. The btf_type_is_fwd() helper
is moved to the btf.h header file for this test.

This has happened since the beginning of bpf_struct_ops which has gone
through many changes. The Fixes tag is set to a recent commit that this
patch can apply cleanly. Considering CONFIG_MODULES=n is not
common and the age of the issue, targeting for bpf-next also.

Fixes: 1611603537 ("bpf: Create argument information for nullable arguments.")
Reported-by: Robert Morris <rtm@csail.mit.edu>
Closes: https://lore.kernel.org/bpf/74665.1733669976@localhost/
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Tested-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20241220201818.127152-1-martin.lau@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:57:30 +01:00
Pei Xiao 8e7d29b698 bpf: Use refcount_t instead of atomic_t for mmap_count
[ Upstream commit dfa94ce54f4139c893b9c4ec17df6f7c6a7515d3 ]

Use an API that resembles more the actual use of mmap_count.

Found by cocci:
kernel/bpf/arena.c:245:6-25: WARNING: atomic_dec_and_test variation before object free at line 249.

Fixes: b90d77e5fd ("bpf: Fix remap of arena.")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202412292037.LXlYSHKl-lkp@intel.com/
Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
Link: https://lore.kernel.org/r/6ecce439a6bc81adb85d5080908ea8959b792a50.1735542814.git.xiaopei01@kylinos.cn
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:57:30 +01:00
Martin KaFai Lau b002750000 bpf: bpf_local_storage: Always use bpf_mem_alloc in PREEMPT_RT
[ Upstream commit 8eef6ac4d70eb1f0099fff93321d90ce8fa49ee1 ]

In PREEMPT_RT, kmalloc(GFP_ATOMIC) is still not safe in non preemptible
context. bpf_mem_alloc must be used in PREEMPT_RT. This patch is
to enforce bpf_mem_alloc in the bpf_local_storage when CONFIG_PREEMPT_RT
is enabled.

[   35.118559] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
[   35.118566] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1832, name: test_progs
[   35.118569] preempt_count: 1, expected: 0
[   35.118571] RCU nest depth: 1, expected: 1
[   35.118577] INFO: lockdep is turned off.
    ...
[   35.118647]  __might_resched+0x433/0x5b0
[   35.118677]  rt_spin_lock+0xc3/0x290
[   35.118700]  ___slab_alloc+0x72/0xc40
[   35.118723]  __kmalloc_noprof+0x13f/0x4e0
[   35.118732]  bpf_map_kzalloc+0xe5/0x220
[   35.118740]  bpf_selem_alloc+0x1d2/0x7b0
[   35.118755]  bpf_local_storage_update+0x2fa/0x8b0
[   35.118784]  bpf_sk_storage_get_tracing+0x15a/0x1d0
[   35.118791]  bpf_prog_9a118d86fca78ebb_trace_inet_sock_set_state+0x44/0x66
[   35.118795]  bpf_trace_run3+0x222/0x400
[   35.118820]  __bpf_trace_inet_sock_set_state+0x11/0x20
[   35.118824]  trace_inet_sock_set_state+0x112/0x130
[   35.118830]  inet_sk_state_store+0x41/0x90
[   35.118836]  tcp_set_state+0x3b3/0x640

There is no need to adjust the gfp_flags passing to the
bpf_mem_cache_alloc_flags() which only honors the GFP_KERNEL.
The verifier has ensured GFP_KERNEL is passed only in sleepable context.

It has been an old issue since the first introduction of the
bpf_local_storage ~5 years ago, so this patch targets the bpf-next.

bpf_mem_alloc is needed to solve it, so the Fixes tag is set
to the commit when bpf_mem_alloc was first used in the bpf_local_storage.

Fixes: 08a7ce384e ("bpf: Use bpf_mem_cache_alloc/free in bpf_local_storage_elem")
Reported-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/r/20241218193000.2084281-1-martin.lau@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:57:29 +01:00
Darren Chang bc75210c05 ANDROID: Add CtsDrmTestCases to the kernel-presubmit group
Bug: 360874465
Change-Id: I0be4733374bc2769fdb6091168b49b4b12edddc9
Signed-off-by: Darren Chang <chihsheng@google.com>
2025-01-21 10:51:09 -08:00
Greg Kroah-Hartman 905751c077 Merge 6.12.9 into android16-6.12
GKI (arm64) relevant 33 out of 157 changes, affecting 48 files +347/-176
  efefe36c03 selinux: ignore unknown extended permissions [1 file, +6/-2]
  cba9d51794 pmdomain: core: add dummy release function to genpd device [1 file, +6/-0]
  92bd18c746 tracing: Have process_string() also allow arrays [1 file, +12/-0]
  b983a01f58 netdev-genl: avoid empty messages in napi get [1 file, +5/-1]
  b0b190218c net: fix memory leak in tcp_conn_request() [1 file, +1/-0]
  0e394dd11e workqueue: add printf attribute to __alloc_workqueue() [1 file, +1/-0]
  d24cbc43cc netfilter: nft_set_hash: unaligned atomic read on struct nft_set_ext [1 file, +5/-2]
  1ee54d58d5 net: llc: reset skb->transport_header [1 file, +1/-1]
  b48a058db3 ALSA: usb-audio: US16x08: Initialize array before use [1 file, +1/-1]
  127c280067 io_uring/net: always initialize kmsg->msg.msg_inq upfront [1 file, +1/-0]
  d3b7a9c759 net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets [1 file, +3/-1]
  3257813a3a net: restrict SO_REUSEPORT to inet sockets [1 file, +4/-1]
  b65292a548 af_packet: fix vlan_get_tci() vs MSG_PEEK [1 file, +3/-9]
  cd8488fdc7 af_packet: fix vlan_get_protocol_dgram() vs MSG_PEEK [2 files, +17/-15]
  03c446634f sound: usb: enable DSD output for ddHiFi TC44C [1 file, +2/-0]
  d49362b059 sound: usb: format: don't warn that raw DSD is unsupported [1 file, +6/-1]
  1da4ebd869 bpf: fix potential error return [1 file, +5/-1]
  4a31c018bf Bluetooth: hci_core: Fix sleeping function called from invalid context [6 files, +97/-57]
  c88e3ecb94 irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base [1 file, +1/-1]
  28bcc80240 bpf: refactor bpf_helper_changes_pkt_data to use helper number [4 files, +31/-38]
  1c2244437f bpf: consider that tail calls invalidate packet pointers [2 files, +4/-0]
  2a44d48d32 modpost: fix the missed iteration for the max bit in do_input() [1 file, +1/-1]
  c7e9cb3db7 io_uring/kbuf: use pre-committed buffer address for non-pollable file [1 file, +3/-1]
  90daa2f835 maple_tree: reload mas before the second call for mas_empty_area [1 file, +1/-0]
  ffb231471a workqueue: Do not warn when cancelling WQ_MEM_RECLAIM work from !WQ_MEM_RECLAIM worker [1 file, +13/-9]
  41ce61328e io_uring/rw: fix downgraded mshot read [1 file, +2/-0]
  cabacb18a4 mm: shmem: fix the update of 'shmem_falloc->nr_unswapped' [1 file, +1/-1]
  9e4c11d4cc mm: shmem: fix incorrect index alignment for within_size policy [1 file, +3/-2]
  d066ab595c fs/proc/task_mmu: fix pagemap flags with PMD THP entries on 32bit [1 file, +1/-1]
  5802fe9cfc mm/readahead: fix large folio support in async readahead [1 file, +5/-1]
  58d0d02dbc mm: vmscan: account for free pages to prevent infinite Loop in throttle_direct_reclaim() [1 file, +8/-1]
  464770df46 mm: reinstate ability to map write-sealed memfd mappings read-only [4 files, +59/-19]
  2e31443a0d mm: hugetlb: independent PMD page table shared count [3 files, +38/-9]

Changes in 6.12.9
	platform/x86: mlx-platform: call pci_dev_put() to balance the refcount
	drm/amdgpu: fix backport of commit 73dae652dcac
	platform/x86: thinkpad-acpi: Add support for hotkey 0x1401
	platform/x86: hp-wmi: mark 8A15 board for timed OMEN thermal profile
	selinux: ignore unknown extended permissions
	mmc: sdhci-msm: fix crypto key eviction
	pmdomain: imx: gpcv2: fix an OF node reference leak in imx_gpcv2_probe()
	pmdomain: core: add dummy release function to genpd device
	tracing: Have process_string() also allow arrays
	block: lift bio_is_zone_append to bio.h
	btrfs: use bio_is_zone_append() in the completion handler
	RDMA/bnxt_re: Remove always true dattr validity check
	sched_ext: fix application of sizeof to pointer
	RDMA/mlx5: Enforce same type port association for multiport RoCE
	RDMA/bnxt_re: Fix max SGEs for the Work Request
	RDMA/bnxt_re: Avoid initializing the software queue for user queues
	RDMA/bnxt_re: Avoid sending the modify QP workaround for latest adapters
	RDMA/core: Fix ENODEV error for iWARP test over vlan
	nvme-pci: 512 byte aligned dma pool segment quirk
	wifi: iwlwifi: fix CRF name for Bz
	RDMA/bnxt_re: Fix the check for 9060 condition
	RDMA/bnxt_re: Add check for path mtu in modify_qp
	RDMA/bnxt_re: Fix reporting hw_ver in query_device
	RDMA/nldev: Set error code in rdma_nl_notify_event
	RDMA/siw: Remove direct link to net_device
	RDMA/bnxt_re: Fix max_qp_wrs reported
	RDMA/bnxt_re: Disable use of reserved wqes
	RDMA/bnxt_re: Add send queue size check for variable wqe
	RDMA/bnxt_re: Fix MSN table size for variable wqe mode
	RDMA/bnxt_re: Fix the locking while accessing the QP table
	net: phy: micrel: Dynamically control external clock of KSZ PHY
	drm/bridge: adv7511_audio: Update Audio InfoFrame properly
	net: dsa: microchip: Fix KSZ9477 set_ageing_time function
	net: dsa: microchip: Fix LAN937X set_ageing_time function
	selftests: net: local_termination: require mausezahn
	netdev-genl: avoid empty messages in napi get
	RDMA/hns: Fix mapping error of zero-hop WQE buffer
	RDMA/hns: Fix accessing invalid dip_ctx during destroying QP
	RDMA/hns: Fix warning storm caused by invalid input in IO path
	RDMA/hns: Fix missing flush CQE for DWQE
	drm/xe: Revert some changes that break a mesa debug tool
	drm/xe/pf: Use correct function to check LMEM provisioning
	drm/xe: Fix fault on fd close after unbind
	net: stmmac: restructure the error path of stmmac_probe_config_dt()
	net: fix memory leak in tcp_conn_request()
	net: Fix netns for ip_tunnel_init_flow()
	netrom: check buffer length before accessing it
	net: pse-pd: tps23881: Fix power on/off issue
	net/mlx5: DR, select MSIX vector 0 for completion queue creation
	net/mlx5e: macsec: Maintain TX SA from encoding_sa
	net/mlx5e: Skip restore TC rules for vport rep without loaded flag
	net/mlx5e: Keep netdev when leave switchdev for devlink set legacy only
	RDMA/rxe: Remove the direct link to net_device
	drm/i915/cx0_phy: Fix C10 pll programming sequence
	drm/i915/dg1: Fix power gate sequence.
	workqueue: add printf attribute to __alloc_workqueue()
	netfilter: nft_set_hash: unaligned atomic read on struct nft_set_ext
	net: llc: reset skb->transport_header
	nvmet: Don't overflow subsysnqn
	ALSA: usb-audio: US16x08: Initialize array before use
	eth: bcmsysport: fix call balance of priv->clk handling routines
	net: mv643xx_eth: fix an OF node reference leak
	net: wwan: t7xx: Fix FSM command timeout issue
	RDMA/rtrs: Ensure 'ib_sge list' is accessible
	RDMA/bnxt_re: Fix error recovery sequence
	io_uring/net: always initialize kmsg->msg.msg_inq upfront
	net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
	net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets
	net: restrict SO_REUSEPORT to inet sockets
	net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init()
	af_packet: fix vlan_get_tci() vs MSG_PEEK
	af_packet: fix vlan_get_protocol_dgram() vs MSG_PEEK
	ila: serialize calls to nf_register_net_hooks()
	net: ti: icssg-prueth: Fix firmware load sequence.
	net: ti: icssg-prueth: Fix clearing of IEP_CMP_CFG registers during iep_init
	btrfs: allow swap activation to be interruptible
	perf/x86/intel: Add Arrow Lake U support
	wifi: mac80211: fix mbss changed flags corruption on 32 bit systems
	wifi: cfg80211: clear link ID from bitmap during link delete after clean up
	wifi: mac80211: wake the queues in case of failure in resume
	drm/amdgpu: use sjt mec fw on gfx943 for sriov
	drm/amdkfd: Correct the migration DMA map direction
	ALSA: hda: cs35l56: Remove calls to cs35l56_force_sync_asp1_registers_from_cache()
	ALSA: hda/realtek - Add support for ASUS Zen AIO 27 Z272SD_A272SD audio
	btrfs: handle bio_split() errors
	btrfs: flush delalloc workers queue before stopping cleaner kthread during unmount
	ALSA: hda/ca0132: Use standard HD-audio quirk matching helpers
	ALSA: hda/realtek: Add new alc2xx-fixup-headset-mic model
	sound: usb: enable DSD output for ddHiFi TC44C
	sound: usb: format: don't warn that raw DSD is unsupported
	spi: spi-cadence-qspi: Disable STIG mode for Altera SoCFPGA.
	ASoC: audio-graph-card: Call of_node_put() on correct node
	ARC: build: disallow invalid PAE40 + 4K page config
	ARC: build: Use __force to suppress per-CPU cmpxchg warnings
	ARC: bpf: Correct conditional check in 'check_jmp_32'
	bpf: fix potential error return
	ksmbd: retry iterate_dir in smb2_query_dir
	ksmbd: set ATTR_CTIME flags when setting mtime
	smb: client: destroy cfid_put_wq on module exit
	net: usb: qmi_wwan: add Telit FE910C04 compositions
	Bluetooth: hci_core: Fix sleeping function called from invalid context
	irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base
	ARC: build: Try to guess GCC variant of cross compiler
	bpf: refactor bpf_helper_changes_pkt_data to use helper number
	bpf: consider that tail calls invalidate packet pointers
	clk: thead: Fix TH1520 emmc and shdci clock rate
	scripts/mksysmap: Fix escape chars '$'
	modpost: fix the missed iteration for the max bit in do_input()
	kbuild: pacman-pkg: provide versioned linux-api-headers package
	Revert "ALSA: ump: Don't enumeration invalid groups for legacy rawmidi"
	RDMA/mlx5: Enable multiplane mode only when it is supported
	io_uring/kbuf: use pre-committed buffer address for non-pollable file
	ALSA: seq: Check UMP support for midi_version change
	ftrace: Fix function profiler's filtering functionality
	drm/xe: Use non-interruptible wait when moving BO to system
	drm/xe: Wait for migration job before unmapping pages
	ALSA hda/realtek: Add quirk for Framework F111:000C
	ALSA: seq: oss: Fix races at processing SysEx messages
	ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv
	kcov: mark in_softirq_really() as __always_inline
	maple_tree: reload mas before the second call for mas_empty_area
	clk: clk-imx8mp-audiomix: fix function signature
	scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity
	sched_ext: Fix invalid irq restore in scx_ops_bypass()
	RDMA/uverbs: Prevent integer overflow issue
	pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking
	workqueue: Do not warn when cancelling WQ_MEM_RECLAIM work from !WQ_MEM_RECLAIM worker
	sky2: Add device ID 11ab:4373 for Marvell 88E8075
	sched_ext: initialize kit->cursor.flags
	net/sctp: Prevent autoclose integer overflow in sctp_association_init()
	io_uring/rw: fix downgraded mshot read
	drm: adv7511: Drop dsi single lane support
	dt-bindings: display: adi,adv7533: Drop single lane support
	drm: adv7511: Fix use-after-free in adv7533_attach_dsi()
	wifi: iwlwifi: mvm: Fix __counted_by usage in cfg80211_wowlan_nd_*
	fgraph: Add READ_ONCE() when accessing fgraph_array[]
	net: ethernet: ti: am65-cpsw: default to round-robin for host port receive
	mm/damon/core: fix ignored quota goals and filters of newly committed schemes
	mm/damon/core: fix new damon_target objects leaks on damon_commit_targets()
	mm: shmem: fix the update of 'shmem_falloc->nr_unswapped'
	mm: shmem: fix incorrect index alignment for within_size policy
	fs/proc/task_mmu: fix pagemap flags with PMD THP entries on 32bit
	gve: process XSK TX descriptors as part of RX NAPI
	gve: clean XDP queues in gve_tx_stop_ring_gqi
	gve: guard XSK operations on the existence of queues
	gve: fix XDP allocation path in edge cases
	gve: guard XDP xmit NDO on existence of xdp queues
	gve: trigger RX NAPI instead of TX NAPI in gve_xsk_wakeup
	mm/readahead: fix large folio support in async readahead
	mm/kmemleak: fix sleeping function called from invalid context at print message
	mm: vmscan: account for free pages to prevent infinite Loop in throttle_direct_reclaim()
	mm: reinstate ability to map write-sealed memfd mappings read-only
	mm: hugetlb: independent PMD page table shared count
	mptcp: fix TCP options overflow.
	mptcp: fix recvbuffer adjust on sleeping rcvmsg
	mptcp: don't always assume copied data in mptcp_cleanup_rbuf()
	Linux 6.12.9

Change-Id: I539c48fcfd54c483af4858e034bec3477e68efd2
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2025-01-10 09:32:14 +00:00
Eduard Zingerman 28bcc80240 bpf: refactor bpf_helper_changes_pkt_data to use helper number
[ Upstream commit b238e187b4a2d3b54d80aec05a9cab6466b79dde ]

Use BPF helper number instead of function pointer in
bpf_helper_changes_pkt_data(). This would simplify usage of this
function in verifier.c:check_cfg() (in a follow-up patch),
where only helper number is easily available and there is no real need
to lookup helper proto.

Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20241210041100.1898468-3-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Stable-dep-of: 1a4607ffba35 ("bpf: consider that tail calls invalidate packet pointers")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-09 13:33:47 +01:00
Anton Protopopov 1da4ebd869 bpf: fix potential error return
[ Upstream commit c4441ca86afe4814039ee1b32c39d833c1a16bbc ]

The bpf_remove_insns() function returns WARN_ON_ONCE(error), where
error is a result of bpf_adj_branches(), and thus should be always 0
However, if for any reason it is not 0, then it will be converted to
boolean by WARN_ON_ONCE and returned to user space as 1, not an actual
error value. Fix this by returning the original err after the WARN check.

Signed-off-by: Anton Protopopov <aspsk@isovalent.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20241210114245.836164-1-aspsk@isovalent.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-09 13:33:46 +01:00
Greg Kroah-Hartman bba787badd Merge 6.12.8 into android16-6.12
GKI (arm64) relevant 24 out of 115 changes, affecting 34 files +169/-94
  f4ab7d7424 bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP [1 file, +5/-1]
  8cdfb06569 fork: avoid inappropriate uprobe access to invalid mm [1 file, +6/-7]
  2175b66c7f mm/vmstat: fix a W=1 clang compiler warning [1 file, +1/-1]
  35727f4506 tcp_bpf: Charge receive socket buffer in bpf_tcp_ingress() [2 files, +9/-3]
  4aa5dcb389 tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection [3 files, +16/-5]
  997cf2d8c2 bpf: Check negative offsets in __bpf_skb_min_len() [1 file, +15/-6]
  a817e938a0 phy: core: Fix an OF node refcount leakage in _of_phy_get() [1 file, +5/-2]
  479b6c2a5f phy: core: Fix an OF node refcount leakage in of_phy_provider_lookup() [1 file, +3/-1]
  09f17bfb36 phy: core: Fix that API devm_phy_put() fails to release the phy [1 file, +1/-1]
  f797151e84 phy: core: Fix that API devm_of_phy_provider_unregister() fails to unregister the phy provider [1 file, +3/-3]
  7e7c8ffc01 phy: core: Fix that API devm_phy_destroy() fails to destroy the phy [1 file, +1/-1]
  c180c3f42d ALSA: memalloc: prefer dma_mapping_error() over explicit address checking [1 file, +1/-1]
  a39ff5bf23 stddef: make __struct_group() UAPI C++-friendly [2 files, +21/-7]
  68662d78af tracing/kprobe: Make trace_kprobe's module callback called after jump_label update [1 file, +1/-1]
  ca5995f805 regmap: Use correct format specifier for logging range errors [1 file, +2/-2]
  fdaaf92943 bpf: Zero index arg error string for dynptr and iter [6 files, +29/-29]
  92d5139b91 virtio-blk: don't keep queue frozen during system suspend [1 file, +5/-2]
  16b54ee81d blk-mq: register cpuhp callback after hctx is added to xarray table [1 file, +7/-8]
  7d680f2f76 ublk: detach gendisk from ublk device if add_disk() fails [1 file, +17/-9]
  79a47fd0f1 freezer, sched: Report frozen tasks as 'D' instead of 'R' [1 file, +2/-1]
  a744146969 tracing: Constify string literal data member in struct trace_event_call [1 file, +1/-1]
  1cca920af1 tracing: Prevent bad count for tracing_cpumask_write [1 file, +3/-0]
  8e8494c83c io_uring/sqpoll: fix sqpoll error handling races [1 file, +6/-0]
  aed157301c PCI/MSI: Handle lack of irqdomain gracefully [2 files, +9/-2]

Changes in 6.12.8
	media: dvb-frontends: dib3000mb: fix uninit-value in dib3000_write_reg
	ceph: allocate sparse_ext map only for sparse reads
	arm64: dts: broadcom: Fix L2 linesize for Raspberry Pi 5
	bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP
	fork: avoid inappropriate uprobe access to invalid mm
	mm/vmstat: fix a W=1 clang compiler warning
	selftests/bpf: Fix compilation error in get_uprobe_offset()
	smb: client: Deduplicate "select NETFS_SUPPORT" in Kconfig
	smb: fix bytes written value in /proc/fs/cifs/Stats
	tcp_bpf: Charge receive socket buffer in bpf_tcp_ingress()
	tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection
	bpf: Check negative offsets in __bpf_skb_min_len()
	nfsd: Revert "nfsd: release svc_expkey/svc_export with rcu_work"
	nfsd: restore callback functionality for NFSv4.0
	mtd: diskonchip: Cast an operand to prevent potential overflow
	mtd: rawnand: arasan: Fix double assertion of chip-select
	mtd: rawnand: arasan: Fix missing de-registration of NAND
	phy: qcom-qmp: Fix register name in RX Lane config of SC8280XP
	phy: core: Fix an OF node refcount leakage in _of_phy_get()
	phy: core: Fix an OF node refcount leakage in of_phy_provider_lookup()
	phy: core: Fix that API devm_phy_put() fails to release the phy
	phy: core: Fix that API devm_of_phy_provider_unregister() fails to unregister the phy provider
	phy: core: Fix that API devm_phy_destroy() fails to destroy the phy
	phy: usb: Toggle the PHY power during init
	phy: rockchip: samsung-hdptx: Set drvdata before enabling runtime PM
	phy: rockchip: naneng-combphy: fix phy reset
	ALSA: memalloc: prefer dma_mapping_error() over explicit address checking
	dmaengine: mv_xor: fix child node refcount handling in early exit
	dmaengine: dw: Select only supported masters for ACPI devices
	dmaengine: tegra: Return correct DMA status when paused
	dmaengine: amd: qdma: Remove using the private get and set dma_ops APIs
	dmaengine: fsl-edma: implement the cleanup path of fsl_edma3_attach_pd()
	dmaengine: apple-admac: Avoid accessing registers in probe
	dmaengine: at_xdmac: avoid null_prt_deref in at_xdmac_prep_dma_memset
	ASoC: SOF: Intel: hda-dai: Do not release the link DMA on STOP
	platform/chrome: cros_ec_lpc: fix product identity for early Framework Laptops
	mtd: rawnand: fix double free in atmel_pmecc_create_user()
	ASoC: amd: ps: Fix for enabling DMIC on acp63 platform via _DSD entry
	ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21QA and 21QB
	ASoC: dt-bindings: realtek,rt5645: Fix CPVDD voltage comment
	ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21Q6 and 21Q7
	powerpc/pseries/vas: Add close() callback in vas_vm_ops struct
	power: supply: bq24190: Fix BQ24296 Vbus regulator support
	stddef: make __struct_group() UAPI C++-friendly
	tracing/kprobe: Make trace_kprobe's module callback called after jump_label update
	watchdog: it87_wdt: add PWRGD enable quirk for Qotom QCML04
	watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler
	Revert "watchdog: s3c2410_wdt: use exynos_get_pmu_regmap_by_phandle() for PMU regs"
	watchdog: mediatek: Add support for MT6735 TOPRGU/WDT
	scsi: qla1280: Fix hw revision numbering for ISP1020/1040
	scsi: megaraid_sas: Fix for a potential deadlock
	udf: Skip parent dir link count update if corrupted
	udf: Verify inode link counts before performing rename
	ALSA: ump: Don't open legacy substream for an inactive group
	ALSA: ump: Indicate the inactive group in legacy substream names
	ALSA: ump: Update legacy substream names upon FB info update
	ALSA: hda/conexant: fix Z60MR100 startup pop issue
	ALSA: sh: Use standard helper for buffer accesses
	smb: server: Fix building with GCC 15
	regmap: Use correct format specifier for logging range errors
	LoongArch: Fix reserving screen info memory for above-4G firmware
	LoongArch: BPF: Adjust the parameter of emit_jirl()
	platform/x86: asus-nb-wmi: Ignore unknown event 0xCF
	bpf: Zero index arg error string for dynptr and iter
	spi: intel: Add Panther Lake SPI controller support
	scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during driver load time
	scsi: mpi3mr: Synchronize access to ioctl data buffer
	scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs
	scsi: mpi3mr: Start controller indexing from 0
	scsi: mpi3mr: Handling of fault code for insufficient power
	scsi: storvsc: Do not flag MAINTENANCE_IN return of SRB_STATUS_DATA_OVERRUN as an error
	ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A
	spi: omap2-mcspi: Fix the IS_ERR() bug for devm_clk_get_optional_enabled()
	drm/dp_mst: Ensure mst_primary pointer is valid in drm_dp_mst_handle_up_req()
	virtio-blk: don't keep queue frozen during system suspend
	blk-mq: register cpuhp callback after hctx is added to xarray table
	wifi: iwlwifi: be less noisy if the NIC is dead in S3
	ublk: detach gendisk from ublk device if add_disk() fails
	drm/xe: Take PM ref in delayed snapshot capture worker
	drm/xe: Move the coredump registration to the worker thread
	objtool: Add bch2_trans_unlocked_error() to bcachefs noreturns
	freezer, sched: Report frozen tasks as 'D' instead of 'R'
	dmaengine: loongson2-apb: Change GENMASK to GENMASK_ULL
	perf/x86/intel/uncore: Add Clearwater Forest support
	tracing: Constify string literal data member in struct trace_event_call
	tracing: Prevent bad count for tracing_cpumask_write
	rtla/timerlat: Fix histogram ALL for zero samples
	io_uring/sqpoll: fix sqpoll error handling races
	i2c: microchip-core: actually use repeated sends
	x86/fred: Clear WFE in missing-ENDBRANCH #CPs
	virt: tdx-guest: Just leak decrypted memory on unrecoverable errors
	PCI/MSI: Handle lack of irqdomain gracefully
	perf/x86/intel: Fix bitmask of OCR and FRONTEND events for LNC
	i2c: imx: add imx7d compatible string for applying erratum ERR007805
	i2c: microchip-core: fix "ghost" detections
	perf/x86/intel/ds: Add PEBS format 6
	power: supply: cros_charge-control: add mutex for driver data
	power: supply: cros_charge-control: allow start_threshold == end_threshold
	power: supply: cros_charge-control: hide start threshold on v2 cmd
	power: supply: gpio-charger: Fix set charge current limits
	btrfs: fix race with memory mapped writes when activating swap file
	btrfs: avoid monopolizing a core when activating a swap file
	btrfs: fix swap file activation failure due to extents that used to be shared
	btrfs: fix transaction atomicity bug when enabling simple quotas
	btrfs: sysfs: fix direct super block member reads
	btrfs: fix use-after-free when COWing tree bock and tracing is enabled
	btrfs: check folio mapping after unlock in put_file_data()
	btrfs: check folio mapping after unlock in relocate_one_folio()
	Bluetooth: btusb: mediatek: move Bluetooth power off command position
	Bluetooth: btusb: mediatek: add callback function in btusb_disconnect
	Bluetooth: btusb: mediatek: add intf release flow when usb disconnect
	Bluetooth: btusb: mediatek: change the conditions for ISO interface
	ALSA: ump: Shut up truncated string warning
	ALSA: sh: Fix wrong argument order for copy_from_iter()
	Linux 6.12.8

Change-Id: I2f5b46453984dde6ed8c381109655261a6bc3596
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2025-01-03 07:44:08 +00:00
Kumar Kartikeya Dwivedi fdaaf92943 bpf: Zero index arg error string for dynptr and iter
[ Upstream commit bd74e238ae6944b462f57ce8752440a011ba4530 ]

Andrii spotted that process_dynptr_func's rejection of incorrect
argument register type will print an error string where argument numbers
are not zero-indexed, unlike elsewhere in the verifier.  Fix this by
subtracting 1 from regno. The same scenario exists for iterator
messages. Fix selftest error strings that match on the exact argument
number while we're at it to ensure clean bisection.

Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241203002235.3776418-1-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-02 10:34:18 +01:00
Andrea Righi f4ab7d7424 bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP
[ Upstream commit 23579010cf0a12476e96a5f1acdf78a9c5843657 ]

On x86-64 calling bpf_get_smp_processor_id() in a kernel with CONFIG_SMP
disabled can trigger the following bug, as pcpu_hot is unavailable:

 [    8.471774] BUG: unable to handle page fault for address: 00000000936a290c
 [    8.471849] #PF: supervisor read access in kernel mode
 [    8.471881] #PF: error_code(0x0000) - not-present page

Fix by inlining a return 0 in the !CONFIG_SMP case.

Fixes: 1ae6921009 ("bpf: inline bpf_get_smp_processor_id() helper")
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20241217195813.622568-1-arighi@nvidia.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-02 10:34:10 +01:00
Greg Kroah-Hartman 32d70063b7 Merge 6.12.6 into android16-6.12
GKI (arm64) relevant 39 out of 174 changes, affecting 58 files +843/-596
  9b53d2c2a3 bpf: Fix UAF via mismatching bpf_prog/attachment RCU flavors [1 file, +7/-0]
  26702b3439 splice: do not checksum AF_UNIX sockets [1 file, +1/-0]
  8aa9d1ff5b tcp: check space before adding MPTCP SYN options [1 file, +4/-2]
  29d1e06560 blk-cgroup: Fix UAF in blkcg_unpin_online() [1 file, +5/-1]
  cbd06d9808 block: Switch to using refcount_t for zone write plugs [1 file, +10/-10]
  eea49fcea5 block: Use a zone write plug BIO work for REQ_NOWAIT BIOs [1 file, +42/-20]
  a4b656ea1b dm: Fix dm-zoned-reclaim zone write pointer alignment [3 files, +124/-26]
  7fa80134cf block: Prevent potential deadlocks in zone write plug error recovery [2 files, +61/-249]
  825bccd943 memcg: slub: fix SUnreclaim for post charged objects [1 file, +18/-3]
  3be6628c47 ALSA: usb-audio: Add implicit feedback quirk for Yamaha THR5 [1 file, +2/-0]
  0eae680d03 block: Ignore REQ_NOWAIT for zone reset and zone finish operations [1 file, +9/-0]
  2588c29afd usb: core: hcd: only check primary hcd skip_phy_initialization [1 file, +7/-1]
  5de70cdf42 bpf: Revert "bpf: Mark raw_tp arguments with PTR_MAYBE_NULL" [4 files, +9/-87]
  cab34b0c9d scsi: ufs: core: Update compl_time_stamp_local_clock after completing a cqe [1 file, +1/-0]
  dd6b0ca602 usb: gadget: u_serial: Fix the issue that gs_start_io crashed due to accessing null pointer [1 file, +6/-3]
  d32babf3fe usb: typec: ucsi: Fix completion notifications [1 file, +4/-2]
  2c3ca17a07 bpf: Check size for BTF-based ctx access of pointer members [3 files, +10/-4]
  e6d1dec142 bpf: Fix theoretical prog_array UAF in __uprobe_perf_func() [2 files, +10/-9]
  dfb15ddf3b bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog [1 file, +4/-0]
  bf2318e288 bpf, sockmap: Fix race between element replace and close() [1 file, +2/-3]
  2bd517bafc bpf, sockmap: Fix update element with same [1 file, +1/-0]
  b2fc4b17fc bpf: Augment raw_tp arguments with PTR_MAYBE_NULL [1 file, +138/-0]
  a852c82eda tipc: fix NULL deref in cleanup_bearer() [1 file, +6/-1]
  6610c7f8a8 net: defer final 'struct net' free in netns dismantle [2 files, +20/-1]
  e7b02a0feb block: get wp_offset by bdev_offset_from_zone_start [1 file, +1/-1]
  13ba06e260 Bluetooth: Improve setsockopt() handling of malformed user input [6 files, +33/-40]
  45fe76573a netfilter: IDLETIMER: Fix for possible ABBA deadlock [1 file, +28/-24]
  7cf0bd232b netfilter: nf_tables: do not defer rule destruction via call_rcu [2 files, +15/-21]
  356078a5c5 net/sched: netem: account for backlog updates from child qdisc [1 file, +16/-6]
  f9ecc90b5d Bluetooth: hci_event: Fix using rcu_read_(un)lock while iterating [1 file, +11/-22]
  4ca50db1c5 Bluetooth: iso: Always release hdev at the end of iso_listen_bis [1 file, +1/-2]
  827f30b1df Bluetooth: iso: Fix recursive locking warning [1 file, +6/-2]
  d0f4a51246 Bluetooth: SCO: Add support for 16 bits transparent voice setting [2 files, +16/-14]
  c541d7b5e1 Bluetooth: iso: Fix circular lock in iso_listen_bis [1 file, +12/-2]
  cbe640d6ca Bluetooth: iso: Fix circular lock in iso_conn_big_sync [1 file, +27/-7]
  c1291ea131 blk-mq: move cpuhp callback registering out of q->sysfs_lock [1 file, +92/-6]
  f1a494df83 block: Fix potential deadlock while freezing queue and acquiring sysfs_lock [3 files, +26/-23]
  1e04ca11a4 KVM: arm64: Disable MPAM visibility by default and ignore VMM writes [1 file, +52/-3]
  5013bd1e23 x86/static-call: fix 32-bit build [1 file, +6/-1]

Changes in 6.12.6
	usb: misc: onboard_usb_dev: skip suspend/resume sequence for USB5744 SMBus support
	serial: sh-sci: Check if TX data was written to device in .tx_empty()
	bpf: Fix UAF via mismatching bpf_prog/attachment RCU flavors
	sched/deadline: Fix replenish_dl_new_period dl_server condition
	perf/x86/intel/ds: Unconditionally drain PEBS DS when changing PEBS_DATA_CFG
	clk: en7523: Fix wrong BUS clock for EN7581
	ksmbd: fix racy issue from session lookup and expire
	splice: do not checksum AF_UNIX sockets
	tcp: check space before adding MPTCP SYN options
	perf ftrace: Fix undefined behavior in cmp_profile_data()
	virtio_net: correct netdev_tx_reset_queue() invocation point
	virtio_ring: add a func argument 'recycle_done' to virtqueue_resize()
	virtio_net: ensure netdev_tx_reset_queue is called on tx ring resize
	riscv: mm: Do not call pmd dtor on vmemmap page table teardown
	riscv: Fix wrong usage of __pa() on a fixmap address
	blk-cgroup: Fix UAF in blkcg_unpin_online()
	block: Switch to using refcount_t for zone write plugs
	block: Use a zone write plug BIO work for REQ_NOWAIT BIOs
	dm: Fix dm-zoned-reclaim zone write pointer alignment
	block: Prevent potential deadlocks in zone write plug error recovery
	gpio: graniterapids: Fix GPIO Ack functionality
	memcg: slub: fix SUnreclaim for post charged objects
	spi: rockchip: Fix PM runtime count on no-op cs
	gpio: ljca: Initialize num before accessing item in ljca_gpio_config
	ALSA: usb-audio: Add implicit feedback quirk for Yamaha THR5
	ALSA: hda/realtek: Fix headset mic on Acer Nitro 5
	riscv: Fix IPIs usage in kfence_protect_page()
	crypto: hisilicon/debugfs - fix the struct pointer incorrectly offset problem
	drm/panic: remove spurious empty line to clean warning
	usb: host: max3421-hcd: Correctly abort a USB request.
	block: Ignore REQ_NOWAIT for zone reset and zone finish operations
	gpio: graniterapids: Fix vGPIO driver crash
	gpio: graniterapids: Fix incorrect BAR assignment
	gpio: graniterapids: Fix invalid GPI_IS register offset
	gpio: graniterapids: Fix invalid RXEVCFG register bitmask
	gpio: graniterapids: Determine if GPIO pad can be used by driver
	gpio: graniterapids: Check if GPIO line can be used for IRQs
	usb: core: hcd: only check primary hcd skip_phy_initialization
	bpf: Revert "bpf: Mark raw_tp arguments with PTR_MAYBE_NULL"
	ata: sata_highbank: fix OF node reference leak in highbank_initialize_phys()
	usb: dwc2: Fix HCD resume
	usb: dwc2: hcd: Fix GetPortStatus & SetPortFeature
	usb: dwc2: Fix HCD port connection race
	scsi: ufs: core: Update compl_time_stamp_local_clock after completing a cqe
	usb: gadget: midi2: Fix interpretation of is_midi1 bits
	usb: ehci-hcd: fix call balance of clocks handling routines
	usb: typec: anx7411: fix fwnode_handle reference leak
	usb: dwc3: imx8mp: fix software node kernel dump
	usb: typec: anx7411: fix OF node reference leaks in anx7411_typec_switch_probe()
	usb: gadget: u_serial: Fix the issue that gs_start_io crashed due to accessing null pointer
	usb: typec: ucsi: Fix completion notifications
	usb: dwc3: xilinx: make sure pipe clock is deselected in usb2 only mode
	iommu/tegra241-cmdqv: do not use smp_processor_id in preemptible context
	iommu/vt-d: Remove cache tags before disabling ATS
	iommu/vt-d: Fix qi_batch NULL pointer with nested parent domain
	drm/xe: Call invalidation_fence_fini for PT inval fences in error state
	drm/amdkfd: pause autosuspend when creating pdd
	drm/i915: Fix memory leak by correcting cache object name in error handler
	drm/i915/color: Stop using non-posted DSB writes for legacy LUT
	drm/i915: Fix NULL pointer dereference in capture_engine
	drm/amdgpu: fix UVD contiguous CS mapping problem
	drm/amd/pm: Set SMU v13.0.7 default workload type
	drm/amdgpu: fix when the cleaner shader is emitted
	drm/amdkfd: Dereference null return value
	drm/amdkfd: hard-code cacheline size for gfx11
	drm/amdkfd: hard-code MALL cacheline size for gfx11, gfx12
	xfs: set XFS_SICK_INO_SYMLINK_ZAPPED explicitly when zapping a symlink
	xfs: update btree keys correctly when _insrec splits an inode root block
	xfs: don't drop errno values when we fail to ficlone the entire range
	xfs: return a 64-bit block count from xfs_btree_count_blocks
	xfs: fix null bno_hint handling in xfs_rtallocate_rtg
	xfs: return from xfs_symlink_verify early on V4 filesystems
	xfs: fix scrub tracepoints when inode-rooted btrees are involved
	xfs: only run precommits once per transaction object
	xfs: unlock inodes when erroring out of xfs_trans_alloc_dir
	bpf: Check size for BTF-based ctx access of pointer members
	bpf: Fix theoretical prog_array UAF in __uprobe_perf_func()
	bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog
	bpf, sockmap: Fix race between element replace and close()
	bpf, sockmap: Fix update element with same
	bpf: Augment raw_tp arguments with PTR_MAYBE_NULL
	perf tools: Fix build-id event recording
	wifi: nl80211: fix NL80211_ATTR_MLO_LINK_ID off-by-one
	wifi: mac80211: init cnt before accessing elem in ieee80211_copy_mbssid_beacon
	wifi: mac80211: fix a queue stall in certain cases of CSA
	wifi: mac80211: fix station NSS capability initialization order
	perf machine: Initialize machine->env to address a segfault
	acpi: nfit: vmalloc-out-of-bounds Read in acpi_nfit_ctl
	amdgpu/uvd: get ring reference from rq scheduler
	batman-adv: Do not send uninitialized TT changes
	batman-adv: Remove uninitialized data in full table TT response
	batman-adv: Do not let TT changes list grows indefinitely
	tipc: fix NULL deref in cleanup_bearer()
	net/mlx5: DR, prevent potential error pointer dereference
	wifi: cfg80211: sme: init n_channels before channels[] access
	selftests: mlxsw: sharedbuffer: Remove h1 ingress test case
	selftests: mlxsw: sharedbuffer: Remove duplicate test cases
	selftests: mlxsw: sharedbuffer: Ensure no extra packets are counted
	ptp: kvm: x86: Return EOPNOTSUPP instead of ENODEV from kvm_arch_ptp_init()
	bnxt_en: Fix GSO type for HW GRO packets on 5750X chips
	net: lapb: increase LAPB_HEADER_LEN
	net: defer final 'struct net' free in netns dismantle
	net: mscc: ocelot: fix memory leak on ocelot_port_add_txtstamp_skb()
	net: mscc: ocelot: improve handling of TX timestamp for unknown skb
	net: mscc: ocelot: ocelot->ts_id_lock and ocelot_port->tx_skbs.lock are IRQ-safe
	net: mscc: ocelot: be resilient to loss of PTP packets during transmission
	net: mscc: ocelot: perform error cleanup in ocelot_hwstamp_set()
	regulator: axp20x: AXP717: set ramp_delay
	spi: aspeed: Fix an error handling path in aspeed_spi_[read|write]_user()
	net: sparx5: fix FDMA performance issue
	net: sparx5: fix the maximum frame length register
	ACPI: resource: Fix memory resource type union access
	cxgb4: use port number to set mac addr
	qca_spi: Fix clock speed for multiple QCA7000
	qca_spi: Make driver probing reliable
	ALSA: control: Avoid WARN() for symlink errors
	ASoC: amd: yc: Fix the wrong return value
	Documentation: PM: Clarify pm_runtime_resume_and_get() return value
	block: get wp_offset by bdev_offset_from_zone_start
	bnxt_en: Fix aggregation ID mask to prevent oops on 5760X chips
	Documentation: networking: Add a caveat to nexthop_compat_mode sysctl
	cifs: Fix rmdir failure due to ongoing I/O on deleted file
	net: renesas: rswitch: fix possible early skb release
	net: renesas: rswitch: fix race window between tx start and complete
	net: renesas: rswitch: fix leaked pointer on error path
	net: renesas: rswitch: avoid use-after-put for a device tree node
	net: renesas: rswitch: handle stop vs interrupt race
	ASoC: tas2781: Fix calibration issue in stress test
	Bluetooth: Improve setsockopt() handling of malformed user input
	libperf: evlist: Fix --cpu argument on hybrid platform
	ASoC: fsl_xcvr: change IFACE_PCM to IFACE_MIXER
	ASoC: fsl_spdif: change IFACE_PCM to IFACE_MIXER
	selftests: netfilter: Stabilize rpath.sh
	netfilter: IDLETIMER: Fix for possible ABBA deadlock
	netfilter: nf_tables: do not defer rule destruction via call_rcu
	net: mana: Fix memory leak in mana_gd_setup_irqs
	net: mana: Fix irq_contexts memory leak in mana_gd_setup_irqs
	net: dsa: felix: fix stuck CPU-injected packets with short taprio windows
	net/sched: netem: account for backlog updates from child qdisc
	net, team, bonding: Add netdev_base_features helper
	bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features
	bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL
	team: Fix initial vlan_feature set in __team_compute_features
	team: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL
	ASoC: Intel: sof_sdw: Add space for a terminator into DAIs array
	ACPICA: events/evxfregn: don't release the ContextMutex that was never acquired
	Bluetooth: hci_event: Fix using rcu_read_(un)lock while iterating
	Bluetooth: iso: Always release hdev at the end of iso_listen_bis
	Bluetooth: iso: Fix recursive locking warning
	Bluetooth: SCO: Add support for 16 bits transparent voice setting
	Bluetooth: iso: Fix circular lock in iso_listen_bis
	Bluetooth: iso: Fix circular lock in iso_conn_big_sync
	Bluetooth: btmtk: avoid UAF in btmtk_process_coredump
	net: renesas: rswitch: fix initial MPIC register setting
	net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries
	net: dsa: tag_ocelot_8021q: fix broken reception
	drm/xe: fix the ERR_PTR() returned on failure to allocate tiny pt
	drm/xe/reg_sr: Remove register pool
	blk-iocost: Avoid using clamp() on inuse in __propagate_weights()
	kselftest/arm64: abi: fix SVCR detection
	blk-mq: move cpuhp callback registering out of q->sysfs_lock
	block: Fix potential deadlock while freezing queue and acquiring sysfs_lock
	rust: kbuild: set `bindgen`'s Rust target version
	KVM: arm64: Disable MPAM visibility by default and ignore VMM writes
	xen/netfront: fix crash when removing device
	x86: make get_cpu_vendor() accessible from Xen code
	objtool/x86: allow syscall instruction
	x86/static-call: provide a way to do very early static-call updates
	x86/xen: don't do PV iret hypercall through hypercall page
	x86/xen: add central hypercall functions
	x86/xen: use new hypercall functions instead of hypercall page
	x86/xen: remove hypercall page
	x86/static-call: fix 32-bit build
	Linux 6.12.6

Change-Id: I656537654d0b73440e5b76deee63abd58ea68b56
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-12-30 10:18:52 +00:00
Kumar Kartikeya Dwivedi b2fc4b17fc bpf: Augment raw_tp arguments with PTR_MAYBE_NULL
commit 838a10bd2ebfe11a60dd67687533a7cfc220cc86 upstream.

Arguments to a raw tracepoint are tagged as trusted, which carries the
semantics that the pointer will be non-NULL.  However, in certain cases,
a raw tracepoint argument may end up being NULL. More context about this
issue is available in [0].

Thus, there is a discrepancy between the reality, that raw_tp arguments can
actually be NULL, and the verifier's knowledge, that they are never NULL,
causing explicit NULL check branch to be dead code eliminated.

A previous attempt [1], i.e. the second fixed commit, was made to
simulate symbolic execution as if in most accesses, the argument is a
non-NULL raw_tp, except for conditional jumps.  This tried to suppress
branch prediction while preserving compatibility, but surfaced issues
with production programs that were difficult to solve without increasing
verifier complexity. A more complete discussion of issues and fixes is
available at [2].

Fix this by maintaining an explicit list of tracepoints where the
arguments are known to be NULL, and mark the positional arguments as
PTR_MAYBE_NULL. Additionally, capture the tracepoints where arguments
are known to be ERR_PTR, and mark these arguments as scalar values to
prevent potential dereference.

Each hex digit is used to encode NULL-ness (0x1) or ERR_PTR-ness (0x2),
shifted by the zero-indexed argument number x 4. This can be represented
as follows:
1st arg: 0x1
2nd arg: 0x10
3rd arg: 0x100
... and so on (likewise for ERR_PTR case).

In the future, an automated pass will be used to produce such a list, or
insert __nullable annotations automatically for tracepoints. Each
compilation unit will be analyzed and results will be collated to find
whether a tracepoint pointer is definitely not null, maybe null, or an
unknown state where verifier conservatively marks it PTR_MAYBE_NULL.
A proof of concept of this tool from Eduard is available at [3].

Note that in case we don't find a specification in the raw_tp_null_args
array and the tracepoint belongs to a kernel module, we will
conservatively mark the arguments as PTR_MAYBE_NULL. This is because
unlike for in-tree modules, out-of-tree module tracepoints may pass NULL
freely to the tracepoint. We don't protect against such tracepoints
passing ERR_PTR (which is uncommon anyway), lest we mark all such
arguments as SCALAR_VALUE.

While we are it, let's adjust the test raw_tp_null to not perform
dereference of the skb->mark, as that won't be allowed anymore, and make
it more robust by using inline assembly to test the dead code
elimination behavior, which should still stay the same.

  [0]: https://lore.kernel.org/bpf/ZrCZS6nisraEqehw@jlelli-thinkpadt14gen4.remote.csb
  [1]: https://lore.kernel.org/all/20241104171959.2938862-1-memxor@gmail.com
  [2]: https://lore.kernel.org/bpf/20241206161053.809580-1-memxor@gmail.com
  [3]: https://github.com/eddyz87/llvm-project/tree/nullness-for-tracepoint-params

Reported-by: Juri Lelli <juri.lelli@redhat.com> # original bug
Reported-by: Manu Bretelle <chantra@meta.com> # bugs in masking fix
Fixes: 3f00c52393 ("bpf: Allow trusted pointers to be passed to KF_TRUSTED_ARGS kfuncs")
Fixes: cb4158ce8ec8 ("bpf: Mark raw_tp arguments with PTR_MAYBE_NULL")
Reviewed-by: Eduard Zingerman <eddyz87@gmail.com>
Co-developed-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241213221929.3495062-3-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-19 18:13:10 +01:00
Kumar Kartikeya Dwivedi 2c3ca17a07 bpf: Check size for BTF-based ctx access of pointer members
commit 659b9ba7cb2d7adb64618b87ddfaa528a143766e upstream.

Robert Morris reported the following program type which passes the
verifier in [0]:

SEC("struct_ops/bpf_cubic_init")
void BPF_PROG(bpf_cubic_init, struct sock *sk)
{
	asm volatile("r2 = *(u16*)(r1 + 0)");     // verifier should demand u64
	asm volatile("*(u32 *)(r2 +1504) = 0");   // 1280 in some configs
}

The second line may or may not work, but the first instruction shouldn't
pass, as it's a narrow load into the context structure of the struct ops
callback. The code falls back to btf_ctx_access to ensure correctness
and obtaining the types of pointers. Ensure that the size of the access
is correctly checked to be 8 bytes, otherwise the verifier thinks the
narrow load obtained a trusted BTF pointer and will permit loads/stores
as it sees fit.

Perform the check on size after we've verified that the load is for a
pointer field, as for scalar values narrow loads are fine. Access to
structs passed as arguments to a BPF program are also treated as
scalars, therefore no adjustment is needed in their case.

Existing verifier selftests are broken by this change, but because they
were incorrect. Verifier tests for d_path were performing narrow load
into context to obtain path pointer, had this program actually run it
would cause a crash. The same holds for verifier_btf_ctx_access tests.

  [0]: https://lore.kernel.org/bpf/51338.1732985814@localhost

Fixes: 9e15db6613 ("bpf: Implement accurate raw_tp context access via BTF")
Reported-by: Robert Morris <rtm@mit.edu>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241212092050.3204165-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-19 18:13:09 +01:00
Kumar Kartikeya Dwivedi 5de70cdf42 bpf: Revert "bpf: Mark raw_tp arguments with PTR_MAYBE_NULL"
commit c00d738e1673ab801e1577e4e3c780ccf88b1a5b upstream.

This patch reverts commit
cb4158ce8ec8 ("bpf: Mark raw_tp arguments with PTR_MAYBE_NULL"). The
patch was well-intended and meant to be as a stop-gap fixing branch
prediction when the pointer may actually be NULL at runtime. Eventually,
it was supposed to be replaced by an automated script or compiler pass
detecting possibly NULL arguments and marking them accordingly.

However, it caused two main issues observed for production programs and
failed to preserve backwards compatibility. First, programs relied on
the verifier not exploring == NULL branch when pointer is not NULL, thus
they started failing with a 'dereference of scalar' error.  Next,
allowing raw_tp arguments to be modified surfaced the warning in the
verifier that warns against reg->off when PTR_MAYBE_NULL is set.

More information, context, and discusson on both problems is available
in [0]. Overall, this approach had several shortcomings, and the fixes
would further complicate the verifier's logic, and the entire masking
scheme would have to be removed eventually anyway.

Hence, revert the patch in preparation of a better fix avoiding these
issues to replace this commit.

  [0]: https://lore.kernel.org/bpf/20241206161053.809580-1-memxor@gmail.com

Reported-by: Manu Bretelle <chantra@meta.com>
Fixes: cb4158ce8ec8 ("bpf: Mark raw_tp arguments with PTR_MAYBE_NULL")
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241213221929.3495062-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-19 18:13:03 +01:00
Greg Kroah-Hartman 2ec0c94f9b Merge 6.12.5 into android16-6.12
GKI (arm64) relevant 129 out of 468 changes, affecting 180 files +1843/-980
  e0964a5778 ptp: Add error handling for adjfine callback in ptp_clock_adjtime [1 file, +2/-1]
  a007f8895f net/sched: tbf: correct backlog statistic for GSO packets [1 file, +12/-6]
  9545011e7b net: Fix icmp host relookup triggering ip_rt_bug [1 file, +3/-0]
  01f95357e4 ipv6: avoid possible NULL deref in modify_prefix_route() [1 file, +7/-6]
  8b591bd522 net/ipv6: release expired exception dst cached in socket [1 file, +3/-3]
  e48b211c4c tipc: Fix use-after-free of kernel socket in cleanup_bearer(). [1 file, +1/-1]
  da5cc778e7 netfilter: nft_inner: incorrect percpu area handling under softirq [2 files, +46/-12]
  a36a6d7037 Revert "udp: avoid calling sock_def_readable() if possible" [1 file, +3/-11]
  22074dc1d4 ethtool: Fix wrong mod state in case of verbose and no_mask bitset [1 file, +44/-4]
  316183d583 net: avoid potential UAF in default_operstate() [1 file, +6/-1]
  c00372e41b mmc: sd: SDUC Support Recognition [7 files, +27/-15]
  19e22f1e68 mmc: core: Adjust ACMD22 to SDUC [1 file, +18/-6]
  42311846d3 mmc: core: Use GFP_NOIO in ACMD22 [1 file, +4/-0]
  4e51552bc5 zram: do not mark idle slots that cannot be idle [1 file, +18/-7]
  0ab037634b zram: clear IDLE flag in mark_idle() [1 file, +2/-0]
  405b6d5f90 ntp: Remove invalid cast in time offset math [1 file, +1/-1]
  6358df316d f2fs: clean up w/ F2FS_{BLK_TO_BYTES,BTYES_TO_BLK} [1 file, +29/-39]
  e6a91ed4b9 f2fs: fix to adjust appropriate length for fiemap [2 files, +4/-3]
  8e9fec7f79 f2fs: fix to requery extent which cross boundary of inquiry [1 file, +15/-5]
  815d8f0e52 i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_STATUS_BITS [2 files, +5/-3]
  c3806cf647 i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED [2 files, +59/-13]
  1117462773 i3c: master: Fix dynamic address leak when 'assigned-address' is present [1 file, +5/-10]
  7d4e5e33ea scsi: ufs: core: Always initialize the UIC done completion [1 file, +4/-7]
  3ad69f2f08 scsi: ufs: core: Add ufshcd_send_bsg_uic_cmd() for UFS BSG [3 files, +38/-1]
  47f4ad956b bpf, vsock: Fix poll() missing a queue [1 file, +3/-0]
  a222e48fea bpf, vsock: Invoke proto::close on close() [1 file, +40/-27]
  dabaf26846 xsk: always clear DMA mapping information when unmapping the pool [1 file, +2/-3]
  5c9e3bb43a tcp_bpf: Fix the sk_mem_uncharge logic in tcp_bpf_sendmsg [1 file, +4/-7]
  7bc37dd9ea ALSA: usb-audio: Notify xrun for low-latency mode [1 file, +11/-3]
  a78af11806 pmdomain: core: Add missing put_device() [1 file, +1/-0]
  913a3f1c06 pmdomain: core: Fix error path in pm_genpd_init() when ida alloc fails [1 file, +19/-17]
  5548887987 nvme: don't apply NVME_QUIRK_DEALLOCATE_ZEROES when DSM is not supported [1 file, +2/-1]
  bdbf87486d bpf: Ensure reg is PTR_TO_STACK in process_iter_arg [2 files, +7/-2]
  2459a0b149 drivers/virt: pkvm: Don't fail ioremap() call if MMIO_GUARD fails [1 file, +1/-5]
  0da7d4b7ca bpf: Don't mark STACK_INVALID as STACK_MISC in mark_stack_slot_misc [1 file, +6/-3]
  f9f2a2739e bpf: Fix narrow scalar spill onto 64-bit spilled scalar slots [1 file, +1/-0]
  845cc4ee8e nvme-fabrics: handle zero MAXCMD without closing the connection [1 file, +3/-2]
  c2277e2859 scatterlist: fix incorrect func name in kernel-doc [1 file, +1/-1]
  81ec3c6ceb bpf: Handle BPF_EXIST and BPF_NOEXIST for LPM trie [1 file, +20/-3]
  6dc076a257 bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem [1 file, +1/-3]
  7218e441ad bpf: Handle in-place update for full LPM trie correctly [1 file, +21/-23]
  412bf01fd5 bpf: Fix exact match conditions in trie_get_next_key() [1 file, +2/-2]
  e689bc6697 HID: wacom: fix when get product name maybe null pointer [1 file, +2/-1]
  3b0c5bb437 can: dev: can_set_termination(): allow sleeping GPIOs [1 file, +1/-1]
  ba0ee489cd tracing: Fix cmp_entries_dup() to respect sort() comparison rules [1 file, +1/-5]
  ec643064ab arm64: mm: Fix zone_dma_limit calculation [1 file, +8/-9]
  34b6197867 arm64: Ensure bits ASID[15:8] are masked out when the kernel uses 8-bit ASIDs [1 file, +2/-2]
  abd614bbfc arm64: ptrace: fix partial SETREGSET for NT_ARM_TAGGED_ADDR_CTRL [1 file, +5/-1]
  8ab73c34e3 arm64: ptrace: fix partial SETREGSET for NT_ARM_FPMR [1 file, +2/-0]
  4105dd76bc arm64: ptrace: fix partial SETREGSET for NT_ARM_POE [1 file, +2/-0]
  7f1292f8d4 ALSA: usb-audio: Fix a DMA to stack memory bug [1 file, +27/-15]
  39c5d89b56 ALSA: usb-audio: Add extra PID for RME Digiface USB [3 files, +176/-168]
  9c191055c7 scsi: ufs: core: sysfs: Prevent div by zero [1 file, +6/-0]
  2e7a3bb033 scsi: ufs: core: Cancel RTC work during ufshcd_remove() [1 file, +1/-0]
  5a717f43c2 scsi: ufs: core: Add missing post notify for power mode change [2 files, +10/-7]
  793e560a6b io_uring: Change res2 parameter type in io_uring_cmd_done [2 files, +3/-3]
  85351e4941 Revert "readahead: properly shorten readahead when falling back to do_page_cache_ra()" [1 file, +2/-3]
  95e197354e cacheinfo: Allocate memory during CPU hotplug if not done from the primary CPU [1 file, +8/-6]
  bc031095d1 modpost: Add .irqentry.text to OTHER_SECTIONS [1 file, +1/-1]
  178e31df1f bpf: fix OOB devmap writes when deleting elements [1 file, +3/-3]
  3dcc20418e dma-buf: fix dma_fence_array_signaled v4 [1 file, +27/-1]
  f3dbb097d6 dma-fence: Fix reference leak on fence merge failure path [1 file, +2/-0]
  4715555964 dma-fence: Use kernel's sort for merging fences [1 file, +61/-67]
  d486b5741d xsk: fix OOB map writes when deleting elements [1 file, +1/-1]
  14258211d6 regmap: detach regmap from dev on regmap_exit [1 file, +12/-0]
  d562b457e1 mmc: core: Further prevent card detect during shutdown [2 files, +5/-0]
  9bfeeeff2c stackdepot: fix stack_depot_save_flags() in NMI context [2 files, +12/-4]
  a71ddd5b87 sched/numa: fix memory leak due to the overwritten vma->numab_state [1 file, +9/-3]
  835ca042df kasan: make report_lock a raw spinlock [1 file, +3/-3]
  69d319450d mm/gup: handle NULL pages in unpin_user_pages() [1 file, +10/-1]
  1dde3fde62 mm: open-code PageTail in folio_flags() and const_folio_flags() [1 file, +2/-2]
  bd4d2333a3 mm: open-code page_folio() in dump_page() [1 file, +5/-2]
  536ffb4014 mm: fix vrealloc()'s KASAN poisoning logic [1 file, +2/-1]
  fe1a34e92a mm: respect mmap hint address when aligning for THP [1 file, +1/-0]
  5c63e24b1b scsi: ufs: pltfrm: Drop PM runtime reference count after ufshcd_remove() [6 files, +2/-5]
  2cec2d916a memblock: allow zero threshold in validate_numa_converage() [1 file, +2/-2]
  d222934627 epoll: annotate racy check [2 files, +5/-3]
  493326c4f1 block: RCU protect disk->conv_zones_bitmap [2 files, +32/-13]
  b6ce2dbe98 ext4: partial zero eof block on unaligned inode size extension [2 files, +42/-16]
  ff599ad2d2 cleanup: Adjust scoped_guard() macros to avoid potential warning [1 file, +42/-10]
  3946e07552 gpio: free irqs that are still requested when the chip is being removed [1 file, +41/-0]
  ea74e9675b HID: add per device quirk to force bind to hid-generic [3 files, +8/-2]
  17db6ed5a3 media: uvcvideo: RealSense D421 Depth module metadata [1 file, +9/-0]
  0c20fadfd0 media: uvcvideo: Add a quirk for the Kaiweets KTI-W02 infrared camera [1 file, +11/-0]
  3cc5228d5b media: uvcvideo: Force UVC version to 1.0a for 0408:4033 [1 file, +11/-0]
  4150f22342 drm: panel-orientation-quirks: Add quirk for AYA NEO 2 model [1 file, +6/-0]
  5d7f35ed5f drm: panel-orientation-quirks: Add quirk for AYA NEO Founder edition [1 file, +6/-0]
  187d5ff497 drm: panel-orientation-quirks: Add quirk for AYA NEO GEEK [1 file, +6/-0]
  fd09880b16 af_packet: avoid erroring out after sock_init_data() in packet_create() [1 file, +6/-6]
  61686abc2f Bluetooth: L2CAP: do not leave dangling sk pointer on error in l2cap_sock_create() [1 file, +1/-0]
  32df687e12 Bluetooth: RFCOMM: avoid leaving dangling sk pointer in rfcomm_sock_alloc() [1 file, +5/-5]
  8df832e6b9 net: af_can: do not leave a dangling sk pointer in can_create() [1 file, +1/-0]
  03caa9bfb9 net: ieee802154: do not leave a dangling sk pointer in ieee802154_create() [1 file, +7/-5]
  691d6d816f net: inet: do not leave a dangling sk pointer in inet_create() [1 file, +10/-12]
  f44fceb71d net: inet6: do not leave a dangling sk pointer in inet6_create() [1 file, +10/-12]
  987aa730ba bpf: Prevent tailcall infinite loop caused by freplace [5 files, +81/-17]
  051f49d517 net/tcp: Add missing lockdep annotations for TCP-AO hlist traversals [4 files, +29/-23]
  920159e1bf ALSA: usb-audio: Make mic volume workarounds globally applicable [3 files, +45/-48]
  a50b4aa300 bpf: Call free_htab_elem() after htab_unlock_bucket() [1 file, +39/-17]
  da561d5fb6 Bluetooth: hci_conn: Reduce hci_conn_drop() calls in two functions [1 file, +3/-10]
  c55a4c5a04 Bluetooth: hci_conn: Use disable_delayed_work_sync [1 file, +3/-3]
  93a6160dc1 Bluetooth: hci_core: Fix not checking skb length on hci_acldata_packet [1 file, +9/-4]
  b04b4fb91d Bluetooth: Add new quirks for ATS2851 [2 files, +20/-4]
  359fc41e3c Bluetooth: Support new quirks for ATS2851 [2 files, +15/-1]
  166cf43070 net/neighbor: clear error in case strict check is not set [1 file, +1/-0]
  f63a1caae9 tracing/ftrace: disable preemption in syscall probe [2 files, +44/-4]
  d1133dd57e tracing: Use atomic64_inc_return() in trace_clock_counter() [1 file, +1/-1]
  09c083fbea ring-buffer: Limit time with disabled interrupts in rb_check_pages() [1 file, +72/-26]
  c11e2ec9a7 pinmux: Use sequential access to access desc->pinmux data [3 files, +100/-77]
  b865d4e569 scsi: ufs: core: Make DMA mask configuration more flexible [3 files, +13/-9]
  2fcb921c27 bpf: put bpf_link's program when link is safe to be deallocated [1 file, +17/-5]
  bb4a6236a4 leds: class: Protect brightness_show() with led_cdev->led_access mutex [2 files, +12/-4]
  7214d3a64e tracing: Fix function name for trampoline [3 files, +36/-8]
  9e28513fd2 f2fs: fix f2fs_bug_on when uninstalling filesystem call f2fs_evict_inode. [1 file, +3/-1]
  b51aa6a07e PCI: qcom: Add support for IPQ9574 [1 file, +1/-0]
  617bd1e6c3 PCI: Add ACS quirk for Wangxun FF5xxx NICs [1 file, +9/-6]
  1f51ae217d i3c: Use i3cdev->desc->info instead of calling i3c_device_get_info() to avoid deadlock [1 file, +2/-1]
  6d41a2d5c1 f2fs: print message if fscorrupted was found in f2fs_new_node_page() [1 file, +6/-1]
  924f7dd1e8 f2fs: fix to shrink read extent node in batches [1 file, +41/-28]
  1648c7000f serial: 8250_dw: Add Sophgo SG2044 quirk [1 file, +3/-2]
  950210c9c7 Revert "nvme: make keep-alive synchronous operation" [1 file, +10/-7]
  d5b2ddf1f9 io_uring/tctx: work around xa_store() allocation error issue [1 file, +12/-1]
  cd188519d2 scsi: ufs: pltfrm: Dellocate HBA during ufshcd_pltfrm_remove() [1 file, +1/-0]
  a39ad4f507 sched/core: Remove the unnecessary need_resched() check in nohz_csd_func() [1 file, +1/-1]
  f9e144a544 sched/fair: Check idle_cpu() before need_resched() to detect ilb CPU turning busy [1 file, +1/-1]
  b4ec68868c sched/core: Prevent wakeup of ksoftirqd during idle load balance [1 file, +1/-1]
  364dc8070b tracing/eprobe: Fix to release eprobe when failed to add dyn_event [1 file, +5/-0]
  1a678f6829 clocksource: Make negative motion detection more robust [4 files, +20/-7]
  6aeef0214d softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel [1 file, +11/-4]

Changes in 6.12.5
	iTCO_wdt: mask NMI_NOW bit for update_no_reboot_bit() call
	watchdog: xilinx_wwdt: Calculate max_hw_heartbeat_ms using clock frequency
	watchdog: apple: Actually flush writes after requesting watchdog restart
	watchdog: mediatek: Make sure system reset gets asserted in mtk_wdt_restart()
	can: gs_usb: add usb endpoint address detection at driver probe step
	can: c_can: c_can_handle_bus_err(): update statistics if skb allocation fails
	can: sun4i_can: sun4i_can_err(): call can_change_state() even if cf is NULL
	can: hi311x: hi3110_can_ist(): fix potential use-after-free
	can: m_can: m_can_handle_lec_err(): fix {rx,tx}_errors statistics
	can: ifi_canfd: ifi_canfd_handle_lec_err(): fix {rx,tx}_errors statistics
	can: hi311x: hi3110_can_ist(): fix {rx,tx}_errors statistics
	can: sja1000: sja1000_err(): fix {rx,tx}_errors statistics
	can: sun4i_can: sun4i_can_err(): fix {rx,tx}_errors statistics
	can: ems_usb: ems_usb_rx_err(): fix {rx,tx}_errors statistics
	can: f81604: f81604_handle_can_bus_errors(): fix {rx,tx}_errors statistics
	ipvs: fix UB due to uninitialized stack access in ip_vs_protocol_init()
	netfilter: x_tables: fix LED ID check in led_tg_check()
	netfilter: nft_socket: remove WARN_ON_ONCE on maximum cgroup level
	selftests: hid: fix typo and exit code
	net: enetc: Do not configure preemptible TCs if SIs do not support
	ptp: Add error handling for adjfine callback in ptp_clock_adjtime
	net/sched: tbf: correct backlog statistic for GSO packets
	net: hsr: avoid potential out-of-bound access in fill_frame_info()
	bnxt_en: ethtool: Supply ntuple rss context action
	net: Fix icmp host relookup triggering ip_rt_bug
	ipv6: avoid possible NULL deref in modify_prefix_route()
	can: j1939: j1939_session_new(): fix skb reference counting
	platform/x86: asus-wmi: Ignore return value when writing thermal policy
	net: phy: microchip: Reset LAN88xx PHY to ensure clean link state on LAN7800/7850
	net/ipv6: release expired exception dst cached in socket
	dccp: Fix memory leak in dccp_feat_change_recv
	tipc: Fix use-after-free of kernel socket in cleanup_bearer().
	net/smc: initialize close_work early to avoid warning
	net/smc: fix LGR and link use-after-free issue
	net/qed: allow old cards not supporting "num_images" to work
	net: hsr: must allocate more bytes for RedBox support
	ice: fix PHY Clock Recovery availability check
	ice: fix PHY timestamp extraction for ETH56G
	ice: Fix VLAN pruning in switchdev mode
	idpf: set completion tag for "empty" bufs associated with a packet
	ixgbevf: stop attempting IPSEC offload on Mailbox API 1.5
	ixgbe: downgrade logging of unsupported VF API version to debug
	ixgbe: Correct BASE-BX10 compliance code
	igb: Fix potential invalid memory access in igb_init_module()
	netfilter: nft_inner: incorrect percpu area handling under softirq
	Revert "udp: avoid calling sock_def_readable() if possible"
	net: sched: fix erspan_opt settings in cls_flower
	netfilter: ipset: Hold module reference while requesting a module
	netfilter: nft_set_hash: skip duplicated elements pending gc run
	ethtool: Fix wrong mod state in case of verbose and no_mask bitset
	mlxsw: spectrum_acl_flex_keys: Constify struct mlxsw_afk_element_inst
	mlxsw: spectrum_acl_flex_keys: Use correct key block on Spectrum-4
	geneve: do not assume mac header is set in geneve_xmit_skb()
	net/mlx5: HWS: Fix memory leak in mlx5hws_definer_calc_layout
	net/mlx5: HWS: Properly set bwc queue locks lock classes
	net/mlx5e: SD, Use correct mdev to build channel param
	net/mlx5e: Remove workaround to avoid syndrome for internal port
	vsock/test: fix failures due to wrong SO_RCVLOWAT parameter
	vsock/test: fix parameter types in SO_VM_SOCKETS_* calls
	net: avoid potential UAF in default_operstate()
	gpio: grgpio: use a helper variable to store the address of ofdev->dev
	gpio: grgpio: Add NULL check in grgpio_probe
	mmc: mtk-sd: use devm_mmc_alloc_host
	mmc: mtk-sd: Fix error handle of probe function
	mmc: mtk-sd: fix devm_clk_get_optional usage
	mmc: mtk-sd: Fix MMC_CAP2_CRYPTO flag setting
	mmc: sd: SDUC Support Recognition
	mmc: core: Adjust ACMD22 to SDUC
	mmc: core: Use GFP_NOIO in ACMD22
	zram: do not mark idle slots that cannot be idle
	zram: clear IDLE flag in mark_idle()
	ntp: Remove invalid cast in time offset math
	f2fs: clean up w/ F2FS_{BLK_TO_BYTES,BTYES_TO_BLK}
	f2fs: fix to adjust appropriate length for fiemap
	f2fs: fix to requery extent which cross boundary of inquiry
	i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_STATUS_BITS
	i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED
	i3c: master: Fix dynamic address leak when 'assigned-address' is present
	drm/amd/display: calculate final viewport before TAP optimization
	drm/amd/display: Ignore scalar validation failure if pipe is phantom
	scsi: ufs: core: Always initialize the UIC done completion
	scsi: ufs: core: Add ufshcd_send_bsg_uic_cmd() for UFS BSG
	bpf, vsock: Fix poll() missing a queue
	bpf, vsock: Invoke proto::close on close()
	xsk: always clear DMA mapping information when unmapping the pool
	bpftool: fix potential NULL pointer dereferencing in prog_dump()
	drm/sti: Add __iomem for mixer_dbg_mxn's parameter
	tcp_bpf: Fix the sk_mem_uncharge logic in tcp_bpf_sendmsg
	ALSA: seq: ump: Fix seq port updates per FB info notify
	ALSA: usb-audio: Notify xrun for low-latency mode
	tools: Override makefile ARCH variable if defined, but empty
	spi: mpc52xx: Add cancel_work_sync before module remove
	ASoC: SOF: ipc3-topology: Convert the topology pin index to ALH dai index
	ASoC: SOF: ipc3-topology: fix resource leaks in sof_ipc3_widget_setup_comp_dai()
	pmdomain: core: Add missing put_device()
	pmdomain: core: Fix error path in pm_genpd_init() when ida alloc fails
	nvme: don't apply NVME_QUIRK_DEALLOCATE_ZEROES when DSM is not supported
	x86/pkeys: Change caller of update_pkru_in_sigframe()
	x86/pkeys: Ensure updated PKRU value is XRSTOR'd
	bpf: Ensure reg is PTR_TO_STACK in process_iter_arg
	irqchip/stm32mp-exti: CONFIG_STM32MP_EXTI should not default to y when compile-testing
	drivers/virt: pkvm: Don't fail ioremap() call if MMIO_GUARD fails
	bpf: Don't mark STACK_INVALID as STACK_MISC in mark_stack_slot_misc
	bpf: Fix narrow scalar spill onto 64-bit spilled scalar slots
	nvme-fabrics: handle zero MAXCMD without closing the connection
	nvme-tcp: fix the memleak while create new ctrl failed
	nvme-rdma: unquiesce admin_q before destroy it
	scsi: sg: Fix slab-use-after-free read in sg_release()
	scsi: scsi_debug: Fix hrtimer support for ndelay
	ASoC: mediatek: mt8188-mt6359: Remove hardcoded dmic codec
	drm/v3d: Enable Performance Counters before clearing them
	ocfs2: free inode when ocfs2_get_init_inode() fails
	scatterlist: fix incorrect func name in kernel-doc
	iio: magnetometer: yas530: use signed integer type for clamp limits
	smb: client: fix potential race in cifs_put_tcon()
	bpf: Handle BPF_EXIST and BPF_NOEXIST for LPM trie
	bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem
	bpf: Handle in-place update for full LPM trie correctly
	bpf: Fix exact match conditions in trie_get_next_key()
	x86/CPU/AMD: WARN when setting EFER.AUTOIBRS if and only if the WRMSR fails
	rust: allow `clippy::needless_lifetimes`
	HID: i2c-hid: Revert to using power commands to wake on resume
	HID: wacom: fix when get product name maybe null pointer
	LoongArch: Add architecture specific huge_pte_clear()
	LoongArch: KVM: Protect kvm_check_requests() with SRCU
	ksmbd: fix Out-of-Bounds Read in ksmbd_vfs_stream_read
	ksmbd: fix Out-of-Bounds Write in ksmbd_vfs_stream_write
	watchdog: rti: of: honor timeout-sec property
	can: dev: can_set_termination(): allow sleeping GPIOs
	can: mcp251xfd: mcp251xfd_get_tef_len(): work around erratum DS80000789E 6.
	tracing: Fix cmp_entries_dup() to respect sort() comparison rules
	net :mana :Request a V2 response version for MANA_QUERY_GF_STAT
	iommufd: Fix out_fput in iommufd_fault_alloc()
	arm64: mm: Fix zone_dma_limit calculation
	arm64: Ensure bits ASID[15:8] are masked out when the kernel uses 8-bit ASIDs
	arm64: ptrace: fix partial SETREGSET for NT_ARM_TAGGED_ADDR_CTRL
	arm64: ptrace: fix partial SETREGSET for NT_ARM_FPMR
	arm64: ptrace: fix partial SETREGSET for NT_ARM_POE
	ALSA: usb-audio: Fix a DMA to stack memory bug
	ALSA: usb-audio: Add extra PID for RME Digiface USB
	ALSA: hda/realtek: fix micmute LEDs don't work on HP Laptops
	ALSA: usb-audio: add mixer mapping for Corsair HS80
	ALSA: hda/realtek: Enable mute and micmute LED on HP ProBook 430 G8
	ALSA: hda/realtek: Add support for Samsung Galaxy Book3 360 (NP730QFG)
	scsi: qla2xxx: Fix abort in bsg timeout
	scsi: qla2xxx: Fix NVMe and NPIV connect issue
	scsi: qla2xxx: Supported speed displayed incorrectly for VPorts
	scsi: qla2xxx: Fix use after free on unload
	scsi: qla2xxx: Remove check req_sg_cnt should be equal to rsp_sg_cnt
	scsi: ufs: core: sysfs: Prevent div by zero
	scsi: ufs: core: Cancel RTC work during ufshcd_remove()
	scsi: ufs: qcom: Only free platform MSIs when ESI is enabled
	scsi: ufs: pltfrm: Disable runtime PM during removal of glue drivers
	scsi: ufs: core: Add missing post notify for power mode change
	nilfs2: fix potential out-of-bounds memory access in nilfs_find_entry()
	fs/smb/client: avoid querying SMB2_OP_QUERY_WSL_EA for SMB3 POSIX
	fs/smb/client: Implement new SMB3 POSIX type
	fs/smb/client: cifs_prime_dcache() for SMB3 POSIX reparse points
	smb3.1.1: fix posix mounts to older servers
	io_uring: Change res2 parameter type in io_uring_cmd_done
	bcache: revert replacing IS_ERR_OR_NULL with IS_ERR again
	Revert "readahead: properly shorten readahead when falling back to do_page_cache_ra()"
	pmdomain: imx: gpcv2: Adjust delay after power up handshake
	selftests/damon: add _damon_sysfs.py to TEST_FILES
	selftest: hugetlb_dio: fix test naming
	cacheinfo: Allocate memory during CPU hotplug if not done from the primary CPU
	x86/cacheinfo: Delete global num_cache_leaves
	drm/amdkfd: hard-code cacheline for gc943,gc944
	drm/dp_mst: Fix MST sideband message body length check
	drm/amdkfd: add MEC version that supports no PCIe atomics for GFX12
	drm/amd/pm: fix and simplify workload handling
	drm/dp_mst: Verify request type in the corresponding down message reply
	drm/dp_mst: Fix resetting msg rx state after topology removal
	drm/amd/display: Correct prefetch calculation
	drm/amd/display: Limit VTotal range to max hw cap minus fp
	drm/amd/display: Add a left edge pixel if in YCbCr422 or YCbCr420 and odm
	drm/amdgpu/hdp6.0: do a posting read when flushing HDP
	drm/amdgpu/hdp4.0: do a posting read when flushing HDP
	drm/amdgpu/hdp5.0: do a posting read when flushing HDP
	drm/amdgpu/hdp7.0: do a posting read when flushing HDP
	drm/amdgpu/hdp5.2: do a posting read when flushing HDP
	modpost: Add .irqentry.text to OTHER_SECTIONS
	x86/kexec: Restore GDT on return from ::preserve_context kexec
	bpf: fix OOB devmap writes when deleting elements
	dma-buf: fix dma_fence_array_signaled v4
	dma-fence: Fix reference leak on fence merge failure path
	dma-fence: Use kernel's sort for merging fences
	xsk: fix OOB map writes when deleting elements
	regmap: detach regmap from dev on regmap_exit
	arch_numa: Restore nid checks before registering a memblock with a node
	mmc: sdhci-pci: Add DMI quirk for missing CD GPIO on Vexia Edu Atla 10 tablet
	mmc: core: Further prevent card detect during shutdown
	x86/cpu: Add Lunar Lake to list of CPUs with a broken MONITOR implementation
	ocfs2: update seq_file index in ocfs2_dlm_seq_next
	stackdepot: fix stack_depot_save_flags() in NMI context
	lib: stackinit: hide never-taken branch from compiler
	sched/numa: fix memory leak due to the overwritten vma->numab_state
	kasan: make report_lock a raw spinlock
	mm/gup: handle NULL pages in unpin_user_pages()
	mm/mempolicy: fix migrate_to_node() assuming there is at least one VMA in a MM
	x86/cpu/topology: Remove limit of CPUs due to disabled IO/APIC
	x86/mm: Add _PAGE_NOPTISHADOW bit to avoid updating userspace page tables
	mm/damon: fix order of arguments in damos_before_apply tracepoint
	mm: memcg: declare do_memsw_account inline
	mm: open-code PageTail in folio_flags() and const_folio_flags()
	mm: open-code page_folio() in dump_page()
	mm: fix vrealloc()'s KASAN poisoning logic
	mm: respect mmap hint address when aligning for THP
	scsi: ufs: pltfrm: Drop PM runtime reference count after ufshcd_remove()
	memblock: allow zero threshold in validate_numa_converage()
	rust: enable arbitrary_self_types and remove `Receiver`
	s390/pci: Sort PCI functions prior to creating virtual busses
	s390/pci: Use topology ID for multi-function devices
	s390/pci: Ignore RID for isolated VFs
	epoll: annotate racy check
	kselftest/arm64: Log fp-stress child startup errors to stdout
	s390/cpum_sf: Handle CPU hotplug remove during sampling
	block: RCU protect disk->conv_zones_bitmap
	btrfs: don't take dev_replace rwsem on task already holding it
	btrfs: avoid unnecessary device path update for the same device
	btrfs: canonicalize the device path before adding it
	btrfs: do not clear read-only when adding sprout device
	kselftest/arm64: Don't leak pipe fds in pac.exec_sign_all()
	ext4: partial zero eof block on unaligned inode size extension
	crypto: ecdsa - Avoid signed integer overflow on signature decoding
	kcsan: Turn report_filterlist_lock into a raw_spinlock
	hwmon: (nct6775) Add 665-ACE/600M-CL to ASUS WMI monitoring list
	ACPI: x86: Make UART skip quirks work on PCI UARTs without an UID
	ACPI: x86: Add adev NULL check to acpi_quirk_skip_serdev_enumeration()
	ACPI: video: force native for Apple MacbookPro11,2 and Air7,2
	perf/x86/amd: Warn only on new bits set
	cleanup: Adjust scoped_guard() macros to avoid potential warning
	iio: magnetometer: fix if () scoped_guard() formatting
	timekeeping: Always check for negative motion
	gpio: free irqs that are still requested when the chip is being removed
	spi: spi-fsl-lpspi: Adjust type of scldiv
	soc: qcom: llcc: Use designated initializers for LLC settings
	HID: add per device quirk to force bind to hid-generic
	firmware: qcom: scm: Allow QSEECOM on Lenovo Yoga Slim 7x
	soc: qcom: pd-mapper: Add QCM6490 PD maps
	media: uvcvideo: RealSense D421 Depth module metadata
	media: uvcvideo: Add a quirk for the Kaiweets KTI-W02 infrared camera
	media: uvcvideo: Force UVC version to 1.0a for 0408:4033
	media: cx231xx: Add support for Dexatek USB Video Grabber 1d19:6108
	mmc: core: Add SD card quirk for broken poweroff notification
	mmc: sdhci-esdhc-imx: enable quirks SDHCI_QUIRK_NO_LED
	firmware: qcom: scm: Allow QSEECOM on Dell XPS 13 9345
	soc: imx8m: Probe the SoC driver as platform driver
	regmap: maple: Provide lockdep (sub)class for maple tree's internal lock
	selftests/resctrl: Protect against array overflow when reading strings
	sched_ext: add a missing rcu_read_lock/unlock pair at scx_select_cpu_dfl()
	HID: magicmouse: Apple Magic Trackpad 2 USB-C driver support
	drm/xe/pciids: separate RPL-U and RPL-P PCI IDs
	drm/xe/pciids: separate ARL and MTL PCI IDs
	drm/vc4: hdmi: Avoid log spam for audio start failure
	drm/vc4: hvs: Set AXI panic modes for the HVS
	drm/xe/pciids: Add PVC's PCI device ID macros
	wifi: rtw88: use ieee80211_purge_tx_queue() to purge TX skb
	drm/xe/pciid: Add new PCI id for ARL
	drm: panel-orientation-quirks: Add quirk for AYA NEO 2 model
	drm: panel-orientation-quirks: Add quirk for AYA NEO Founder edition
	drm: panel-orientation-quirks: Add quirk for AYA NEO GEEK
	drm/bridge: it6505: Enable module autoloading
	drm/mcde: Enable module autoloading
	wifi: rtw89: check return value of ieee80211_probereq_get() for RNR
	drm/amd/display: Fix out-of-bounds access in 'dcn21_link_encoder_create'
	drm/radeon/r600_cs: Fix possible int overflow in r600_packet3_check()
	ASoC: Intel: sof_rt5682: Add HDMI-In capture with rt5682 support for MTL.
	dlm: fix possible lkb_resource null dereference
	drm/amd/display: skip disable CRTC in seemless bootup case
	drm/amd/display: Fix garbage or black screen when resetting otg
	drm/amd/display: disable SG displays on cyan skillfish
	drm/xe/ptl: L3bank mask is not available on the media GT
	drm/xe/xe3: Add initial set of workarounds
	drm/display: Fix building with GCC 15
	ALSA: hda: Use own quirk lookup helper
	ALSA: hda/conexant: Use the new codec SSID matching
	ALSA: hda/realtek: Use codec SSID matching for Lenovo devices
	r8169: don't apply UDP padding quirk on RTL8126A
	samples/bpf: Fix a resource leak
	wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()
	accel/qaic: Add AIC080 support
	drm/amd/display: Full exit out of IPS2 when all allow signals have been cleared
	net: fec_mpc52xx_phy: Use %pa to format resource_size_t
	net: ethernet: fs_enet: Use %pa to format resource_size_t
	net/sched: cbs: Fix integer overflow in cbs_set_port_rate()
	af_packet: avoid erroring out after sock_init_data() in packet_create()
	Bluetooth: L2CAP: do not leave dangling sk pointer on error in l2cap_sock_create()
	Bluetooth: RFCOMM: avoid leaving dangling sk pointer in rfcomm_sock_alloc()
	net: af_can: do not leave a dangling sk pointer in can_create()
	net: ieee802154: do not leave a dangling sk pointer in ieee802154_create()
	net: inet: do not leave a dangling sk pointer in inet_create()
	net: inet6: do not leave a dangling sk pointer in inet6_create()
	wifi: ath10k: avoid NULL pointer error during sdio remove
	wifi: ath5k: add PCI ID for SX76X
	wifi: ath5k: add PCI ID for Arcadyan devices
	fanotify: allow reporting errors on failure to open fd
	bpf: Prevent tailcall infinite loop caused by freplace
	ASoC: sdw_utils: Add support for exclusion DAI quirks
	ASoC: sdw_utils: Add a quirk to allow the cs42l43 mic DAI to be ignored
	ASoC: Intel: sof_sdw: Add quirk for cs42l43 system using host DMICs
	ASoC: Intel: sof_sdw: Add quirks for some new Lenovo laptops
	drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout
	drm/panel: simple: Add Microchip AC69T88A LVDS Display panel
	net: sfp: change quirks for Alcatel Lucent G-010S-P
	net: stmmac: Programming sequence for VLAN packets with split header
	drm/sched: memset() 'job' in drm_sched_job_init()
	drm/amd/display: Adding array index check to prevent memory corruption
	drm/amdgpu/gfx9: Add cleaner shader for GFX9.4.2
	drm/amdgpu: clear RB_OVERFLOW bit when enabling interrupts for vega20_ih
	drm/amdgpu: Dereference the ATCS ACPI buffer
	netlink: specs: Add missing bitset attrs to ethtool spec
	drm/amdgpu: refine error handling in amdgpu_ttm_tt_pin_userptr
	ASoC: sdw_utils: Add quirk to exclude amplifier function
	ASoC: Intel: soc-acpi-intel-arl-match: Add rt722 and rt1320 support
	drm/amd/display: Fix underflow when playing 8K video in full screen mode
	mptcp: annotate data-races around subflow->fully_established
	dma-debug: fix a possible deadlock on radix_lock
	jfs: array-index-out-of-bounds fix in dtReadFirst
	jfs: fix shift-out-of-bounds in dbSplit
	jfs: fix array-index-out-of-bounds in jfs_readdir
	jfs: add a check to prevent array-index-out-of-bounds in dbAdjTree
	fsl/fman: Validate cell-index value obtained from Device Tree
	net/tcp: Add missing lockdep annotations for TCP-AO hlist traversals
	drm/panic: Add ABGR2101010 support
	drm/amd/display: Remove hw w/a toggle if on DP2/HPO
	drm/amd/display: parse umc_info or vram_info based on ASIC
	drm/amd/display: Prune Invalid Modes For HDMI Output
	drm/amdgpu: skip amdgpu_device_cache_pci_state under sriov
	virtio-net: fix overflow inside virtnet_rq_alloc
	ALSA: usb-audio: Make mic volume workarounds globally applicable
	drm/amdgpu: set the right AMDGPU sg segment limitation
	wifi: ipw2x00: libipw_rx_any(): fix bad alignment
	wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw()
	bpf: Call free_htab_elem() after htab_unlock_bucket()
	mptcp: fix possible integer overflow in mptcp_reset_tout_timer
	dsa: qca8k: Use nested lock to avoid splat
	i2c: i801: Add support for Intel Panther Lake
	Bluetooth: hci_conn: Reduce hci_conn_drop() calls in two functions
	Bluetooth: btusb: Add RTL8852BE device 0489:e123 to device tables
	Bluetooth: btusb: Add USB HW IDs for MT7920/MT7925
	Bluetooth: hci_conn: Use disable_delayed_work_sync
	Bluetooth: hci_core: Fix not checking skb length on hci_acldata_packet
	Bluetooth: Add new quirks for ATS2851
	Bluetooth: Support new quirks for ATS2851
	Bluetooth: Set quirks for ATS2851
	Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925
	Bluetooth: btusb: Add new VID/PID 0489/e124 for MT7925
	Bluetooth: btusb: Add 3 HWIDs for MT7925
	ASoC: hdmi-codec: reorder channel allocation list
	rocker: fix link status detection in rocker_carrier_init()
	net/neighbor: clear error in case strict check is not set
	netpoll: Use rcu_access_pointer() in __netpoll_setup
	pinctrl: freescale: fix COMPILE_TEST error with PINCTRL_IMX_SCU
	rtla: Fix consistency in getopt_long for timerlat_hist
	tracing/ftrace: disable preemption in syscall probe
	tracing: Use atomic64_inc_return() in trace_clock_counter()
	tools/rtla: fix collision with glibc sched_attr/sched_set_attr
	rtla/timerlat: Make timerlat_top_cpu->*_count unsigned long long
	rtla/timerlat: Make timerlat_hist_cpu->*_count unsigned long long
	scsi: hisi_sas: Add cond_resched() for no forced preemption model
	scsi: hisi_sas: Create all dump files during debugfs initialization
	ring-buffer: Limit time with disabled interrupts in rb_check_pages()
	pinmux: Use sequential access to access desc->pinmux data
	scsi: ufs: core: Make DMA mask configuration more flexible
	iommu/amd: Fix corruption when mapping large pages from 0
	bpf: put bpf_link's program when link is safe to be deallocated
	scsi: lpfc: Call lpfc_sli4_queue_unset() in restart and rmmod paths
	scsi: lpfc: Check SLI_ACTIVE flag in FDMI cmpl before submitting follow up FDMI
	scsi: lpfc: Prevent NDLP reference count underflow in dev_loss_tmo callback
	clk: qcom: rcg2: add clk_rcg2_shared_floor_ops
	clk: qcom: rpmh: add support for SAR2130P
	clk: qcom: tcsrcc-sm8550: add SAR2130P support
	clk: qcom: dispcc-sm8550: enable support for SAR2130P
	clk: qcom: clk-alpha-pll: Add NSS HUAYRA ALPHA PLL support for ipq9574
	leds: class: Protect brightness_show() with led_cdev->led_access mutex
	scsi: st: Don't modify unknown block number in MTIOCGET
	scsi: st: Add MTIOCGET and MTLOAD to ioctls allowed after device reset
	pinctrl: qcom-pmic-gpio: add support for PM8937
	pinctrl: qcom: spmi-mpp: Add PM8937 compatible
	thermal/drivers/qcom/tsens-v1: Add support for MSM8937 tsens
	nvdimm: rectify the illogical code within nd_dax_probe()
	smb: client: memcpy() with surrounding object base address
	tracing: Fix function name for trampoline
	tools/rtla: Enhance argument parsing in timerlat_load.py
	verification/dot2: Improve dot parser robustness
	mailbox: pcc: Check before sending MCTP PCC response ACK
	f2fs: fix f2fs_bug_on when uninstalling filesystem call f2fs_evict_inode.
	KMSAN: uninit-value in inode_go_dump (5)
	i3c: mipi-i3c-hci: Mask ring interrupts before ring stop request
	PCI: qcom: Add support for IPQ9574
	PCI: vmd: Add DID 8086:B06F and 8086:B60B for Intel client SKUs
	PCI: vmd: Set devices to D0 before enabling PM L1 Substates
	PCI: Detect and trust built-in Thunderbolt chips
	PCI: starfive: Enable controller runtime PM before probing host bridge
	PCI: Add 'reset_subordinate' to reset hierarchy below bridge
	PCI: Add ACS quirk for Wangxun FF5xxx NICs
	remoteproc: qcom: pas: enable SAR2130P audio DSP support
	i3c: Use i3cdev->desc->info instead of calling i3c_device_get_info() to avoid deadlock
	f2fs: print message if fscorrupted was found in f2fs_new_node_page()
	f2fs: fix to shrink read extent node in batches
	f2fs: add a sysfs node to limit max read extent count per-inode
	ACPI: x86: Add skip i2c clients quirk for Acer Iconia One 8 A1-840
	ACPI: x86: Clean up Asus entries in acpi_quirk_skip_dmi_ids[]
	LoongArch: Fix sleeping in atomic context for PREEMPT_RT
	fs/ntfs3: Fix warning in ni_fiemap
	fs/ntfs3: Fix case when unmarked clusters intersect with zone
	regulator: qcom-rpmh: Update ranges for FTSMPS525
	usb: chipidea: add CI_HDRC_HAS_SHORT_PKT_LIMIT flag
	usb: chipidea: udc: limit usb request length to max 16KB
	usb: chipidea: udc: create bounce buffer for problem sglist entries if possible
	usb: chipidea: udc: handle USB Error Interrupt if IOC not set
	usb: typec: ucsi: Do not call ACPI _DSM method for UCSI read operations
	iio: adc: ad7192: properly check spi_get_device_match_data()
	iio: light: ltr501: Add LTER0303 to the supported devices
	usb: typec: ucsi: glink: be more precise on orientation-aware ports
	ASoC: amd: yc: fix internal mic on Redmi G 2022
	drm/amdgpu/vcn: reset fw_shared when VCPU buffers corrupted on vcn v4.0.3
	MIPS: Loongson64: DTS: Really fix PCIe port nodes for ls7a
	ASoC: amd: yc: Add quirk for microphone on Lenovo Thinkpad T14s Gen 6 21M1CTO1WW
	powerpc/prom_init: Fixup missing powermac #size-cells
	misc: eeprom: eeprom_93cx6: Add quirk for extra read clock cycle
	rtc: cmos: avoid taking rtc_lock for extended period of time
	serial: 8250_dw: Add Sophgo SG2044 quirk
	Revert "nvme: make keep-alive synchronous operation"
	irqchip/gicv3-its: Add workaround for hip09 ITS erratum 162100801
	smb: client: don't try following DFS links in cifs_tree_connect()
	setlocalversion: work around "git describe" performance
	io_uring/tctx: work around xa_store() allocation error issue
	scsi: ufs: pltfrm: Dellocate HBA during ufshcd_pltfrm_remove()
	drm/xe/devcoredump: Use drm_puts and already cached local variables
	drm/xe/devcoredump: Improve section headings and add tile info
	drm/xe/devcoredump: Add ASCII85 dump helper function
	drm/xe/guc: Copy GuC log prior to dumping
	drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
	drm/xe/devcoredump: Update handling of xe_force_wake_get return
	drm/amd/display: Add option to retrieve detile buffer size
	sched: fix warning in sched_setaffinity
	sched/core: Remove the unnecessary need_resched() check in nohz_csd_func()
	sched/fair: Check idle_cpu() before need_resched() to detect ilb CPU turning busy
	sched/core: Prevent wakeup of ksoftirqd during idle load balance
	sched/deadline: Fix warning in migrate_enable for boosted tasks
	btrfs: drop unused parameter options from open_ctree()
	btrfs: drop unused parameter data from btrfs_fill_super()
	btrfs: fix mount failure due to remount races
	btrfs: fix missing snapshot drew unlock when root is dead during swap activation
	clk: en7523: Initialize num before accessing hws in en7523_register_clocks()
	tracing/eprobe: Fix to release eprobe when failed to add dyn_event
	x86: Fix build regression with CONFIG_KEXEC_JUMP enabled
	Revert "unicode: Don't special case ignorable code points"
	vfio/mlx5: Align the page tracking max message size with the device capability
	selftests/ftrace: adjust offset for kprobe syntax error test
	KVM: x86/mmu: Ensure that kvm_release_pfn_clean() takes exact pfn from kvm_faultin_pfn()
	jffs2: Prevent rtime decompress memory corruption
	jffs2: Fix rtime decompressor
	media: ipu6: use the IPU6 DMA mapping APIs to do mapping
	ocfs2: Revert "ocfs2: fix the la space leak when unmounting an ocfs2 volume"
	net/mlx5: unique names for per device caches
	ASoC: Intel: avs: Fix return status of avs_pcm_hw_constraints_init()
	drm/amdgpu: rework resume handling for display (v2)
	ALSA: hda: Fix build error without CONFIG_SND_DEBUG
	Revert "drm/amd/display: parse umc_info or vram_info based on ASIC"
	s390/pci: Fix leak of struct zpci_dev when zpci_add_device() fails
	ALSA: hda/realtek: Fix spelling mistake "Firelfy" -> "Firefly"
	timekeeping: Remove CONFIG_DEBUG_TIMEKEEPING
	clocksource: Make negative motion detection more robust
	softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel
	Linux 6.12.5

Change-Id: If1b834954ed2ee1a16886f9a9909c6ca62d93b6c
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-12-15 11:57:47 +00:00
Andrii Nakryiko 2fcb921c27 bpf: put bpf_link's program when link is safe to be deallocated
[ Upstream commit f44ec8733a8469143fde1984b5e6931b2e2f6f3f ]

In general, BPF link's underlying BPF program should be considered to be
reachable through attach hook -> link -> prog chain, and, pessimistically,
we have to assume that as long as link's memory is not safe to free,
attach hook's code might hold a pointer to BPF program and use it.

As such, it's not (generally) correct to put link's program early before
waiting for RCU GPs to go through. More eager bpf_prog_put() that we
currently do is mostly correct due to BPF program's release code doing
similar RCU GP waiting, but as will be shown in the following patches,
BPF program can be non-sleepable (and, thus, reliant on only "classic"
RCU GP), while BPF link's attach hook can have sleepable semantics and
needs to be protected by RCU Tasks Trace, and for such cases BPF link
has to go through RCU Tasks Trace + "classic" RCU GPs before being
deallocated. And so, if we put BPF program early, we might free BPF
program before we free BPF link, leading to use-after-free situation.

So, this patch defers bpf_prog_put() until we are ready to perform
bpf_link's deallocation. At worst, this delays BPF program freeing by
one extra RCU GP, but that seems completely acceptable. Alternatively,
we'd need more elaborate ways to determine BPF hook, BPF link, and BPF
program lifetimes, and how they relate to each other, which seems like
an unnecessary complication.

Note, for most BPF links we still will perform eager bpf_prog_put() and
link dealloc, so for those BPF links there are no observable changes
whatsoever. Only BPF links that use deferred dealloc might notice
slightly delayed freeing of BPF programs.

Also, to reduce code and logic duplication, extract program put + link
dealloc logic into bpf_link_dealloc() helper.

Link: https://lore.kernel.org/20241101181754.782341-1-andrii@kernel.org
Tested-by: Jordan Rife <jrife@google.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:04:00 +01:00
Hou Tao a50b4aa300 bpf: Call free_htab_elem() after htab_unlock_bucket()
[ Upstream commit b9e9ed90b10c82a4e9d4d70a2890f06bfcdd3b78 ]

For htab of maps, when the map is removed from the htab, it may hold the
last reference of the map. bpf_map_fd_put_ptr() will invoke
bpf_map_free_id() to free the id of the removed map element. However,
bpf_map_fd_put_ptr() is invoked while holding a bucket lock
(raw_spin_lock_t), and bpf_map_free_id() attempts to acquire map_idr_lock
(spinlock_t), triggering the following lockdep warning:

  =============================
  [ BUG: Invalid wait context ]
  6.11.0-rc4+ #49 Not tainted
  -----------------------------
  test_maps/4881 is trying to lock:
  ffffffff84884578 (map_idr_lock){+...}-{3:3}, at: bpf_map_free_id.part.0+0x21/0x70
  other info that might help us debug this:
  context-{5:5}
  2 locks held by test_maps/4881:
   #0: ffffffff846caf60 (rcu_read_lock){....}-{1:3}, at: bpf_fd_htab_map_update_elem+0xf9/0x270
   #1: ffff888149ced148 (&htab->lockdep_key#2){....}-{2:2}, at: htab_map_update_elem+0x178/0xa80
  stack backtrace:
  CPU: 0 UID: 0 PID: 4881 Comm: test_maps Not tainted 6.11.0-rc4+ #49
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), ...
  Call Trace:
   <TASK>
   dump_stack_lvl+0x6e/0xb0
   dump_stack+0x10/0x20
   __lock_acquire+0x73e/0x36c0
   lock_acquire+0x182/0x450
   _raw_spin_lock_irqsave+0x43/0x70
   bpf_map_free_id.part.0+0x21/0x70
   bpf_map_put+0xcf/0x110
   bpf_map_fd_put_ptr+0x9a/0xb0
   free_htab_elem+0x69/0xe0
   htab_map_update_elem+0x50f/0xa80
   bpf_fd_htab_map_update_elem+0x131/0x270
   htab_map_update_elem+0x50f/0xa80
   bpf_fd_htab_map_update_elem+0x131/0x270
   bpf_map_update_value+0x266/0x380
   __sys_bpf+0x21bb/0x36b0
   __x64_sys_bpf+0x45/0x60
   x64_sys_call+0x1b2a/0x20d0
   do_syscall_64+0x5d/0x100
   entry_SYSCALL_64_after_hwframe+0x76/0x7e

One way to fix the lockdep warning is using raw_spinlock_t for
map_idr_lock as well. However, bpf_map_alloc_id() invokes
idr_alloc_cyclic() after acquiring map_idr_lock, it will trigger a
similar lockdep warning because the slab's lock (s->cpu_slab->lock) is
still a spinlock.

Instead of changing map_idr_lock's type, fix the issue by invoking
htab_put_fd_value() after htab_unlock_bucket(). However, only deferring
the invocation of htab_put_fd_value() is not enough, because the old map
pointers in htab of maps can not be saved during batched deletion.
Therefore, also defer the invocation of free_htab_elem(), so these
to-be-freed elements could be linked together similar to lru map.

There are four callers for ->map_fd_put_ptr:

(1) alloc_htab_elem() (through htab_put_fd_value())
It invokes ->map_fd_put_ptr() under a raw_spinlock_t. The invocation of
htab_put_fd_value() can not simply move after htab_unlock_bucket(),
because the old element has already been stashed in htab->extra_elems.
It may be reused immediately after htab_unlock_bucket() and the
invocation of htab_put_fd_value() after htab_unlock_bucket() may release
the newly-added element incorrectly. Therefore, saving the map pointer
of the old element for htab of maps before unlocking the bucket and
releasing the map_ptr after unlock. Beside the map pointer in the old
element, should do the same thing for the special fields in the old
element as well.

(2) free_htab_elem() (through htab_put_fd_value())
Its caller includes __htab_map_lookup_and_delete_elem(),
htab_map_delete_elem() and __htab_map_lookup_and_delete_batch().

For htab_map_delete_elem(), simply invoke free_htab_elem() after
htab_unlock_bucket(). For __htab_map_lookup_and_delete_batch(), just
like lru map, linking the to-be-freed element into node_to_free list
and invoking free_htab_elem() for these element after unlock. It is safe
to reuse batch_flink as the link for node_to_free, because these
elements have been removed from the hash llist.

Because htab of maps doesn't support lookup_and_delete operation,
__htab_map_lookup_and_delete_elem() doesn't have the problem, so kept
it as is.

(3) fd_htab_map_free()
It invokes ->map_fd_put_ptr without raw_spinlock_t.

(4) bpf_fd_htab_map_update_elem()
It invokes ->map_fd_put_ptr without raw_spinlock_t.

After moving free_htab_elem() outside htab bucket lock scope, using
pcpu_freelist_push() instead of __pcpu_freelist_push() to disable
the irq before freeing elements, and protecting the invocations of
bpf_mem_cache_free() with migrate_{disable|enable} pair.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241106063542.357743-2-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:55 +01:00
Leon Hwang 987aa730ba bpf: Prevent tailcall infinite loop caused by freplace
[ Upstream commit d6083f040d5d8f8d748462c77e90547097df936e ]

There is a potential infinite loop issue that can occur when using a
combination of tail calls and freplace.

In an upcoming selftest, the attach target for entry_freplace of
tailcall_freplace.c is subprog_tc of tc_bpf2bpf.c, while the tail call in
entry_freplace leads to entry_tc. This results in an infinite loop:

entry_tc -> subprog_tc -> entry_freplace --tailcall-> entry_tc.

The problem arises because the tail_call_cnt in entry_freplace resets to
zero each time entry_freplace is executed, causing the tail call mechanism
to never terminate, eventually leading to a kernel panic.

To fix this issue, the solution is twofold:

1. Prevent updating a program extended by an freplace program to a
   prog_array map.
2. Prevent extending a program that is already part of a prog_array map
   with an freplace program.

This ensures that:

* If a program or its subprogram has been extended by an freplace program,
  it can no longer be updated to a prog_array map.
* If a program has been added to a prog_array map, neither it nor its
  subprograms can be extended by an freplace program.

Moreover, an extension program should not be tailcalled. As such, return
-EINVAL if the program has a type of BPF_PROG_TYPE_EXT when adding it to a
prog_array map.

Additionally, fix a minor code style issue by replacing eight spaces with a
tab for proper formatting.

Reviewed-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
Link: https://lore.kernel.org/r/20241015150207.70264-2-leon.hwang@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:49 +01:00
Maciej Fijalkowski 178e31df1f bpf: fix OOB devmap writes when deleting elements
commit ab244dd7cf4c291f82faacdc50b45cc0f55b674d upstream.

Jordy reported issue against XSKMAP which also applies to DEVMAP - the
index used for accessing map entry, due to being a signed integer,
causes the OOB writes. Fix is simple as changing the type from int to
u32, however, when compared to XSKMAP case, one more thing needs to be
addressed.

When map is released from system via dev_map_free(), we iterate through
all of the entries and an iterator variable is also an int, which
implies OOB accesses. Again, change it to be u32.

Example splat below:

[  160.724676] BUG: unable to handle page fault for address: ffffc8fc2c001000
[  160.731662] #PF: supervisor read access in kernel mode
[  160.736876] #PF: error_code(0x0000) - not-present page
[  160.742095] PGD 0 P4D 0
[  160.744678] Oops: Oops: 0000 [#1] PREEMPT SMP
[  160.749106] CPU: 1 UID: 0 PID: 520 Comm: kworker/u145:12 Not tainted 6.12.0-rc1+ #487
[  160.757050] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0008.031920191559 03/19/2019
[  160.767642] Workqueue: events_unbound bpf_map_free_deferred
[  160.773308] RIP: 0010:dev_map_free+0x77/0x170
[  160.777735] Code: 00 e8 fd 91 ed ff e8 b8 73 ed ff 41 83 7d 18 19 74 6e 41 8b 45 24 49 8b bd f8 00 00 00 31 db 85 c0 74 48 48 63 c3 48 8d 04 c7 <48> 8b 28 48 85 ed 74 30 48 8b 7d 18 48 85 ff 74 05 e8 b3 52 fa ff
[  160.796777] RSP: 0018:ffffc9000ee1fe38 EFLAGS: 00010202
[  160.802086] RAX: ffffc8fc2c001000 RBX: 0000000080000000 RCX: 0000000000000024
[  160.809331] RDX: 0000000000000000 RSI: 0000000000000024 RDI: ffffc9002c001000
[  160.816576] RBP: 0000000000000000 R08: 0000000000000023 R09: 0000000000000001
[  160.823823] R10: 0000000000000001 R11: 00000000000ee6b2 R12: dead000000000122
[  160.831066] R13: ffff88810c928e00 R14: ffff8881002df405 R15: 0000000000000000
[  160.838310] FS:  0000000000000000(0000) GS:ffff8897e0c40000(0000) knlGS:0000000000000000
[  160.846528] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  160.852357] CR2: ffffc8fc2c001000 CR3: 0000000005c32006 CR4: 00000000007726f0
[  160.859604] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  160.866847] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  160.874092] PKRU: 55555554
[  160.876847] Call Trace:
[  160.879338]  <TASK>
[  160.881477]  ? __die+0x20/0x60
[  160.884586]  ? page_fault_oops+0x15a/0x450
[  160.888746]  ? search_extable+0x22/0x30
[  160.892647]  ? search_bpf_extables+0x5f/0x80
[  160.896988]  ? exc_page_fault+0xa9/0x140
[  160.900973]  ? asm_exc_page_fault+0x22/0x30
[  160.905232]  ? dev_map_free+0x77/0x170
[  160.909043]  ? dev_map_free+0x58/0x170
[  160.912857]  bpf_map_free_deferred+0x51/0x90
[  160.917196]  process_one_work+0x142/0x370
[  160.921272]  worker_thread+0x29e/0x3b0
[  160.925082]  ? rescuer_thread+0x4b0/0x4b0
[  160.929157]  kthread+0xd4/0x110
[  160.932355]  ? kthread_park+0x80/0x80
[  160.936079]  ret_from_fork+0x2d/0x50
[  160.943396]  ? kthread_park+0x80/0x80
[  160.950803]  ret_from_fork_asm+0x11/0x20
[  160.958482]  </TASK>

Fixes: 546ac1ffb7 ("bpf: add devmap, a map for storing net device references")
CC: stable@vger.kernel.org
Reported-by: Jordy Zomer <jordyzomer@google.com>
Suggested-by: Jordy Zomer <jordyzomer@google.com>
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://lore.kernel.org/r/20241122121030.716788-3-maciej.fijalkowski@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-14 20:03:30 +01:00
Hou Tao 412bf01fd5 bpf: Fix exact match conditions in trie_get_next_key()
[ Upstream commit 27abc7b3fa2e09bbe41e2924d328121546865eda ]

trie_get_next_key() uses node->prefixlen == key->prefixlen to identify
an exact match, However, it is incorrect because when the target key
doesn't fully match the found node (e.g., node->prefixlen != matchlen),
these two nodes may also have the same prefixlen. It will return
expected result when the passed key exist in the trie. However when a
recently-deleted key or nonexistent key is passed to
trie_get_next_key(), it may skip keys and return incorrect result.

Fix it by using node->prefixlen == matchlen to identify exact matches.
When the condition is true after the search, it also implies
node->prefixlen equals key->prefixlen, otherwise, the search would
return NULL instead.

Fixes: b471f2f1de ("bpf: implement MAP_GET_NEXT_KEY command for LPM_TRIE map")
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241206110622.1161752-6-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:19 +01:00
Hou Tao 7218e441ad bpf: Handle in-place update for full LPM trie correctly
[ Upstream commit 532d6b36b2bfac5514426a97a4df8d103d700d43 ]

When a LPM trie is full, in-place updates of existing elements
incorrectly return -ENOSPC.

Fix this by deferring the check of trie->n_entries. For new insertions,
n_entries must not exceed max_entries. However, in-place updates are
allowed even when the trie is full.

Fixes: b95a5c4db0 ("bpf: add a longest prefix match trie map implementation")
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241206110622.1161752-5-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:19 +01:00
Hou Tao 6dc076a257 bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem
[ Upstream commit 3d5611b4d7efbefb85a74fcdbc35c603847cc022 ]

There is no need to call kfree(im_node) when updating element fails,
because im_node must be NULL. Remove the unnecessary kfree() for
im_node.

Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241206110622.1161752-3-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Stable-dep-of: 532d6b36b2bf ("bpf: Handle in-place update for full LPM trie correctly")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:19 +01:00
Hou Tao 81ec3c6ceb bpf: Handle BPF_EXIST and BPF_NOEXIST for LPM trie
[ Upstream commit eae6a075e9537dd69891cf77ca5a88fa8a28b4a1 ]

Add the currently missing handling for the BPF_EXIST and BPF_NOEXIST
flags. These flags can be specified by users and are relevant since LPM
trie supports exact matches during update.

Fixes: b95a5c4db0 ("bpf: add a longest prefix match trie map implementation")
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241206110622.1161752-4-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:19 +01:00
Tao Lyu f9f2a2739e bpf: Fix narrow scalar spill onto 64-bit spilled scalar slots
[ Upstream commit b0e66977dc072906bb76555fb1a64261d7f63d0f ]

When CAP_PERFMON and CAP_SYS_ADMIN (allow_ptr_leaks) are disabled, the
verifier aims to reject partial overwrite on an 8-byte stack slot that
contains a spilled pointer.

However, in such a scenario, it rejects all partial stack overwrites as
long as the targeted stack slot is a spilled register, because it does
not check if the stack slot is a spilled pointer.

Incomplete checks will result in the rejection of valid programs, which
spill narrower scalar values onto scalar slots, as shown below.

0: R1=ctx() R10=fp0
; asm volatile ( @ repro.bpf.c:679
0: (7a) *(u64 *)(r10 -8) = 1          ; R10=fp0 fp-8_w=1
1: (62) *(u32 *)(r10 -8) = 1
attempt to corrupt spilled pointer on stack
processed 2 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0.

Fix this by expanding the check to not consider spilled scalar registers
when rejecting the write into the stack.

Previous discussion on this patch is at link [0].

  [0]: https://lore.kernel.org/bpf/20240403202409.2615469-1-tao.lyu@epfl.ch

Fixes: ab125ed3ec ("bpf: fix check for attempt to corrupt spilled pointer")
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Tao Lyu <tao.lyu@epfl.ch>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241204044757.1483141-3-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:17 +01:00
Kumar Kartikeya Dwivedi 0da7d4b7ca bpf: Don't mark STACK_INVALID as STACK_MISC in mark_stack_slot_misc
[ Upstream commit 69772f509e084ec6bca12dbcdeeeff41b0103774 ]

Inside mark_stack_slot_misc, we should not upgrade STACK_INVALID to
STACK_MISC when allow_ptr_leaks is false, since invalid contents
shouldn't be read unless the program has the relevant capabilities.
The relaxation only makes sense when env->allow_ptr_leaks is true.

However, such conversion in privileged mode becomes unnecessary, as
invalid slots can be read without being upgraded to STACK_MISC.

Currently, the condition is inverted (i.e. checking for true instead of
false), simply remove it to restore correct behavior.

Fixes: eaf18febd6 ("bpf: preserve STACK_ZERO slots on partial reg spills")
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Reported-by: Tao Lyu <tao.lyu@epfl.ch>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241204044757.1483141-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:17 +01:00
Tao Lyu bdbf87486d bpf: Ensure reg is PTR_TO_STACK in process_iter_arg
[ Upstream commit 12659d28615d606b36e382f4de2dd05550d202af ]

Currently, KF_ARG_PTR_TO_ITER handling missed checking the reg->type and
ensuring it is PTR_TO_STACK. Instead of enforcing this in the caller of
process_iter_arg, move the check into it instead so that all callers
will gain the check by default. This is similar to process_dynptr_func.

An existing selftest in verifier_bits_iter.c fails due to this change,
but it's because it was passing a NULL pointer into iter_next helper and
getting an error further down the checks, but probably meant to pass an
uninitialized iterator on the stack (as is done in the subsequent test
below it). We will gain coverage for non-PTR_TO_STACK arguments in later
patches hence just change the declaration to zero-ed stack object.

Fixes: 06accc8779 ("bpf: add support for open-coded iterator loops")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Tao Lyu <tao.lyu@epfl.ch>
[ Kartikeya: move check into process_iter_arg, rewrite commit log ]
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241203000238.3602922-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 20:03:16 +01:00
Greg Kroah-Hartman 2bab7bdb88 Merge da7df496b8 ("perf trace: Avoid garbage when not printing a syscall's arguments") into android16-6.12
Steps on the way to 6.12.2

Resolves merge conflicts in:
	fs/fuse/fuse_i.h

Change-Id: If765bb10099fb7efad53a0a4bcda888cd571ac97
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-12-13 02:48:11 -08:00
Darren Chang a5a09c721d ANDROID: Add CtsUsbTests to the kernel-presubmit group
Bug: 360874465
Change-Id: I8bfff6f3750ae25da66af9ce004732c11cf58d6e
Signed-off-by: Darren Chang <chihsheng@google.com>
2024-12-11 14:53:41 -08:00
Darren Chang bd7a15b6d6 ANDROID: Add CtsLibcoreTestCases to the kernel-presubmit group
Bug: 360874465
Change-Id: If8ed9f95bf2366639075c91e52c611b969a6ee49
Signed-off-by: Darren Chang <chihsheng@google.com>
2024-12-06 18:49:45 +00:00
Xu Kuohai 449b1a7178 bpf: Add kernel symbol for struct_ops trampoline
[ Upstream commit 7c8ce4ffb684676039b1ff9ff81c126794e8d88e ]

Without kernel symbols for struct_ops trampoline, the unwinder may
produce unexpected stacktraces.

For example, the x86 ORC and FP unwinders check if an IP is in kernel
text by verifying the presence of the IP's kernel symbol. When a
struct_ops trampoline address is encountered, the unwinder stops due
to the absence of symbol, resulting in an incomplete stacktrace that
consists only of direct and indirect child functions called from the
trampoline.

The arm64 unwinder is another example. While the arm64 unwinder can
proceed across a struct_ops trampoline address, the corresponding
symbol name is displayed as "unknown", which is confusing.

Thus, add kernel symbol for struct_ops trampoline. The name is
bpf__<struct_ops_name>_<member_name>, where <struct_ops_name> is the
type name of the struct_ops, and <member_name> is the name of
the member that the trampoline is linked to.

Below is a comparison of stacktraces captured on x86 by perf record,
before and after this patch.

Before:
ffffffff8116545d __lock_acquire+0xad ([kernel.kallsyms])
ffffffff81167fcc lock_acquire+0xcc ([kernel.kallsyms])
ffffffff813088f4 __bpf_prog_enter+0x34 ([kernel.kallsyms])

After:
ffffffff811656bd __lock_acquire+0x30d ([kernel.kallsyms])
ffffffff81167fcc lock_acquire+0xcc ([kernel.kallsyms])
ffffffff81309024 __bpf_prog_enter+0x34 ([kernel.kallsyms])
ffffffffc000d7e9 bpf__tcp_congestion_ops_cong_avoid+0x3e ([kernel.kallsyms])
ffffffff81f250a5 tcp_ack+0x10d5 ([kernel.kallsyms])
ffffffff81f27c66 tcp_rcv_established+0x3b6 ([kernel.kallsyms])
ffffffff81f3ad03 tcp_v4_do_rcv+0x193 ([kernel.kallsyms])
ffffffff81d65a18 __release_sock+0xd8 ([kernel.kallsyms])
ffffffff81d65af4 release_sock+0x34 ([kernel.kallsyms])
ffffffff81f15c4b tcp_sendmsg+0x3b ([kernel.kallsyms])
ffffffff81f663d7 inet_sendmsg+0x47 ([kernel.kallsyms])
ffffffff81d5ab40 sock_write_iter+0x160 ([kernel.kallsyms])
ffffffff8149c67b vfs_write+0x3fb ([kernel.kallsyms])
ffffffff8149caf6 ksys_write+0xc6 ([kernel.kallsyms])
ffffffff8149cb5d __x64_sys_write+0x1d ([kernel.kallsyms])
ffffffff81009200 x64_sys_call+0x1d30 ([kernel.kallsyms])
ffffffff82232d28 do_syscall_64+0x68 ([kernel.kallsyms])
ffffffff8240012f entry_SYSCALL_64_after_hwframe+0x76 ([kernel.kallsyms])

Fixes: 85d33df357 ("bpf: Introduce BPF_MAP_TYPE_STRUCT_OPS")
Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20241112145849.3436772-4-xukuohai@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 14:01:57 +01:00
Xu Kuohai 9c44c06123 bpf: Use function pointers count as struct_ops links count
[ Upstream commit 821a3fa32bbe3bc0fa23b3189325d3720a49a24c ]

Only function pointers in a struct_ops structure can be linked to bpf
progs, so set the links count to the function pointers count, instead
of the total members count in the structure.

Suggested-by: Martin KaFai Lau <martin.lau@linux.dev>
Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
Link: https://lore.kernel.org/r/20241112145849.3436772-3-xukuohai@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Stable-dep-of: 7c8ce4ffb684 ("bpf: Add kernel symbol for struct_ops trampoline")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 14:01:57 +01:00
Jiri Olsa 36ede57f0c bpf: Allow return values 0 and 1 for kprobe session
[ Upstream commit 17c4b65a24938c6dd79496cce5df15f70d9c253c ]

The kprobe session program can return only 0 or 1,
instruct verifier to check for that.

Fixes: 535a3692ba ("bpf: Add support for kprobe session attach")
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20241108134544.480660-2-jolsa@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 14:01:56 +01:00
Kumar Kartikeya Dwivedi 3634d4a310 bpf: Mark raw_tp arguments with PTR_MAYBE_NULL
[ Upstream commit cb4158ce8ec8a5bb528cc1693356a5eb8058094d ]

Arguments to a raw tracepoint are tagged as trusted, which carries the
semantics that the pointer will be non-NULL.  However, in certain cases,
a raw tracepoint argument may end up being NULL. More context about this
issue is available in [0].

Thus, there is a discrepancy between the reality, that raw_tp arguments
can actually be NULL, and the verifier's knowledge, that they are never
NULL, causing explicit NULL checks to be deleted, and accesses to such
pointers potentially crashing the kernel.

To fix this, mark raw_tp arguments as PTR_MAYBE_NULL, and then special
case the dereference and pointer arithmetic to permit it, and allow
passing them into helpers/kfuncs; these exceptions are made for raw_tp
programs only. Ensure that we don't do this when ref_obj_id > 0, as in
that case this is an acquired object and doesn't need such adjustment.

The reason we do mask_raw_tp_trusted_reg logic is because other will
recheck in places whether the register is a trusted_reg, and then
consider our register as untrusted when detecting the presence of the
PTR_MAYBE_NULL flag.

To allow safe dereference, we enable PROBE_MEM marking when we see loads
into trusted pointers with PTR_MAYBE_NULL.

While trusted raw_tp arguments can also be passed into helpers or kfuncs
where such broken assumption may cause issues, a future patch set will
tackle their case separately, as PTR_TO_BTF_ID (without PTR_TRUSTED) can
already be passed into helpers and causes similar problems. Thus, they
are left alone for now.

It is possible that these checks also permit passing non-raw_tp args
that are trusted PTR_TO_BTF_ID with null marking. In such a case,
allowing dereference when pointer is NULL expands allowed behavior, so
won't regress existing programs, and the case of passing these into
helpers is the same as above and will be dealt with later.

Also update the failure case in tp_btf_nullable selftest to capture the
new behavior, as the verifier will no longer cause an error when
directly dereference a raw tracepoint argument marked as __nullable.

  [0]: https://lore.kernel.org/bpf/ZrCZS6nisraEqehw@jlelli-thinkpadt14gen4.remote.csb

Reviewed-by: Jiri Olsa <jolsa@kernel.org>
Reported-by: Juri Lelli <juri.lelli@redhat.com>
Tested-by: Juri Lelli <juri.lelli@redhat.com>
Fixes: 3f00c52393 ("bpf: Allow trusted pointers to be passed to KF_TRUSTED_ARGS kfuncs")
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241104171959.2938862-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 14:01:52 +01:00
Kumar Kartikeya Dwivedi aa51be3fa9 bpf: Tighten tail call checks for lingering locks, RCU, preempt_disable
[ Upstream commit 46f7ed32f7a873d6675ea72e1d6317df41a55f81 ]

There are three situations when a program logically exits and transfers
control to the kernel or another program: bpf_throw, BPF_EXIT, and tail
calls. The former two check for any lingering locks and references, but
tail calls currently do not. Expand the checks to check for spin locks,
RCU read sections and preempt disabled sections.

Spin locks are indirectly preventing tail calls as function calls are
disallowed, but the checks for preemption and RCU are more relaxed,
hence ensure tail calls are prevented in their presence.

Fixes: 9bb00b2895 ("bpf: Add kfunc bpf_rcu_read_lock/unlock()")
Fixes: fc7566ad0a ("bpf: Introduce bpf_preempt_[disable,enable] kfuncs")
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20241103225940.1408302-2-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 14:01:51 +01:00
Darren Chang 48e01c2c2b ANDROID: Add CtsBionicTestCases to the kernel-presubmit group
Bug: 360874465
Change-Id: Idd133e52fb5e60891320299346a5f82bb5226c8a
Signed-off-by: Darren Chang <chihsheng@google.com>
2024-12-04 19:42:48 +00:00
Darren Chang 043fda56b3 ANDROID: Add VtsHalBluetoothAudioTargetTest to the kernel-presubmit group
Bug: 360874465
Change-Id: Ieb251b3f444c634dc87b88bd147cec3bac99e9f0
Signed-off-by: Darren Chang <chihsheng@google.com>
2024-12-03 21:06:20 +00:00
Darren Chang be2b192f81 ANDROID: Add binderDriverInterfaceTest, binderLibTest, binderSafeInterfaceTest, memunreachable_binder_test to the kernel-presubmit group
Bug: 360874465
Change-Id: Ie8bf70314fa8ddef6e28a9490f63636b56e90e81
Signed-off-by: Darren Chang <chihsheng@google.com>
2024-11-19 17:33:40 +00:00
Matthias Maennich 7fc0276001 Merge 'v6.12-rc6' into android-mainline
Change-Id: I0c3f47fe0cae2b79dc90050b15d424ac8a56d089
Signed-off-by: Matthias Maennich <maennich@google.com>
2024-11-05 00:24:26 +00:00
Linus Torvalds 5635f18942 Merge tag 'bpf-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Pull bpf fixes from Daniel Borkmann:

 - Fix BPF verifier to force a checkpoint when the program's jump
   history becomes too long (Eduard Zingerman)

 - Add several fixes to the BPF bits iterator addressing issues like
   memory leaks and overflow problems (Hou Tao)

 - Fix an out-of-bounds write in trie_get_next_key (Byeonguk Jeong)

 - Fix BPF test infra's LIVE_FRAME frame update after a page has been
   recycled (Toke Høiland-Jørgensen)

 - Fix BPF verifier and undo the 40-bytes extra stack space for
   bpf_fastcall patterns due to various bugs (Eduard Zingerman)

 - Fix a BPF sockmap race condition which could trigger a NULL pointer
   dereference in sock_map_link_update_prog (Cong Wang)

 - Fix tcp_bpf_recvmsg_parser to retrieve seq_copied from tcp_sk under
   the socket lock (Jiayuan Chen)

* tag 'bpf-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf:
  bpf, test_run: Fix LIVE_FRAME frame update after a page has been recycled
  selftests/bpf: Add three test cases for bits_iter
  bpf: Use __u64 to save the bits in bits iterator
  bpf: Check the validity of nr_words in bpf_iter_bits_new()
  bpf: Add bpf_mem_alloc_check_size() helper
  bpf: Free dynamically allocated bits in bpf_iter_bits_destroy()
  bpf: disallow 40-bytes extra stack for bpf_fastcall patterns
  selftests/bpf: Add test for trie_get_next_key()
  bpf: Fix out-of-bounds write in trie_get_next_key()
  selftests/bpf: Test with a very short loop
  bpf: Force checkpoint when jmp history is too long
  bpf: fix filed access without lock
  sock_map: fix a NULL pointer dereference in sock_map_link_update_prog()
2024-10-31 14:56:19 -10:00
Lee Jones f0999a133a Merge tag 'v6.12-rc5' into android-mainline
Linux 6.12-rc5

Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ie9f51e6441eda54ae6a21cad31da6edecae7e349
2024-10-31 21:12:56 +00:00
Greg Kroah-Hartman e3cec126d4 Merge tag 'v6.12-rc4' into android-mainline
Linux 6.12-rc4

Change-Id: I90e653f10aa32734dc451ff75a3ea5a9f11ecbb2
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-10-31 15:51:26 +00:00
Hou Tao e133938367 bpf: Use __u64 to save the bits in bits iterator
On 32-bit hosts (e.g., arm32), when a bpf program passes a u64 to
bpf_iter_bits_new(), bpf_iter_bits_new() will use bits_copy to store the
content of the u64. However, bits_copy is only 4 bytes, leading to stack
corruption.

The straightforward solution would be to replace u64 with unsigned long
in bpf_iter_bits_new(). However, this introduces confusion and problems
for 32-bit hosts because the size of ulong in bpf program is 8 bytes,
but it is treated as 4-bytes after passed to bpf_iter_bits_new().

Fix it by changing the type of both bits and bit_count from unsigned
long to u64. However, the change is not enough. The main reason is that
bpf_iter_bits_next() uses find_next_bit() to find the next bit and the
pointer passed to find_next_bit() is an unsigned long pointer instead
of a u64 pointer. For 32-bit little-endian host, it is fine but it is
not the case for 32-bit big-endian host. Because under 32-bit big-endian
host, the first iterated unsigned long will be the bits 32-63 of the u64
instead of the expected bits 0-31. Therefore, in addition to changing
the type, swap the two unsigned longs within the u64 for 32-bit
big-endian host.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241030100516.3633640-5-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-30 12:13:46 -07:00
Hou Tao 393397fbdc bpf: Check the validity of nr_words in bpf_iter_bits_new()
Check the validity of nr_words in bpf_iter_bits_new(). Without this
check, when multiplication overflow occurs for nr_bits (e.g., when
nr_words = 0x0400-0001, nr_bits becomes 64), stack corruption may occur
due to bpf_probe_read_kernel_common(..., nr_bytes = 0x2000-0008).

Fix it by limiting the maximum value of nr_words to 511. The value is
derived from the current implementation of BPF memory allocator. To
ensure compatibility if the BPF memory allocator's size limitation
changes in the future, use the helper bpf_mem_alloc_check_size() to
check whether nr_bytes is too larger. And return -E2BIG instead of
-ENOMEM for oversized nr_bytes.

Fixes: 4665415975 ("bpf: Add bits iterator")
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241030100516.3633640-4-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-30 12:13:46 -07:00
Hou Tao 62a898b07b bpf: Add bpf_mem_alloc_check_size() helper
Introduce bpf_mem_alloc_check_size() to check whether the allocation
size exceeds the limitation for the kmalloc-equivalent allocator. The
upper limit for percpu allocation is LLIST_NODE_SZ bytes larger than
non-percpu allocation, so a percpu argument is added to the helper.

The helper will be used in the following patch to check whether the size
parameter passed to bpf_mem_alloc() is too big.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241030100516.3633640-3-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-30 12:13:46 -07:00
Hou Tao 101ccfbabf bpf: Free dynamically allocated bits in bpf_iter_bits_destroy()
bpf_iter_bits_destroy() uses "kit->nr_bits <= 64" to check whether the
bits are dynamically allocated. However, the check is incorrect and may
cause a kmemleak as shown below:

unreferenced object 0xffff88812628c8c0 (size 32):
  comm "swapper/0", pid 1, jiffies 4294727320
  hex dump (first 32 bytes):
	b0 c1 55 f5 81 88 ff ff f0 f0 f0 f0 f0 f0 f0 f0  ..U...........
	f0 f0 f0 f0 f0 f0 f0 f0 00 00 00 00 00 00 00 00  ..............
  backtrace (crc 781e32cc):
	[<00000000c452b4ab>] kmemleak_alloc+0x4b/0x80
	[<0000000004e09f80>] __kmalloc_node_noprof+0x480/0x5c0
	[<00000000597124d6>] __alloc.isra.0+0x89/0xb0
	[<000000004ebfffcd>] alloc_bulk+0x2af/0x720
	[<00000000d9c10145>] prefill_mem_cache+0x7f/0xb0
	[<00000000ff9738ff>] bpf_mem_alloc_init+0x3e2/0x610
	[<000000008b616eac>] bpf_global_ma_init+0x19/0x30
	[<00000000fc473efc>] do_one_initcall+0xd3/0x3c0
	[<00000000ec81498c>] kernel_init_freeable+0x66a/0x940
	[<00000000b119f72f>] kernel_init+0x20/0x160
	[<00000000f11ac9a7>] ret_from_fork+0x3c/0x70
	[<0000000004671da4>] ret_from_fork_asm+0x1a/0x30

That is because nr_bits will be set as zero in bpf_iter_bits_next()
after all bits have been iterated.

Fix the issue by setting kit->bit to kit->nr_bits instead of setting
kit->nr_bits to zero when the iteration completes in
bpf_iter_bits_next(). In addition, use "!nr_bits || bits >= nr_bits" to
check whether the iteration is complete and still use "nr_bits > 64" to
indicate whether bits are dynamically allocated. The "!nr_bits" check is
necessary because bpf_iter_bits_new() may fail before setting
kit->nr_bits, and this condition will stop the iteration early instead
of accessing the zeroed or freed kit->bits.

Considering the initial value of kit->bits is -1 and the type of
kit->nr_bits is unsigned int, change the type of kit->nr_bits to int.
The potential overflow problem will be handled in the following patch.

Fixes: 4665415975 ("bpf: Add bits iterator")
Acked-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241030100516.3633640-2-houtao@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-30 12:13:46 -07:00
Eduard Zingerman d0b98f6a17 bpf: disallow 40-bytes extra stack for bpf_fastcall patterns
Hou Tao reported an issue with bpf_fastcall patterns allowing extra
stack space above MAX_BPF_STACK limit. This extra stack allowance is
not integrated properly with the following verifier parts:
- backtracking logic still assumes that stack can't exceed
  MAX_BPF_STACK;
- bpf_verifier_env->scratched_stack_slots assumes only 64 slots are
  available.

Here is an example of an issue with precision tracking
(note stack slot -8 tracked as precise instead of -520):

    0: (b7) r1 = 42                       ; R1_w=42
    1: (b7) r2 = 42                       ; R2_w=42
    2: (7b) *(u64 *)(r10 -512) = r1       ; R1_w=42 R10=fp0 fp-512_w=42
    3: (7b) *(u64 *)(r10 -520) = r2       ; R2_w=42 R10=fp0 fp-520_w=42
    4: (85) call bpf_get_smp_processor_id#8       ; R0_w=scalar(...)
    5: (79) r2 = *(u64 *)(r10 -520)       ; R2_w=42 R10=fp0 fp-520_w=42
    6: (79) r1 = *(u64 *)(r10 -512)       ; R1_w=42 R10=fp0 fp-512_w=42
    7: (bf) r3 = r10                      ; R3_w=fp0 R10=fp0
    8: (0f) r3 += r2
    mark_precise: frame0: last_idx 8 first_idx 0 subseq_idx -1
    mark_precise: frame0: regs=r2 stack= before 7: (bf) r3 = r10
    mark_precise: frame0: regs=r2 stack= before 6: (79) r1 = *(u64 *)(r10 -512)
    mark_precise: frame0: regs=r2 stack= before 5: (79) r2 = *(u64 *)(r10 -520)
    mark_precise: frame0: regs= stack=-8 before 4: (85) call bpf_get_smp_processor_id#8
    mark_precise: frame0: regs= stack=-8 before 3: (7b) *(u64 *)(r10 -520) = r2
    mark_precise: frame0: regs=r2 stack= before 2: (7b) *(u64 *)(r10 -512) = r1
    mark_precise: frame0: regs=r2 stack= before 1: (b7) r2 = 42
    9: R2_w=42 R3_w=fp42
    9: (95) exit

This patch disables the additional allowance for the moment.
Also, two test cases are removed:
- bpf_fastcall_max_stack_ok:
  it fails w/o additional stack allowance;
- bpf_fastcall_max_stack_fail:
  this test is no longer necessary, stack size follows
  regular rules, pattern invalidation is checked by other
  test cases.

Reported-by: Hou Tao <houtao@huaweicloud.com>
Closes: https://lore.kernel.org/bpf/20241023022752.172005-1-houtao@huaweicloud.com/
Fixes: 5b5f51bff1 ("bpf: no_caller_saved_registers attribute for helper calls")
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Tested-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/20241029193911.1575719-1-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-29 19:43:16 -07:00
Linus Torvalds c1e939a21e Merge tag 'cgroup-for-6.12-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup fixes from Tejun Heo:

 - cgroup_bpf_release_fn() could saturate system_wq with
   cgrp->bpf.release_work which can then form a circular dependency
   leading to deadlocks. Fix by using a dedicated workqueue. The
   system_wq's max concurrency limit is being increased separately.

 - Fix theoretical off-by-one bug when enforcing max cgroup hierarchy
   depth

* tag 'cgroup-for-6.12-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
  cgroup: Fix potential overflow issue when checking max_depth
  cgroup/bpf: use a dedicated workqueue for cgroup bpf destruction
2024-10-29 16:41:30 -10:00
Byeonguk Jeong 13400ac8fb bpf: Fix out-of-bounds write in trie_get_next_key()
trie_get_next_key() allocates a node stack with size trie->max_prefixlen,
while it writes (trie->max_prefixlen + 1) nodes to the stack when it has
full paths from the root to leaves. For example, consider a trie with
max_prefixlen is 8, and the nodes with key 0x00/0, 0x00/1, 0x00/2, ...
0x00/8 inserted. Subsequent calls to trie_get_next_key with _key with
.prefixlen = 8 make 9 nodes be written on the node stack with size 8.

Fixes: b471f2f1de ("bpf: implement MAP_GET_NEXT_KEY command for LPM_TRIE map")
Signed-off-by: Byeonguk Jeong <jungbu2855@gmail.com>
Reviewed-by: Toke Høiland-Jørgensen <toke@kernel.org>
Tested-by: Hou Tao <houtao1@huawei.com>
Acked-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/r/Zxx384ZfdlFYnz6J@localhost.localdomain
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-10-29 13:41:40 -07:00