linux-imx/net/ipv4/udp.c
Greg Kroah-Hartman 54fe7d362f Merge tag 'android15-6.6.46_r00' into android15-6.6
This catches the android15-6.6 branch up to the 6.6.46 LTS release.
Included in here are the following commits:

* cbff1d75ab ANDROID: fix up arm64 eratta addition
* 797e28614a Revert "tracefs: Use generic inode RCU for synchronizing freeing"
*   5f0341154e Merge 6.6.46 into android15-6.6-lts
|\
| * 99fd042016 Linux 6.6.46
| * 7ba27f1416 btrfs: fix double inode unlock for direct IO sync writes
| * 1c3b01b519 Revert "selftests: mptcp: simult flows: mark 'unbalanced' tests as flaky"
| * 9d97114f2f selftests: mptcp: join: test both signal & subflow
| * e80cf3fc4e selftests: mptcp: join: ability to invert ADD_ADDR check
| * 64815ba158 mptcp: pm: do not ignore 'subflow' if 'signal' flag is also set
| * 9a4a4c0b8e mptcp: pm: don't try to create sf if alloc failed
| * 432535f52e mptcp: pm: reduce indentation blocks
| * c2389c0749 xfs: fix log recovery buffer allocation for the legacy h_size fixup
| * 37e79836d6 nouveau: set placement to original placement on uvmm validate.
| * 2ae4d58218 mm/hugetlb: fix potential race in __update_and_free_hugetlb_folio()
| * d43ff94289 tools headers arm64: Sync arm64's cputype.h with the kernel sources
| * e7f3e5fb20 ipv6: fix source address selection with route leak
| * 717c91c6ed netfilter: nf_tables: prefer nft_chain_validate
| * 0a108bde61 btrfs: fix corruption after buffer fault in during direct IO append write
| * a5c399fe43 mm: huge_memory: use !CONFIG_64BIT to relax huge page alignment on 32 bit machines
| * 6ea9aa8d97 mm: huge_memory: don't force huge page alignment on 32 bit
| * 94220b35ae Revert "drm/amd/display: Add NULL check for 'afb' before dereferencing in amdgpu_dm_plane_handle_cursor_update"
| * 163f7dd802 block: use the right type for stub rq_integrity_vec()
| * d4c67071f4 mptcp: pm: deny endp with signal + subflow + port
| * 8165c84431 selftests: mptcp: fix error path
| * fff9b9208c mptcp: pm: fix backup support in signal endpoints
| * 07bb418cb0 mptcp: fully established after ADD_ADDR echo on MPJ
| * ea12dbf570 drm/radeon: Remove __counted_by from StateArray.states[]
| * 81d34df843 drm/mgag200: Bind I2C lifetime to DRM device
| * 6946b7b005 drm/mgag200: Set DDC timeout in milliseconds
| * b3aa563f21 drm/lima: Mark simple_ondemand governor as softdep
| * 28c060cd37 drm/dp_mst: Skip CSN if topology probing is not done yet
| * 6f8765a706 drm/bridge: analogix_dp: properly handle zero sized AUX transactions
| * 78f1990b6b sched/core: Fix unbalance set_rq_online/offline() in sched_cpu_deactivate()
| * 4c15b20c26 sched/core: Introduce sched_set_rq_on/offline() helper
| * 65727331b6 sched/smt: Fix unbalance sched_smt_present dec/inc
| * 41d856565d sched/smt: Introduce sched_smt_present_inc/dec() helper
| * 8a90d3fc7c x86/mtrr: Check if fixed MTRRs exist before saving them
| * 8728e3fc72 x86/paravirt: Fix incorrect virt spinlock setting on bare metal
| * 866992f0d4 btrfs: avoid using fixed char array size for tree names
| * 772f831942 selftests: mm: add s390 to ARCH check
| * 2ef3d120d1 eventfs: Use SRCU for freeing eventfs_inodes
| * b59603a114 eventfs: Don't return NULL in eventfs_create_dir()
| * c7cd840b8e smb3: fix setting SecurityFlags when encryption is required
| * 924f788c90 padata: Fix possible divide-by-0 panic in padata_mt_helper()
| * a172c7b22b tracing: Fix overflow in get_free_elt()
| * f31fe63838 power: supply: axp288_charger: Round constant_charge_voltage writes down
| * e1ab8ca803 power: supply: axp288_charger: Fix constant_charge_voltage writes
| * da5e1ee0eb power: supply: qcom_battmgr: return EAGAIN when firmware service is not up
| * e32f7c8443 LoongArch: Enable general EFI poweroff method
| * 0688cacd0e genirq/irqdesc: Honor caller provided affinity in alloc_desc()
| * 2ce998fabc irqchip/xilinx: Fix shift out of bounds
| * d0137ce03f kcov: properly check for softirq context
| * 6f48f45c7b ASoC: amd: yc: Add quirk entry for OMEN by HP Gaming Laptop 16-n0xxx
| * 642a0b7453 parisc: fix a possible DMA corruption
| * 8d26093f81 parisc: fix unaligned accesses in BPF
| * 37a060b64a memcg: protect concurrent access to mem_cgroup_idr
| * e3ad503876 serial: core: check uartclk for zero to avoid divide by zero
| * 65d76c0aa2 timekeeping: Fix bogus clock_was_set() invocation in do_adjtimex()
| * ae5848cb5b ntp: Safeguard against time_constant overflow
| * 726f4c241e tracefs: Use generic inode RCU for synchronizing freeing
| * a49f7de9b8 tracefs: Fix inode allocation
| * 4d035c743c driver core: Fix uevent_show() vs driver detach race
| * 9d6193fd91 clocksource: Fix brown-bag boolean thinko in cs_watchdog_read()
| * 03c3855528 clocksource: Scale the watchdog read retries automatically
| * b5cf99eb7a ntp: Clamp maxerror and esterror to operating range
| * 2ac6deb999 vhost-vdpa: switch to use vmf_insert_pfn() in the fault handler
| * b9d604933d tick/broadcast: Move per CPU pointer access into the atomic section
| * 8bf58028d5 scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic
| * 74eda70a56 scsi: ufs: core: Do not set link to OFF state while waking up from hibernation
| * 80d0624d0a scsi: mpi3mr: Avoid IOMMU page faults on REPORT ZONES
| * d67546814d usb: gadget: u_audio: Check return codes from usb_ep_enable and config_ep_by_speed.
| * 54b7f68025 usb: gadget: u_serial: Set start_delayed during suspend
| * a4f0d0a013 usb: gadget: midi2: Fix the response for FB info with block 0xff
| * 1a9df57d57 usb: gadget: core: Check for unset descriptor
| * 0761ba080a USB: serial: debug: do not echo input by default
| * 128e82e41c usb: vhci-hcd: Do not drop references before new references are gained
| * 22628010c5 ALSA: hda/hdmi: Yet more pin fix for HP EliteDesk 800 G4
| * a70ed69f9b ALSA: hda/realtek: Add Framework Laptop 13 (Intel Core Ultra) to quirks
| * 09c0f5f9db ALSA: hda: Add HP MP9 G4 Retail System AMS to force connect list
| * 535df7f896 ALSA: line6: Fix racy access to midibuf
| * d64fc94f7b drm/client: fix null pointer dereference in drm_client_modeset_probe
| * d73de3c644 drm/i915/gem: Adjust vma offset for framebuffer mmap offset
| * 0da0b06165 drm/amdgpu: Forward soft recovery errors to userspace
| * 718d83f66f drm/amd/display: Skip Recompute DSC Params if no Stream on Link
| * 4b09513ce9 drm/i915/gem: Fix Virtual Memory mapping boundaries calculation
| * 81ac1e8884 module: make waiting for a concurrent module loader interruptible
| * bdb3679cf3 module: warn about excessively long module waits
| * c0f767dea5 cifs: cifs_inval_name_dfs_link_error: correct the check for fullpath
| * 8852832692 ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT
| * a59ee70389 ALSA: usb-audio: Re-add ScratchAmp quirk entries
| * a2c0f5df8b spi: spi-fsl-lpspi: Fix scldiv calculation
| * c25b8a3f01 i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume
| * 233419a329 i2c: qcom-geni: Add missing clk_disable_unprepare in geni_i2c_runtime_resume
| * a4155dec01 kprobes: Fix to check symbol prefixes correctly
| * 25ad6909c8 bpf: kprobe: remove unused declaring of bpf_kprobe_override
| * ae68eee1af i2c: smbus: Send alert notifications to all devices if source not found
| * b66c92b7d1 ASoC: SOF: Remove libraries from topology lookups
| * b156029159 spi: spidev: Add missing spi_device_id for bh2228fv
| * 641de16bb3 ASoC: sti: add missing probe entry for player and reader
| * 8485d324aa ASoC: codecs: wsa884x: Correct Soundwire ports mask
| * 192af3ce57 ASoC: codecs: wsa884x: parse port-mapping information
| * e79e2d8f7a ASoC: codecs: wsa883x: Correct Soundwire ports mask
| * 986141e384 ASoC: codecs: wsa883x: parse port-mapping information
| * f4bbf2f2f5 ASoC: codecs: wsa881x: Correct Soundwire ports mask
| * 733677fc39 ASoC: codecs: wcd938x-sdw: Correct Soundwire ports mask
| * 1534b11275 i2c: smbus: Improve handling of stuck alerts
| * 745eec68a3 arm64: errata: Expand speculative SSBS workaround (again)
| * 8defe51951 arm64: cputype: Add Cortex-A725 definitions
| * 44094ae235 arm64: cputype: Add Cortex-X1C definitions
| * b9bf53354e arm64: errata: Expand speculative SSBS workaround
| * 771746afa0 arm64: errata: Unify speculative SSBS errata logic
| * 88ef8dd94f arm64: cputype: Add Cortex-X925 definitions
| * ef6e6d1062 arm64: cputype: Add Cortex-A720 definitions
| * fc4675620a arm64: cputype: Add Cortex-X3 definitions
| * 93696d8f96 arm64: errata: Add workaround for Arm errata 3194386 and 3312417
| * 527e7e72c9 arm64: cputype: Add Neoverse-V3 definitions
| * e5b9593843 arm64: cputype: Add Cortex-X4 definitions
| * 1ae80faecc arm64: barrier: Restore spec_bar() macro
| * 4167bf7780 arm64: Add Neoverse-V2 part
| * 6772c4868a net: drop bad gso csum_start and offset in virtio_net_hdr
| * 12f98cc6fb sched/cputime: Fix mul_u64_u64_div_u64() precision for cputime
| * b56dee6c9b irqchip/loongarch-cpu: Fix return value of lpic_gsi_to_irq()
| * 57ab379d78 irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinlock_t'
| * b547433efa scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES
| * 2d451ec01e profiling: remove profile=sleep support
| * c265240444 SUNRPC: Fix a race to wake a sync task
| * 1e8b7fb427 s390/sclp: Prevent release of buffer in I/O
| * 6dacca9fbe jbd2: avoid memleak in jbd2_journal_write_metadata_buffer
| * e7abdad660 ext4: fix uninitialized variable in ext4_inlinedir_to_tree
| * 850304152d media: xc2028: avoid use-after-free in load_firmware_cb()
| * 7f855b6681 media: uvcvideo: Fix the bandwdith quirk on USB 3.x
| * 5b835d12cf media: uvcvideo: Ignore empty TS packets
| * 4cc2a94d96 drm/amd/display: Add null checker before passing variables
| * a59941605a drm/amd/display: Add NULL check for 'afb' before dereferencing in amdgpu_dm_plane_handle_cursor_update
| * a29c1e51ef media: amphion: Remove lock in s_ctrl callback
| * 2e53894499 drm/amd/pm: Fix the null pointer dereference for vega10_hwmgr
| * 1adb5ebe20 drm/amdgpu: Add lock around VF RLCG interface
| * 641dac6417 drm/admgpu: fix dereferencing null pointer context
| * 3a01bf2ca9 drm/amdgpu/pm: Fix the null pointer dereference in apply_state_adjust_rules
| * b896163339 drm/amdgpu: Fix the null pointer dereference to ras_manager
| * 09544cd95c drm/amdgpu/pm: Fix the null pointer dereference for smu7
| * 837ab17cee drm/amdgpu/pm: Fix the param type of set_power_profile_mode
| * bc93cfde69 drm/amdgpu: fix potential resource leak warning
| * 479ccc2132 drm/amd/display: Add delay to improve LTTPR UHBR interop
| * 4d9adcb94d Bluetooth: btnxpuart: Shutdown timer and prevent rearming when driver unloading
| * d9e846072f btrfs: fix bitmap leak when loading free space cache on duplicate entry
| * ba4dedb713 btrfs: do not clear page dirty inside extent_write_locked_range()
| * a006e6c4a8 net: stmmac: qcom-ethqos: enable SGMII loopback during DMA reset on sa8775p-ride-r3
| * 759822a330 can: mcp251xfd: tef: update workaround for erratum DS80000789E 6 of mcp2518fd
| * 1333fd55d1 can: mcp251xfd: tef: prepare to workaround broken TEF FIFO tail index erratum
| * 81f086d913 wifi: nl80211: don't give key data to userspace
| * 5cc9745e2e udf: prevent integer overflow in udf_bitmap_free_blocks()
| * 9be0805597 PCI: Add Edimax Vendor ID to pci_ids.h
| * 412f97f360 af_unix: Don't retry after unix_state_lock_nested() in unix_stream_connect().
| * 5ce414edb3 selftests/bpf: Fix send_signal test with nested CONFIG_PARAVIRT
| * 650e24748e net/mlx5e: SHAMPO, Fix invalid WQ linked list unlink
| * 9b034650f3 wifi: ath12k: fix memory leak in ath12k_dp_rx_peer_frag_setup()
| * c6ea738e3f wifi: nl80211: disallow setting special AP channel widths
| * c2775ae4d9 xen: privcmd: Switch from mutex to spinlock for irqfds
| * 9747b72212 ACPI: SBS: manage alarm sysfs attribute through psy core
| * e1f6d71b42 ACPI: battery: create alarm sysfs attribute atomically
| * 9e1923b395 clocksource/drivers/sh_cmt: Address race condition for clock events
| * 4991cb2d43 rcu: Fix rcu_barrier() VS post CPUHP_TEARDOWN_CPU invocation
| * c63b44fb33 block: change rq_integrity_vec to respect the iterator
| * 775a9ba16c md/raid5: avoid BUG_ON() while continue reshape after reassembling
| * 3fd53466db md: do not delete safemode_timer in mddev_suspend
| * 7adbf9b5c8 rcutorture: Fix rcu_torture_fwd_cb_cr() data race
| * 95cf80c934 hwmon: corsair-psu: add USB id of HX1200i Series 2023 psu
| * 1b955f786a gpio: prevent potential speculation leaks in gpio_device_get_desc()
| * c078067280 net: fec: Stop PPS on driver remove
| * 73780807c6 net: bcmgenet: Properly overlay PHY and MAC Wake-on-LAN capabilities
| * 207e881554 l2tp: fix lockdep splat
| * a7d2808d67 net: dsa: bcm_sf2: Fix a possible memory leak in bcm_sf2_mdio_register()
| * f7dc578abe net/smc: add the max value of fallback reason count
| * 1a7a06e90e Bluetooth: hci_sync: avoid dup filtering when passive scanning with adv monitor
| * b4af69d51d Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()
| * 3e94132335 ice: Fix reset handler
| * 3b1fae78be net: linkwatch: use system_unbound_wq
| * e3145ca904 net: bridge: mcast: wait for previous gc cycles when removing port
| * f2c353227d net: usb: qmi_wwan: fix memory leak for not ip packets
| * 1407be30fc sctp: Fix null-ptr-deref in reuseport_add_sock().
| * 6a78a29038 wifi: ath12k: fix soft lockup on suspend
| * 7091b094dd wifi: ath12k: add CE and ext IRQ flag to indicate irq_handler
| * 5c18b150e4 wifi: ath12k: rename the sc naming convention to ab
| * 0397a48c4b smb: client: handle lack of FSCTL_GET_REPARSE_POINT support
| * fbb384e3f0 x86/mm: Fix pti_clone_entry_text() for i386
| * ca07aab70d x86/mm: Fix pti_clone_pgtable() alignment assumption
| * c7b46f69d1 jump_label: Fix the fix, brown paper bags galore
| * 79b316264f platform/x86/intel/ifs: Initialize union ifs_status to zero
| * 3d0d7713dd platform/x86/intel/ifs: Gen2 Scan test support
| * b399e6a233 platform/x86/intel/ifs: Store IFS generation number
| * 69508cc9a9 irqchip/mbigen: Fix mbigen node address layout
* | 3009510505 Revert "leds: trigger: Store brightness set by led_trigger_event()"
* | 8c2b07a771 Revert "leds: trigger: Call synchronize_rcu() before calling trig->activate()"
* | e7c29758db Revert "leds: triggers: Flush pending brightness before activating trigger"
* | 93aa9d1549 Revert "sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table)"
* | 801df5474f Merge 6.6.45 into android15-6.6-lts
|\|
| * 878fbff41d Linux 6.6.45
| * ee3c845787 mptcp: prevent BPF accessing lowat from a subflow socket.
| * 6f2b21806e selftests: mptcp: join: check backup support in signal endp
| * 8213b98e55 selftests: mptcp: join: validate backup in MPJ
| * ffe8c864c8 selftests: mptcp: always close input's FD if opened
| * bf39cfc023 mptcp: fix duplicate data handling
| * bd1d1fc4bc mptcp: pm: only set request_bkup flag when sending MP_PRIO
| * 19bf32929b mptcp: fix bad RCVPRUNED mib accounting
| * 6721cbaa04 mptcp: mib: count MPJ with backup flag
| * e680e635ed mptcp: fix NL PM announced address accounting
| * 8ed3e34c76 mptcp: distinguish rcv vs sent backup flag in requests
| * 201b76f624 mptcp: fix user-space PM announced address accounting
| * 7e92702249 r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY
| * f2b5be33a3 net: usb: sr9700: fix uninitialized variable use in sr_mdio_read
| * 6c0473c9ac drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll()
| * a62c98142c drm/virtio: Fix type of dma-fence context variable
| * a8943969f9 drm/vmwgfx: Fix a deadlock in dma buf fence polling
| * f5043e69ae Revert "ALSA: firewire-lib: operate for period elapse event in process context"
| * 5f8a5a1dd2 Revert "ALSA: firewire-lib: obsolete workqueue for period update"
| * 8dd4a10fdc ALSA: seq: ump: Optimize conversions from SysEx to UMP
| * 79d3823e1f ALSA: hda/realtek: Add quirk for Acer Aspire E5-574G
| * b4dd36f912 ALSA: usb-audio: Correct surround channels in UAC1 channel map
| * add243b7f6 mptcp: sched: check both directions for backup
| * da72e783af protect the fetch of ->fd[fd] in do_dup2() from mispredictions
| * 0caf15bee7 btrfs: do not subtract delalloc from avail bytes
| * ae29e6f764 btrfs: zoned: fix zone_unusable accounting on making block group read-write again
| * 92566c0fd7 HID: wacom: Modify pen IDs
| * b8774d3137 platform/chrome: cros_ec_proto: Lock device when updating MKBP version
| * 5e5a29bd54 rust: SHADOW_CALL_STACK is incompatible with Rust
| * dd0aaa9ac4 arm64: jump_label: Ensure patched jump_labels are visible to all CPUs
| * 40208cdbb2 riscv: Fix linear mapping checks for non-contiguous memory regions
| * 917f598209 riscv/mm: Add handling for VM_FAULT_SIGSEGV in mm_fault_error()
| * fa12277fa2 perf: riscv: Fix selecting counters in legacy mode
| * 10b26868bf riscv: remove unused functions in traps_misaligned.c
| * 93e2beae84 ipv6: fix ndisc_is_useropt() handling for PIO
| * 5635301ed5 igc: Fix double reset adapter triggered from a single taprio cmd
| * 82b9a3804a net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys
| * daab2cc17b net/mlx5e: Fix CT entry update leaks of modify header context
| * db4ba08c23 net/mlx5e: Require mlx5 tc classifier action support for IPsec prio capability
| * 98884e89c9 net/mlx5: Fix missing lock on sync reset reload
| * f6f846005d net/mlx5: Lag, don't use the hardcoded value of the first port
| * 315d00c7bc net/mlx5: Fix error handling in irq_pool_request_irq
| * 6b6c2ebd83 net/mlx5: Always drain health in shutdown callback
| * e85b9b6a87 netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init().
| * 70014b73d7 netfilter: iptables: Fix null-ptr-deref in iptable_nat_table_init().
| * 2c2868a766 ALSA: hda: Conditionally use snooping for AMD HDMI
| * 2094996159 net: phy: micrel: Fix the KSZ9131 MDI-X status issue
| * eb2926cad1 net: mvpp2: Don't re-use loop iterator
| * 9541f99b26 drm/i915/hdcp: Fix HDCP2_STREAM_STATUS macro
| * 01437282fd net/iucv: fix use after free in iucv_sock_close()
| * 9ac083de42 ice: add missing WRITE_ONCE when clearing ice_rx_ring::xdp_prog
| * ac2a3c759d ice: replace synchronize_rcu with synchronize_net
| * 9016d17f4f ice: don't busy wait for Rx queue disable in ice_qp_dis()
| * 77292f935d ice: respect netif readiness in AF_XDP ZC related ndo's
| * 582b6c7dd0 i915/perf: Remove code to update PWR_CLK_STATE for gen12
| * 0db0072657 rtnetlink: Don't ignore IFLA_TARGET_NETNSID when ifname is specified in rtnl_dellink().
| * 4ea83a0518 net: axienet: start napi before enabling Rx/Tx
| * 1cfdc250b3 tcp: Adjust clamping window for applications specifying SO_RCVBUF
| * f9fef23a81 tcp: annotate data-races around tp->window_clamp
| * 124a4885b5 mptcp: give rcvlowat some love
| * ae8853d0a3 Bluetooth: hci_sync: Fix suspending with wrong filter policy
| * b0c470d67b Bluetooth: btintel: Fail setup on error
| * bc7734418c ALSA: hda: conexant: Fix headset auto detect fail in the polling mode
| * b45cbfa204 net: phy: realtek: add support for RTL8366S Gigabit PHY
| * fcfb8ceafb wifi: cfg80211: fix reporting failed MLO links status with cfg80211_connect_done
| * d7cc186d09 sched: act_ct: take care of padding in struct zones_ht_key
| * c98d6c23fb drm/vmwgfx: Trigger a modeset when the screen moves
| * b67643bffe drm/vmwgfx: Fix overlay when using Screen Targets
| * f23cd66933 drm/nouveau: prime: fix refcount underflow
| * 1b46b23561 perf tool: fix dereferencing NULL al->maps
| * 0a5ca73bab HID: amd_sfh: Move sensor discovery before HID device initialization
| * 181f9b5619 ARM: 9406/1: Fix callchain_trace() return value
| * f4675c8ee7 MIPS: dts: loongson: Fix ls2k1000-rtc interrupt
| * 3544efb889 MIPS: dts: loongson: Fix liointc IRQ polarity
| * fcf20dc293 MIPS: Loongson64: DTS: Fix PCIe port nodes for ls7a
| * 0bcd599a0f perf: imx_perf: fix counter start and config sequence
| * c91c8d3830 dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM
| * 417b64e4c8 dmaengine: fsl-edma: clean up unused "fsl,imx8qm-adma" compatible string
| * ba20b7f28e dmaengine: fsl-edma: add i.MX8ULP edma support
| * 5f8de773d4 dmaengine: fsl-edma: add address for channel mux register in fsl_edma_chan
| * 4239571c5d f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid
| * f911be1165 f2fs: fix to avoid use SSR allocate when do defragment
| * 00fbc7ba49 mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist()
| * 4abfa277c2 mm: page_alloc: control latency caused by zone PCP draining
| * dde5e5343d mm: restrict the pcp batch scale factor to avoid too long latency
| * 340bbe90cc fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes
| * a168da3182 firmware/sysfb: Update screen_info for relocated EFI framebuffers
| * f5dce77f3f video: Provide screen_info_get_pci_dev() to find screen_info's PCI device
| * 5b4d995dfd video: Add helpers for decoding screen_info
| * bab0a82854 fbdev/vesafb: Replace references to global screen_info by local pointer
| * ccab04dc57 PCI: Add pci_get_base_class() helper
| * 43e73206cf KVM: nVMX: Check for pending posted interrupts when looking for nested events
| * 459403bc66 KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector
| * 65b2514e03 KVM: VMX: Move posted interrupt descriptor out of VMX code
| * ebfed7bebd KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch}
| * 93ac74cd6f leds: triggers: Flush pending brightness before activating trigger
| * 9ce3c14f0d leds: trigger: Call synchronize_rcu() before calling trig->activate()
| * 587cf9c0f7 leds: trigger: Store brightness set by led_trigger_event()
| * 73a26eada5 leds: trigger: Remove unused function led_trigger_rename_static()
| * e3fd01a810 cpufreq: qcom-nvmem: fix memory leaks in probe error paths
| * 51a45209a8 cpufreq: qcom-nvmem: Simplify driver data allocation
| * df7363307e ext4: check the extent status again before inserting delalloc block
| * f12fbb9599 ext4: factor out a common helper to query extent map
| * c6cba59072 ext4: convert to exclusive lock while inserting delalloc extents
| * 7849e9b5ba ext4: refactor ext4_da_map_blocks()
| * ffde3af4b2 sysctl: always initialize i_uid/i_gid
| * 96f1d909cd sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table)
| * 13886221ad sysctl: allow to change limits for posix messages queues
| * 8d5b1a9ff8 sysctl: allow change system v ipc sysctls inside ipc namespace
| * 34e788045d thermal/drivers/broadcom: Fix race between removal and clock disable
| * 103881e636 thermal: bcm2835: Convert to platform remove callback returning void
| * 0b4e4da51e arm64: dts: qcom: sdm845: Disable SS instance in Parkmode for USB
| * a27753e685 arm64: dts: qcom: sdm845: switch USB QMP PHY to new style of bindings
| * affc4de945 arm64: dts: qcom: sdm845: switch USB+DP QMP PHY to new style of bindings
| * 1a0bff67f4 arm64: dts: qcom: ipq8074: Disable SS instance in Parkmode for USB
| * cd4f3ad55b arm64: dts: qcom: msm8998: Disable SS instance in Parkmode for USB
| * 267a485c15 arm64: dts: qcom: msm8998: switch USB QMP PHY to new style of bindings
| * 5bf33793d1 arm64: dts: qcom: sc7280: Disable SuperSpeed instances in park mode
| * f879a83086 arm64: dts: qcom: sc7280: switch USB+DP QMP PHY to new style of bindings
| * fde0434035 arm64: dts: qcom: sc7180: Disable SuperSpeed instances in park mode
| * 2359355ddf arm64: dts: qcom: sc7180: switch USB+DP QMP PHY to new style of bindings
* | e84a7dc5be ANDROID: fix crc of cpuset_cpus_allowed()
* | 0559754407 Revert "xfrm: Fix unregister netdevice hang on hardware offload."
* | b9befda371 Revert "xfrm: Export symbol xfrm_dev_state_delete."
* | e31afa119c Revert "perf: Fix event leak upon exec and file release"
* | 999d4907b7 Revert "sbitmap: fix io hung due to race on sbitmap_word::cleared"
* | b2126f90ad Revert "sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks"
* | 734ce10f8a Merge 6.6.44 into android15-6.6-lts
|\|
| * 7213910600 Linux 6.6.44
| * acbd66c10d fs: don't allow non-init s_user_ns for filesystems without FS_USERNS_MOUNT
| * 77848b379e nvme-pci: add missing condition check for existence of mapped data
| * 766b0e807e io_uring: fix io_match_task must_hold
| * b62841e49a iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en
| * 97dfb89415 s390/cpum_cf: Fix endless loop in CF_DIAG event stop
| * b4d781ddae s390/pci: Allow allocation of more than 1 MSI interrupt
| * 3eab85f45f s390/pci: Refactor arch_setup_msi_irqs()
| * da0a3ebf9a ceph: fix incorrect kmalloc size of pagevec mempool
| * 6d98741dbd ASoC: TAS2781: Fix tasdev_load_calibrated_data()
| * be6d86df47 ASoC: Intel: use soc_intel_is_byt_cr() only when IOSF_MBI is reachable
| * af1125de16 spi: spidev: add correct compatible for Rohm BH2228FV
| * 6443a40285 ASoC: sof: amd: fix for firmware reload failure in Vangogh platform
| * 8772be9670 nvme-pci: Fix the instructions for disabling power management
| * 3feda3677e spi: microchip-core: ensure TX and RX FIFOs are empty at start of a transfer
| * 783f42b77d spi: microchip-core: fix init function not setting the master and motorola modes
| * 0b0b759288 spi: microchip-core: switch to use modern name
| * c41d2178d6 spi: microchip-core: only disable SPI controller when register value change requires it
| * 1dc6d9fd48 spi: microchip-core: defer asserting chip select until just before write to TX FIFO
| * 11e0f3c888 spi: microchip-core: fix the issues in the isr
| * 0e51f66977 ASoC: SOF: imx8m: Fix DSP control regmap retrieval
| * 64dc362dee auxdisplay: ht16k33: Drop reference after LED registration
| * f4c6ebb053 lirc: rc_dev_get_from_fd(): fix file leak
| * 4f79a18af9 powerpc: fix a file leak in kvm_vcpu_ioctl_enable_cap()
| * 6c920754f6 apparmor: Fix null pointer deref when receiving skb during sock creation
| * ddc7955664 mISDN: Fix a use after free in hfcmulti_tx()
| * c3496314c5 bpf: Fix a segment issue when downgrading gso_size
| * 7704460acd net: nexthop: Initialize all fields in dumped nexthops
| * 4384135d22 net: stmmac: Correct byte order of perfect_match
| * 76ddf84a52 tipc: Return non-zero value from tipc_udp_addr2str() on error
| * 5c82010cef netfilter: nft_set_pipapo_avx2: disable softinterrupts
| * b6426eabb4 ice: Fix recipe read procedure
| * d9f0109091 net: bonding: correctly annotate RCU in bond_should_notify_peers()
| * 42f493bd6c ipv4: Fix incorrect source address in Record Route option
| * 1f07fab9e0 MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later
| * 9c79502ab7 tools/resolve_btfids: Fix comparison of distinct pointer types warning in resolve_btfids
| * ba709e7807 bpf, events: Use prog to emit ksymbol event for main program
| * 1fe97f68fc dma: fix call order in dmam_free_coherent
| * 772f9c31bf af_unix: Disable MSG_OOB handling for sockets in sockmap/sockhash
| * 297a14fde2 libbpf: Fix no-args func prototype BTF dumping syntax
| * 390c17cab1 selftests/bpf: fexit_sleep: Fix stack allocation for arm64
| * 019167c741 kbuild: avoid build error when single DTB is turned into composite DTB
| * fbcd51e0d9 f2fs: fix to update user block counts in block_operations()
| * 8aeab1af9d watchdog: rzg2l_wdt: Check return status of pm_runtime_put()
| * fb45265610 watchdog: rzg2l_wdt: Use pm_runtime_resume_and_get()
| * abde880b79 f2fs: fix start segno of large section
| * 0aa0284818 um: time-travel: fix signal blocking race/hang
| * f66d436204 um: time-travel: fix time-travel-start option
| * 7eaa06967b phy: zynqmp: Enable reference clock correctly
| * 1cffbf30f8 phy: cadence-torrent: Check return value on register read
| * 0d820e1ca8 dmaengine: ti: k3-udma: Fix BCHAN count with UHC and HC channels
| * ff14eadc27 jfs: Fix array-index-out-of-bounds in diFree
| * 9e58df60f6 kdb: Use the passed prompt in kdb_position_cursor()
| * 7b01bf24f3 kdb: address -Wformat-security warnings
| * f44a25a8bf f2fs: fix to truncate preallocated blocks in f2fs_file_open()
| * 73a9260b73 s390/mm: Fix VM_FAULT_HWPOISON handling in do_exception()
| * 2cc8973bdc PCI/DPC: Fix use-after-free on concurrent DPC and hot-removal
| * 9b6742dcdc PCI: Introduce cleanup helpers for device reference counts and locks
| * 86e7bdc50b wifi: mac80211: track capability/opmode NSS separately
| * 4211d065ef mm/mglru: fix ineffective protection calculation
| * be56dfc9be nilfs2: handle inconsistent state in nilfs_btnode_create_block()
| * 6c0cf6022a minmax: scsi: fix mis-use of 'clamp()' in sr.c
| * 34e4dfe838 Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x13d3:0x3591
| * 499ca9ddd4 Bluetooth: btusb: Add RTL8852BE device 0489:e125 to device tables
| * 3f83f52ae0 video: logo: Drop full path of the input filename in generated file
| * 32c3c30a97 lib/build_OID_registry: don't mention the full path of the script in output
| * 7ca762dcf1 rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
| * 36913dedee rbd: rename RBD_LOCK_STATE_RELEASING and releasing_wait
| * 1901f1cf7c drm/panfrost: Mark simple_ondemand governor as softdep
| * 92d3ca3f46 drm/etnaviv: don't block scheduler when GPU is still active
| * cf9b29f2d4 MIPS: Loongson64: Test register availability before use
| * 6c695c3ce7 MIPS: Loongson64: reset: Prioritise firmware service
| * 690d62d1eb MIPS: Loongson64: Remove memory node for builtin-dtb
| * f7097b5fda MIPS: Loongson64: env: Hook up Loongsson-2K
| * 27479037e8 MIPS: dts: loongson: Fix GMAC phy node
| * 97f099862a MIPS: ip30: ip30-console: Add missing include
| * f29119b301 MIPS: dts: loongson: Add ISA node
| * 2de4d41862 remoteproc: imx_rproc: Fix refcount mistake in imx_rproc_addr_init
| * 6c9ea3547f remoteproc: imx_rproc: Skip over memory region when node value is NULL
| * 83ada7dfaf remoteproc: stm32_rproc: Fix mailbox interrupts queuing
| * 9a2acb02c1 rbd: don't assume rbd_is_lock_owner() for exclusive mappings
| * dcb5620d2d dm-verity: fix dm_is_verity_target() when dm-verity is builtin
| * 47e85f7121 selftests/sigaltstack: Fix ppc64 GCC build
| * ff5bbbdee0 RDMA/iwcm: Fix a use-after-free related to destroying CM IDs
| * aa9ccec6e2 platform: mips: cpu_hwmon: Disable driver on unsupported hardware
| * bbaeff6606 watchdog/perf: properly initialize the turbo mode timestamp and rearm counter
| * 0cff6d4953 rtc: abx80x: Fix return value of nvmem callback on read
| * 625fd91308 rtc: isl1208: Fix return value of nvmem callbacks
| * 12880cc086 drm/i915/dp: Don't switch the LTTPR mode on an active link
| * a90e900f71 drm/i915/dp: Reset intel_dp->link_trained before retraining the link
| * e150f0171c drm/amd/amdgpu: Fix uninitialized variable warnings
| * 3237905352 drm/amdgpu: reset vm state machine after gpu reset(vram lost)
| * e290feb8b7 drm/dp_mst: Fix all mstb marked as not probed after suspend/resume
| * b29c910cfa drm/udl: Remove DRM_CONNECTOR_POLL_HPD
| * 9d74e50098 drm/amdgpu/sdma5.2: Update wptr registers as well as doorbell
| * 05c0fb20ca drm/i915/gt: Do not consider preemption during execlists_dequeue for gen8
| * 899857dd71 perf/x86/intel/pt: Fix a topa_entry base address calculation
| * 8f5f3db3fa perf/x86/intel/pt: Fix topa_entry base length
| * 344bb09f4f perf/x86/intel/ds: Fix non 0 retire latency on Raptorlake
| * 76d4ab96bb perf/x86/intel/uncore: Fix the bits of the CHA extended umask for SPR
| * 7d049cd134 perf stat: Fix the hard-coded metrics calculation on the hybrid
| * 104e258a00 perf: Fix event leak upon exec and file release
| * 05d3fd5995 perf: Fix event leak upon exit
| * f6be298cc1 scsi: qla2xxx: validate nvme_local_port correctly
| * 314efe3f87 scsi: qla2xxx: Complete command early within lock
| * bf192b8be1 scsi: qla2xxx: Fix flash read failure
| * 3f43a7da1e scsi: qla2xxx: Reduce fabric scan duplicate code
| * 56c0f66f86 scsi: qla2xxx: Use QP lock to search for bsg
| * 571d7f2a08 scsi: qla2xxx: Fix for possible memory corruption
| * bc78c3f944 scsi: qla2xxx: Unable to act on RSCN for port online
| * 87c25fcb95 scsi: qla2xxx: During vport delete send async logout explicitly
| * 45230f31f5 scsi: lpfc: Allow DEVICE_RECOVERY mode after RSCN receipt if in PRLI_ISSUE state
| * 13749b8d49 rtc: cmos: Fix return value of nvmem callbacks
| * ab14e199b9 mm/numa_balancing: teach mpol_to_str about the balancing mode
| * 21bd3f9e7f irqchip/imx-irqsteer: Handle runtime power management correctly
| * 8b0e8b33dc irqdomain: Fixed unbalanced fwnode get and put
| * b67552d7c6 devres: Fix memory leakage caused by driver API devm_free_percpu()
| * 7a76022d53 devres: Fix devm_krealloc() wasting memory
| * d62389073a ice: Add a per-VF limit on number of FDIR filters
| * d77250329d gve: Fix an edge case for TSO skb validity check
| * 57fe01d3d0 kobject_uevent: Fix OOB access within zap_modalias_env()
| * f7150b2d5e ASoC: amd: yc: Support mic on Lenovo Thinkpad E16 Gen 2
| * 414f5028f1 ASoC: SOF: ipc4-topology: Preserve the DMA Link ID for ChainDMA on unprepare
| * 70a9f00de7 kbuild: Fix '-S -c' in x86 stack protector scripts
| * 75243c9b18 decompress_bunzip2: fix rare decompression failure
| * 460016444a mm: fix old/young bit handling in the faulting path
| * 5a5625a83e block: fix deadlock between sd_remove & sd_release
| * 3aba1db19b ubi: eba: properly rollback inside self_check_eba
| * 17c312eb11 clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use
| * b82d43000b f2fs: use meta inode for GC of COW file
| * 271fda62e8 f2fs: use meta inode for GC of atomic file
| * 077f0e24b2 f2fs: fix return value of f2fs_convert_inline_inode()
| * e62ff092a4 f2fs: fix to don't dirty inode for readonly filesystem
| * 1789db628b f2fs: fix to force buffered IO on inline_data inode
| * b4205dfcfe ASoC: fsl: fsl_qmc_audio: Check devm_kasprintf() returned value
| * 5a33c922b2 scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds
| * 2cac0df332 fs/ntfs3: Update log->page_{mask,bits} if log->page_size changed
| * f17cbe5545 efi/libstub: Zero initialize heap allocated struct screen_info
| * ea4f779462 hostfs: fix dev_t handling
| * b579ea3516 dev/parport: fix the array out-of-bounds risk
| * a1d85fc6bd binder: fix hang of unregistered readers
| * e22b88f234 PCI: loongson: Enable MSI in LS7A Root Complex
| * a5b1cce14a PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio
| * a30211c670 PCI: dw-rockchip: Fix initial PERST# GPIO value
| * 09b15029a3 PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN
| * 23837335c3 parisc: Fix warning at drivers/pci/msi/msi.h:121
| * e91173e375 hwrng: amd - Convert PCIBIOS_* return codes to errnos
| * 8d70d61146 tools/memory-model: Fix bug in lock.cat
| * fe3a28bfeb ALSA: usb-audio: Add a quirk for Sonix HD USB Camera
| * 3e81a7a913 ALSA: usb-audio: Move HD Webcam quirk to the right place
| * 923d326f3c ALSA: usb-audio: Fix microphone sound on HD webcam.
| * 689e0780b2 ALSA: ump: Force 1 Group for MIDI1 FBs
| * ad4ab148a5 ALSA: ump: Don't update FB name for static blocks
| * 647cbf2ac6 KVM: nVMX: Request immediate exit iff pending nested event needs injection
| * e06f46fdf0 KVM: VMX: Split out the non-virtualization part of vmx_interrupt_blocked()
| * 5d104a5e99 media: ivsc: csi: don't count privacy on as error
| * b57b5c89d8 media: uvcvideo: Fix integer overflow calculating timestamp
| * 82b85a747a jbd2: avoid infinite transaction commit loop
| * b81c3758c1 jbd2: precompute number of transaction descriptor blocks
| * 7a8532b537 jbd2: make jbd2_journal_get_max_txn_bufs() internal
| * 358bc85269 media: imx-pxp: Fix ERR_PTR dereference in pxp_probe()
| * 787b7348ad media: ivsc: csi: add separate lock for v4l2 control handler
| * 04a4668b08 leds: mt6360: Fix memory leak in mt6360_init_isnk_properties()
| * 655cc01889 md/md-bitmap: fix writing non bitmap pages
| * f67774b763 leds: ss4200: Convert PCIBIOS_* return codes to errnos
| * e44eb9d83d drivers: soc: xilinx: check return status of get_api_version()
| * 4b060d1163 wifi: rtw88: usb: Fix disconnection after beacon loss
| * c755c01b3f wifi: mwifiex: Fix interface type change
| * 27be7ff9ff selftests/landlock: Add cred_transfer test
| * 6a74f52aab trace/pid_list: Change gfp flags in pid_list_fill_irq()
| * f1fd860bb2 io_uring: tighten task exit cancellations
| * c3893d9de8 ext4: make sure the first directory block is not a hole
| * 9d241b7a39 ext4: check dot and dotdot of dx_root before making dir indexed
| * 8d04ddba51 m68k: amiga: Turn off Warp1260 interrupts during boot
| * 57053b3bcf udf: Avoid using corrupted block bitmap buffer
| * d3ea49fb4a task_work: Introduce task_work_cancel() again
| * 0475bba01a task_work: s/task_work_cancel()/task_work_cancel_func()/
| * f2d6c5b8ef cifs: mount with "unix" mount option for SMB1 incorrectly handled
| * 31553d20b4 cifs: fix reconnect with SMB1 UNIX Extensions
| * 160235efb4 cifs: fix potential null pointer use in destroy_workqueue in init_cifs error path
| * 691aada756 apparmor: use kvfree_sensitive to free data->data
| * 4ccd370859 drm/amd/display: Check for NULL pointer
| * bf0ac89faf scsi: qla2xxx: Fix optrom version displayed in FDMI
| * 46d2ef2729 drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes
| * 2d209b2f86 drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes
| * 8d01e63faa io_uring/io-wq: limit retrying worker initialisation
| * 8a31e8ff48 ext2: Verify bitmap and itable block numbers before using them
| * 9c4e40b9b7 hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()
| * 2c59cc6147 ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error
| * ce477199c5 ata: libata-scsi: Do not overwrite valid sense data when CK_COND=1
| * 66fa52edd3 media: venus: fix use after free in vdec_close
| * 2b1aec0e6c char: tpm: Fix possible memory leak in tpm_bios_measurements_open()
| * 5a7c16a8b3 ata: libata-scsi: Fix offsets for the fixed format sense data
| * fcebdc0d49 fuse: verify {g,u}id mount options correctly
| * 7ca529748b sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks
| * b047898a9f NFSD: Support write delegations in LAYOUTGET
| * 46cb65e5b1 ipv6: take care of scope when choosing the src addr
| * 0aa47c27f8 ipv4: fix source address selection with route leak
| * 5c07084001 kernel: rerun task_work while freezing in get_signal()
| * c205565e0f btrfs: fix extent map use-after-free when adding pages to compressed bio
| * 5a041d25b6 af_packet: Handle outgoing VLAN packets without hardware offloading
| * 9e541c2d60 net: netconsole: Disable target before netpoll cleanup
| * 3a58c590f6 tick/broadcast: Make takeover of broadcast hrtimer reliable
| * a0495607c1 dt-bindings: thermal: correct thermal zone node name limit
| * a7ac198f8d exfat: fix potential deadlock on __exfat_get_dentry_set
| * d849da88f7 x86/efistub: Revert to heap allocated boot_params for PE entrypoint
| * c12db5aa54 x86/efistub: Avoid returning EFI_SUCCESS on error
| * 3e1e476361 mm/mglru: fix overshooting shrinker memory
| * 0038abf9dd mm: mmap_lock: replace get_memcg_path_buf() with on-stack buffer
| * d6510f234c mm/mglru: fix div-by-zero in vmpressure_calc_level()
| * 99a49b670e mm/hugetlb: fix possible recursive locking detected warning
| * c311d65129 hugetlb: force allocating surplus hugepages on mempolicy allowed nodes
| * 16896914ba landlock: Don't lose track of restrictions on cred_transfer
| * cc3368064c LoongArch: Check TIF_LOAD_WATCH to enable user space watchpoint
| * 8fe6e8cb5f sbitmap: fix io hung due to race on sbitmap_word::cleared
| * a3e4c8f8da sbitmap: use READ_ONCE to access map->word
| * e511167e65 s390/dasd: fix error checks in dasd_copy_pair_store()
| * 145bc12827 powerpc/8xx: fix size given to set_huge_pte_at()
| * acb2835abe fs/ntfs3: Keep runs for $MFT::$ATTR_DATA and $MFT::$ATTR_BITMAP
| * f8599ff1a0 fs/ntfs3: Missed error return
| * 58ebd50d22 fs/ntfs3: Fix the format of the "nocase" mount option
| * 99eb4449cf rtc: interface: Add RTC offset to alarm after fix-up
| * a3fd1a14dd nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro
| * 8acbcc5067 fs/proc/task_mmu: properly detect PM_MMAP_EXCLUSIVE per page of PMD-mapped THPs
| * cdeba6d1cf fs/proc/task_mmu: don't indicate PM_MMAP_EXCLUSIVE without PM_PRESENT
| * 92e8bd49ab fs/proc/task_mmu.c: add_to_pagemap: remove useless parameter addr
| * 3aa4d9163a fs/proc/task_mmu: indicate PM_FILE for PMD-mapped file THP
| * 09c5a17293 pinctrl: renesas: r8a779g0: Fix TPU suffixes
| * 798a182fb3 pinctrl: renesas: r8a779g0: Fix TCLK suffixes
| * 6b8ba65b09 pinctrl: renesas: r8a779g0: FIX PWM suffixes
| * 637cb96dc7 pinctrl: renesas: r8a779g0: Fix IRQ suffixes
| * 37198b25de pinctrl: renesas: r8a779g0: Fix (H)SCIF3 suffixes
| * 70b7259e6f pinctrl: renesas: r8a779g0: Fix (H)SCIF1 suffixes
| * e59258c564 pinctrl: renesas: r8a779g0: Fix FXR_TXEN[AB] suffixes
| * 8cdbe6ebfd pinctrl: renesas: r8a779g0: Fix CANFD5 suffix
| * a0bfea5e7e fs/ntfs3: Fix field-spanning write in INDEX_HDR
| * ab09df593d fs/ntfs3: Drop stray '\' (backslash) in formatting string
| * d0c3ba56fb fs/ntfs3: Correct undo if ntfs_create_inode failed
| * 53173e3865 fs/ntfs3: Replace inode_trylock with inode_lock
| * e0ed0ea337 pinctrl: freescale: mxs: Fix refcount of child
| * a9b7175140 pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails
| * cbcdfab9b9 pinctrl: ti: ti-iodelay: Drop if block with always false condition
| * 197c5c8035 pinctrl: single: fix possible memory leak when pinctrl_enable() fails
| * 99ae0689ab pinctrl: core: fix possible memory leak when pinctrl_enable() fails
| * d51dc9f949 pinctrl: rockchip: update rk3308 iomux routes
| * bcd4e15e7e fs/ntfs3: Add missing .dirty_folio in address_space_operations
| * 055f22654a fs/ntfs3: Fix getting file type
| * 2f4ddb5a17 fs/ntfs3: Missed NI_FLAG_UPDATE_PARENT setting
| * 645da4f92c fs/ntfs3: Deny getting attr data block in compressed frame
| * c4df2d4821 fs/ntfs3: Fix transform resident to nonresident for compressed files
| * f37b756a23 fs/ntfs3: Merge synonym COMPRESSION_UNIT and NTFS_LZNT_CUNIT
| * 967879893c net: dsa: b53: Limit chip-wide jumbo frame config to CPU ports
| * 50816049b1 net: dsa: mv88e6xxx: Limit chip-wide frame size config to CPU ports
| * 935dec4e42 ipv4: Fix incorrect TOS in fibmatch route get reply
| * 015d29dbe4 ipv4: Fix incorrect TOS in route get reply
| * 4afbac11f2 net: flow_dissector: use DEBUG_NET_WARN_ON_ONCE
| * 9b66bb1c58 gve: Fix XDP TX completion handling when counters overflow
| * 3dd428039e ipvs: properly dereference pe in ip_vs_add_service
| * 69b6a67f70 netfilter: nf_set_pipapo: fix initial map fill
| * 744bd92e0b netfilter: nft_set_pipapo: constify lookup fn args where possible
| * 27662b46f2 netfilter: ctnetlink: use helper function to calculate expect ID
| * 08e4d9209a bnxt_re: Fix imm_data endianness
| * ac45a09a19 RDMA: Fix netdev tracker in ib_device_set_netdev
| * 60708cb279 RDMA/core: Remove NULL check before dev_{put, hold}
| * ddeff5d66e iommu/vt-d: Fix identity map bounds in si_domain_init()
| * e22ea60d2c RDMA/hns: Fix insufficient extend DB for VFs.
| * 7bf1e00d95 RDMA/hns: Fix undifined behavior caused by invalid max_sge
| * b47c078787 RDMA/hns: Fix shift-out-bounds when max_inline_data is 0
| * 4d480e45cb RDMA/hns: Fix missing pagesize and alignment check in FRMR
| * f098ad96eb RDMA/hns: Fix unmatch exception handling when init eq table fails
| * 72bbfe07f7 RDMA/hns: Check atomic wr length
| * a60111f96e macintosh/therm_windtunnel: fix module unload.
| * 4af273068f powerpc/xmon: Fix disassembly CPU feature checks
| * 924464999a PCI: dwc: Fix index 0 incorrectly being interpreted as a free ATU slot
| * 6c1a7c00ba PCI: qcom-ep: Disable resources unconditionally during PERST# assert
| * f59ae465b2 MIPS: Octeron: remove source file executable bit
| * aa8cc8b237 clk: en7523: fix rate divider for slic and spi clocks
| * 56a118f5c7 clk: qcom: Park shared RCGs upon registration
| * 7e8e9d3d4e clk: qcom: kpss-xcc: Return of_clk_add_hw_provider to transfer the error
| * adbaa8f99c crypto: qat - extend scope of lock in adf_cfg_add_key_value_param()
| * 846ee3b60a nvmem: rockchip-otp: set add_legacy_fixed_of_cells config option
| * 90d41ebe0c net: missing check virtio
| * 30bd459366 vhost/vsock: always initialize seqpacket_allow
| * 3750e92ccc PCI: endpoint: Fix error handling in epf_ntb_epc_cleanup()
| * 0e27e2e869 PCI: endpoint: Clean up error handling in vpci_scan_bus()
| * 99b642dac2 ASoC: amd: Adjust error handling in case of absent codec device
| * 3dbfcd4d68 Input: elan_i2c - do not leave interrupt disabled on suspend failure
| * 480d281743 RDMA/device: Return error earlier if port in not valid
| * 52cfbd6d9a mtd: make mtd_test.c a separate module
| * 5e1659d71c ASoC: max98088: Check for clk_prepare_enable() error
| * 6e891b0406 powerpc/prom: Add CPU info to hardware description string later
| * e977bf4c61 hwrng: core - Fix wrong quality calculation at hw rng registration
| * 57600a7dd2 scsi: lpfc: Fix a possible null pointer dereference
| * b32e36e398 ASoC: qcom: Adjust issues in case of DT error in asoc_qcom_lpass_cpu_platform_probe()
| * 9fbfef061f RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs
| * f79ae071ba RDMA/mlx5: Use sq timestamp as QP timestamp when RoCE is disabled
| * 36812619d2 RDMA/mlx4: Fix truncated output warning in alias_GUID.c
| * f0583d6dea RDMA/mlx4: Fix truncated output warning in mad.c
| * 8f8b4da72f Input: qt1050 - handle CHIP_ID reading error
| * 48eecce940 interconnect: qcom: qcm2290: Fix mas_snoc_bimc RPM master ID
| * e2c0cc7976 clk: qcom: gpucc-sa8775p: Update wait_val fields for GPU GDSC's
| * 9d6cff2b37 clk: qcom: gpucc-sa8775p: Park RCG's clk source at XO during disable
| * 5d7c8436e3 clk: qcom: gpucc-sa8775p: Remove the CLK_IS_CRITICAL and ALWAYS_ON flags
| * e37d8e79ce clk: qcom: gcc-sa8775p: Update the GDSC wait_val fields and flags
| * 48de26f358 clk: qcom: gpucc-sm8350: Park RCG's clk source at XO during disable
| * 77765f8fc0 RDMA/cache: Release GID table even if leak is detected
| * 9cc5d640d2 usb: typec-mux: nb7vpq904m: unregister typec switch on probe error and remove
| * 5f7b12db1f ASoC: cs35l56: Accept values greater than 0 as IRQ numbers
| * 417fb74fa7 ASoc: tas2781: Enable RCA-based playback without DSP firmware download
| * 93090f08cf RDMA/mlx5: Set mkeys for dmabuf at PAGE_SIZE
| * 0b6bef6202 coresight: Fix ref leak when of_coresight_parse_endpoint() fails
| * b8bdda6811 KVM: PPC: Book3S HV: Fix the get_one_reg of SDAR
| * 74e308be5b KVM: PPC: Book3S HV: Fix the set_one_reg for MMCR3
| * d115e1759d iio: frequency: adrf6780: rm clk provider include
| * b6f7aac2b1 clk: qcom: camcc-sc7280: Add parent dependency to all camera GDSCs
| * 698f30703f clk: qcom: gcc-sc7280: Update force mem core bit for UFS ICE clock
| * 993cace4f3 scsi: ufs: mcq: Fix missing argument 'hba' in MCQ_OPR_OFFSET_n
| * 526a877c62 PCI: rcar: Demote WARN() to dev_warn_ratelimited() in rcar_pcie_wakeup()
| * 0a6f1b5fe8 PCI: keystone: Fix NULL pointer dereference in case of DT error in ks_pcie_setup_rc_app_regs()
| * 24e2490c58 PCI: keystone: Don't enable BAR 0 for AM654x
| * 764d75ce55 PCI: keystone: Relocate ks_pcie_set/clear_dbi_mode()
| * 4cd2eca07f PCI: Fix resource double counting on remove & rescan
| * 31ff8464ef iio: Fix the sorting functionality in iio_gts_build_avail_time_table
| * 0cd55c6e6d SUNRPC: Fixup gss_status tracepoint error output
| * c7e94ab3ae sparc64: Fix incorrect function signature and add prototype for prom_cif_init
| * 051a246bae leds: flash: leds-qcom-flash: Test the correct variable in init
| * 1e81d6c383 ext4: avoid writing unitialized memory to disk in EA inodes
| * 6b18e4eff3 ext4: don't track ranges in fast_commit if inode has inlined data
| * 5d52f871c7 NFSv4.1 another fix for EXCHGID4_FLAG_USE_PNFS_DS for DS server
| * 3b45d190eb SUNRPC: avoid soft lockup when transmitting UDP to reachable server.
| * 83e025da9f xprtrdma: Fix rpcrdma_reqs_reset()
| * 5b042b7b3f mfd: omap-usb-tll: Use struct_size to allocate tll
| * 05e4efd12f mfd: rsmu: Split core code into separate module
| * 3fc173fb4f perf intel-pt: Fix exclude_guest setting
| * f24f95be74 perf intel-pt: Fix aux_watermark calculation for 64-bit size
| * 645753ce91 media: venus: flush all buffers in output plane streamoff
| * 844801d980 drm/mediatek/dp: Fix spurious kfree()
| * 8f0d32c787 drm/mediatek/dp: switch to ->edid_read callback
| * c6e67df647 ext4: fix infinite loop when replaying fast_commit
| * 016accce9d drm/mediatek: Remove less-than-zero comparison of an unsigned value
| * c327a4fafe Revert "leds: led-core: Fix refcount leak in of_led_get()"
| * 4b1f303bde drm/qxl: Add check for drm_cvt_mode
| * 6b723caa4e drm/etnaviv: fix DMA direction handling for cached RW buffers
| * 7678d9b348 perf report: Fix condition in sort__sym_cmp()
| * 6b3b9c234c perf pmus: Fixes always false when compare duplicates aliases
| * fa423fe6d9 perf test: Make test_arm_callgraph_fp.sh more robust
| * 98c14a4d37 drm/msm/dpu: drop validity checks for clear_pending_flush() ctl op
| * 724ec08c6e drm/msm/dsi: set VIDEO_COMPRESSION_MODE_CTRL_WC
| * cb8aa9d2a4 leds: trigger: Unregister sysfs attributes before calling deactivate()
| * be50a293eb media: imx-jpeg: Drop initial source change event if capture has been setup
| * 176509258f drm/mediatek: Add OVL compatible name for MT8195
| * 5dbb98e7fa drm/mediatek: Turn off the layers with zero width or height
| * 7445f2ab56 drm/mediatek: Fix destination alpha error in OVL
| * 7b59d750d4 drm/mediatek: Fix XRGB setting error in Mixer
| * 35447af296 drm/mediatek: Fix XRGB setting error in OVL
| * 232c04216c drm/mediatek: Use 8-bit alpha in ETHDR
| * df55acaac4 drm/mediatek: Add missing plane settings when async update
| * 74e622f307 media: renesas: vsp1: Store RPF partition configuration per RPF instance
| * fe2025b8f9 media: renesas: vsp1: Fix _irqsave and _irq mix
| * c276c2bfd7 media: rcar-csi2: Cleanup subdevice in remove()
| * 3b6d4821dd media: rcar-csi2: Disable runtime_pm in probe error
| * ea4f6c74d4 media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2
| * c6ad6096f9 drm: zynqmp_kms: Fix AUX bus not getting unregistered
| * b2f9bfe76d drm: zynqmp_dpsub: Fix an error handling path in zynqmp_dpsub_probe()
| * afb83918e1 media: uvcvideo: Override default flags
| * 6dbe1b7697 media: uvcvideo: Add quirk for invalid dev_sof in Logitech C920
| * 7b0155fe8f media: uvcvideo: Quirk for invalid dev_sof in Logitech C922
| * 991df39499 media: uvcvideo: Disable autosuspend for Insta360 Link
| * 6377b078e5 media: i2c: imx219: fix msr access command sequence
| * 6c1358bbdd saa7134: Unchecked i2c_transfer function result fixed
| * fa6950e4da ipmi: ssif_bmc: prevent integer overflow on 32bit systems
| * 27465601ab x86/shstk: Make return uprobe work with shadow stack
| * 1c109f23b2 media: mediatek: vcodec: Handle invalid decoder vsi
| * 8736604ef5 s390/uv: Don't call folio_wait_writeback() without a folio reference
| * 79bcb67ed9 s390/mm: Convert gmap_make_secure to use a folio
| * 098ca9219c s390/mm: Convert make_page_secure to use a folio
| * 249212ceb4 media: v4l: async: Fix NULL pointer dereference in adding ancillary links
| * 88a45f9dc1 media: i2c: Fix imx412 exposure control
| * ff64b81972 media: imon: Fix race getting ictx->lock
| * f543af2e0a media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control()
| * 3d8fd92939 media: pci: ivtv: Add check for DMA map result
| * 9414381fea drm/bridge: it6505: fix hibernate to resume no display issue
| * 2918b50ad6 drm/bridge: Fixed a DP link training bug
| * c9bec33bd4 drm/panel: boe-tv101wum-nl6: Check for errors on the NOP in prepare()
| * 93296c2527 drm/panel: boe-tv101wum-nl6: If prepare fails, disable GPIO before regulators
| * 93486f4f48 drm/panel: himax-hx8394: Handle errors from mipi_dsi_dcs_set_display_on() better
| * 6d72626808 drm/amdgpu: Remove GC HW IP 9.3.0 from noretry=1
| * 67b4592a7d drm/amdgpu: Check if NBIO funcs are NULL in amdgpu_device_baco_exit
| * ae1dd0a379 drm/amdgpu: Fix memory range calculation
| * 0af2e5cb74 drm/amd/pm: Fix aldebaran pcie speed reporting
| * 8d869d02a1 drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq()
| * 4e9d95a132 drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
| * cd1885ae4c drm/amdkfd: Fix CU Masking for GFX 9.4.3
| * 5b78b88aa0 drm/arm/komeda: Fix komeda probe failing if there are no links in the secondary pipeline
| * 86d201285a drm/rockchip: vop2: Fix the port mux of VP2
| * c43046d7e7 net: bridge: mst: Check vlan state for egress decision
| * bf0ce5aa5f xdp: fix invalid wait context of page_pool_destroy()
| * e8558b800e Bluetooth: btnxpuart: Add handling for boot-signature timeout errors
| * e19f7b046a Bluetooth: btintel: Refactor btintel_set_ppag()
| * 424b424fad Bluetooth: hci_bcm4377: Use correct unit for timeouts
| * 7c1118588a selftests: forwarding: devlink_lib: Wait for udev events after reloading
| * 9d40fd516a bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT
| * 33a1321fb9 bpf: Eliminate remaining "make W=1" warnings in kernel/bpf/btf.o
| * b0ff0cd084 bna: adjust 'name' buf size of bna_tcb and bna_ccb structures
| * 5306d9a554 bpf: annotate BTF show functions with __printf
| * 67f4e66b34 selftests/resctrl: Fix closing IMC fds on error and open-code R+W instead of loops
| * 384dc568e3 selftests/resctrl: Convert perror() to ksft_perror() or ksft_print_msg()
| * ec204ab6c2 selftests/resctrl: Move run_benchmark() to a more fitting file
| * a2cb20de7a selftests/bpf: Close obj in error path in xdp_adjust_tail
| * 691ec70431 selftests/bpf: Null checks for links in bpf_tcp_ca
| * 2a789fc168 selftests/bpf: Close fd in error path in drop_on_reuseport
| * d179ebed94 locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers
| * 9a95e70726 wifi: virt_wifi: don't use strlen() in const context
| * 477163b7f5 gss_krb5: Fix the error handling path for crypto_sync_skcipher_setkey
| * 36e92b5edc wifi: virt_wifi: avoid reporting connection success with wrong SSID
| * 4b66e79650 xfrm: call xfrm_dev_policy_delete when kill policy
| * 0c92f09017 xfrm: fix netdev reference count imbalance
| * 7a0edc3d83 wifi: rtw89: Fix array index mistake in rtw89_sta_info_get_iter()
| * ef49102bfa perf/x86/intel/cstate: Fix Alderlake/Raptorlake/Meteorlake
| * 0c8a2ef120 perf: Fix default aux_watermark calculation
| * 3e43ad7df7 perf: Prevent passing zero nr_pages to rb_alloc_aux()
| * 3d5fa18ea1 perf: Fix perf_aux_size() for greater-than 32-bit size
| * 69da07e53c perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation
| * 77bf25dab8 bpftool: Mount bpffs when pinmaps path not under the bpffs
| * 878c90b54b xfrm: Export symbol xfrm_dev_state_delete.
| * 0f6b8aed5d wifi: rtl8xxxu: 8188f: Limit TX power index
| * 150b7f9a91 wifi: rtw89: 8852b: fix definition of KIP register number
| * 802de75709 netfilter: nf_tables: rise cap on SELinux secmark context
| * fed3317b2d ipvs: Avoid unnecessary calls to skb_is_gso_sctp
| * d5f53edd43 xfrm: Fix unregister netdevice hang on hardware offload.
| * c276044f26 libbpf: Checking the btf_type kind when fixing variable offsets
| * 16c5cb3280 net: fec: Fix FEC_ECR_EN1588 being cleared on link-down
| * e6c691f662 net: fec: Refactor: #define magic constants
| * fe2ead240c udf: Fix bogus checksum computation in udf_rename()
| * 67b5f10541 wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he()
| * 0675037972 wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he()
| * 51a8a235f2 wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers
| * fc5cdbe1be jump_label: Fix concurrency issues in static_key_slow_dec()
| * a1359e085d perf/x86: Serialize set_attr_rdpmc()
| * f7c2f0e0cb mlxsw: spectrum_acl: Fix ACL scale regression and firmware errors
| * 0e59c2d228 mlxsw: spectrum_acl_erp: Fix object nesting warning
| * 1936fa05a1 lib: objagg: Fix general protection fault
| * e382588b8d udf: Fix lock ordering in udf_evict_inode()
| * be953b4eb4 selftests/bpf: Check length of recv in test_sockmap
| * a9e46f9554 net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined
| * 44aa1e461c tcp: fix races in tcp_v[46]_err()
| * bc4f9c2ccd tcp: fix race in tcp_write_err()
| * ecc6836d63 tcp: add tcp_done_with_error() helper
| * c42b268bee wifi: ath12k: fix wrong definition of CE ring's base address
| * 3e77981716 wifi: ath11k: fix wrong definition of CE ring's base address
| * 586c7fb1f5 wifi: ath11k: Update Qualcomm Innovation Center, Inc. copyrights
| * 0de96f9a82 wifi: ath12k: fix firmware crash during reo reinject
| * 8126f82dab wifi: ath12k: fix invalid memory access while processing fragmented packets
| * e99d9b16ff wifi: ath12k: change DMA direction while mapping reinjected packets
| * 7797efc98e net: esp: cleanup esp_output_tail_tcp() in case of unsupported ESPINTCP
| * d8ffeb5bd5 selftests/bpf: Fix prog numbers in test_sockmap
| * f3c9773d9c bpftool: Un-const bpf_func_info to fix it for llvm 17 and newer
| * 3d4e3a37cc wifi: ath12k: Fix tx completion ring (WBM2SW) setup failure
| * cf484c84c6 wifi: ath12k: Correct 6 GHz frequency value in rx status
| * 0c1c95850d wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device
| * d027ac4a08 firmware: turris-mox-rwtm: Initialize completion before mailbox
| * 6173dd13f6 firmware: turris-mox-rwtm: Fix checking return value of wait_for_completion_timeout()
| * 2f4f8d171e firmware: turris-mox-rwtm: Do not complete if there are no waiters
| * 9312a63da7 vmlinux.lds.h: catch .bss..L* sections into BSS")
| * e6c9eca327 ARM: spitz: fix GPIO assignment for backlight
| * b8cdefdaa5 m68k: cmpxchg: Fix return value for default case in __arch_xchg()
| * 13a71384ae cpufreq/amd-pstate: Fix the scaling_max_freq setting on shared memory CPPC systems
| * 72ff9d2696 arm64: dts: qcom: sm6350: Add missing qcom,non-secure-domain property
| * c2e8bdc0d0 arm64: dts: rockchip: fixes PHY reset for Lunzn Fastrhino R68S
| * 78beab7a91 arm64: dts: rockchip: disable display subsystem for Lunzn Fastrhino R6xS
| * d156865966 arm64: dts: rockchip: remove unused usb2 nodes for Lunzn Fastrhino R6xS
| * 215b1aaa73 arm64: dts: rockchip: fix pmu_io supply for Lunzn Fastrhino R6xS
| * d523659f7a arm64: dts: rockchip: fix usb regulator for Lunzn Fastrhino R6xS
| * bca0d0102f arm64: dts: rockchip: fix regulator name for Lunzn Fastrhino R6xS
| * becbe98cee arm64: dts: rockchip: Add missing power-domains for rk356x vop_mmu
| * da8ea49d00 x86/xen: Convert comma to semicolon
| * 2e67d5cdc3 arm64: dts: imx8mp: Fix pgc vpu locations
| * 713750aadb arm64: dts: imx8mp: add HDMI power-domains
| * 0150dbc01d arm64: dts: imx8mp: Fix pgc_mlmix location
| * 1beddcda55 arm64: dts: imx8mp: Add NPU Node
| * 1667b27562 m68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages
| * d5cfd8da7e arm64: dts: renesas: r9a07g054: Add missing hypervisor virtual timer IRQ
| * fc46ee6624 arm64: dts: renesas: r9a07g044: Add missing hypervisor virtual timer IRQ
| * 35dcc7e3bd arm64: dts: renesas: r9a07g043u: Add missing hypervisor virtual timer IRQ
| * ad15922975 arm64: dts: renesas: r8a779g0: Add missing hypervisor virtual timer IRQ
| * 880c61a7ca arm64: dts: renesas: r8a779f0: Add missing hypervisor virtual timer IRQ
| * 5baa02d5c0 arm64: dts: renesas: r8a779a0: Add missing hypervisor virtual timer IRQ
| * 878177c7dd arm64: dts: rockchip: Fix mic-in-differential usage on rk3568-evb1-v10
| * e15757553b arm64: dts: rockchip: Fix mic-in-differential usage on rk3566-roc-pc
| * 3f2f40a1d1 arm64: dts: rockchip: Drop invalid mic-in-differential on rk3568-rock-3a
| * 3f75eb9f99 arm64: dts: amlogic: setup hdmi system clock
| * fbb1f7ab0b arm64: dts: amlogic: add power domain to hdmitx
| * b44836994a arm64: dts: amlogic: gx: correct hdmi clocks
| * 3cfa05f9e1 arm64: dts: mediatek: mt8183-kukui-jacuzzi: Add ports node for anx7625
| * 0580ecfcaf arm64: dts: mediatek: mt8183-kukui: Fix the value of `dlg,jack-det-rate` mismatch
| * db85bab1a4 arm64: dts: mediatek: mt7622: fix "emmc" pinctrl mux
| * d014162a3e arm64: dts: mediatek: mt8192-asurada: Add off-on-delay-us for pp3300_mipibrdg
| * 94a6cd9f27 arm64: dts: mediatek: mt8183-kukui: Drop bogus output-enable property
| * 440a052ff9 arm64: dts: mediatek: mt8195: Fix GPU thermal zone name for SVS
| * 80d8afcaec ARM: dts: imx6qdl-kontron-samx6i: fix PCIe reset polarity
| * 5b2db0b42f ARM: dts: imx6qdl-kontron-samx6i: fix SPI0 chip selects
| * e71469e2af ARM: dts: imx6qdl-kontron-samx6i: fix board reset
| * 3b96e42127 ARM: dts: imx6qdl-kontron-samx6i: fix PHY reset
| * e139b742a7 ARM: dts: imx6qdl-kontron-samx6i: fix phy-mode
| * 7120acc1a1 arm64: dts: amlogic: sm1: fix spdif compatibles
| * 6652725574 arm64: dts: rockchip: Increase VOP clk rate on RK3328
| * d48f3bb431 soc: qcom: pdr: fix parsing of domains lists
| * 3e815626d7 soc: qcom: pdr: protect locator_addr with the main mutex
| * aad41f4c16 soc: qcom: icc-bwmon: Fix refcount imbalance seen during bwmon_remove
| * fab4a7b234 arm64: dts: qcom: qdu1000: Add secure qfprom node
| * 7267936f3c arm64: dts: qcom: qdu1000-idp: drop unused LLCC multi-ch-bit-off
| * 051ac32bed arm64: dts: ti: k3-am62-verdin: Drop McASP AFIFOs
| * 7eb34eae24 arm64: dts: ti: k3-am625-beagleplay: Drop McASP AFIFOs
| * 22646c52e4 arm64: dts: ti: k3-am62x: Drop McASP AFIFOs
| * c22649e217 memory: fsl_ifc: Make FSL_IFC config visible and selectable
| * 21dec02291 OPP: ti: Fix ti_opp_supply_probe wrong return values
| * d94eb194aa cpufreq: ti-cpufreq: Handle deferred probe with dev_err_probe()
| * 4b49314366 arm64: dts: qcom: qrb4210-rb2: make L9A always-on
| * b6271fb067 ARM: dts: stm32: Add arm,no-tick-in-suspend to STM32MP15xx STGEN timer
| * 0fffc2e1bf ARM: dts: sunxi: remove duplicated entries in makefile
| * a96e60a6ea soc: xilinx: rename cpu_number1 to dummy_cpu_number
| * adc0b5c113 arm64: dts: qcom: sa8775p: mark ethernet devices as DMA-coherent
| * 33fb3e38c9 arm64: dts: qcom: msm8996: specify UFS core_clk frequencies
| * a86a568567 arm64: dts: rockchip: Update WIFi/BT related nodes on rk3308-rock-pi-s
| * 0c4c1b7daf arm64: dts: rockchip: Add mdio and ethernet-phy nodes to rk3308-rock-pi-s
| * 30ee9e5ecc arm64: dts: rockchip: Add pinctrl for UART0 to rk3308-rock-pi-s
| * 96155dc8c9 arm64: dts: rockchip: Add sdmmc related properties on rk3308-rock-pi-s
| * 459f84f8ee soc: qcom: rpmh-rsc: Ensure irqs aren't disabled by rpmh_rsc_send_data() callers
| * 762384e9cc soc: qcom: pmic_glink: Handle the return value of pmic_glink_init
| * 4bf50c7dcd arm64: dts: qcom: msm8998: enable adreno_smmu by default
| * 23e44279f2 arm64: dts: qcom: sdm850-lenovo-yoga-c630: fix IPA firmware path
| * d74b0b6c67 arm64: dts: qcom: msm8996-xiaomi-common: drop excton from the USB PHY
| * 4d460ea917 arm64: dts: qcom: sm8450: add power-domain to UFS PHY
| * bfe998470d arm64: dts: qcom: sm8350: add power-domain to UFS PHY
| * f43134d618 arm64: dts: qcom: sm8250: add power-domain to UFS PHY
| * cf2ca13549 arm64: dts: qcom: sm8250: switch UFS QMP PHY to new style of bindings
| * 928691e768 arm64: dts: qcom: sm6350: add power-domain to UFS PHY
| * 3832f6d4f4 arm64: dts: qcom: sm6115: add power-domain to UFS PHY
| * 15a0aec207 arm64: dts: qcom: sdm845: add power-domain to UFS PHY
| * 23ce7878ed arm64: dts: qcom: sc8180x: add power-domain to UFS PHY
| * 9a39bcdaa6 arm64: dts: qcom: sc8180x: switch UFS QMP PHY to new style of bindings
| * 72a9e5ffd4 arm64: dts: qcom: sc8180x: Correct PCIe slave ports
| * 5bf6767c13 hwmon: (max6697) Fix swapped temp{1,8} critical alarms
| * feb57c9a4f hwmon: (max6697) Fix underflow when writing limit attributes
| * 0804bd05f3 pwm: atmel-tcb: Fix race condition and convert to guards
| * 390645c5c1 drm/meson: fix canvas release in bind function
| * 908ce7f568 nvmet-auth: fix nvmet_auth hash error handling
| * 386171ae7f pwm: stm32: Always do lazy disabling
| * 0089366270 md: Don't wait for MD_RECOVERY_NEEDED for HOT_REMOVE_DISK ioctl
| * 2a6849a2b6 block/mq-deadline: Fix the tag reservation code
| * b2c67e1f80 block: Call .limit_depth() after .hctx has been set
| * ff36cc0bc6 hwmon: (adt7475) Fix default duty on fan is disabled
| * 96226fbed5 cgroup/cpuset: Prevent UAF in proc_cpuset_show()
| * aea95c68b7 kernfs: Convert kernfs_path_from_node_locked() from strlcpy() to strscpy()
| * c8a36455a0 x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos
| * 56d4e76223 x86/pci/xen: Fix PCIBIOS_* return code handling
| * 12b24c1cee x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling
| * f6c475c3dc x86/of: Return consistent error type from x86_of_pci_irq_enable()
| * f04da10d2c hfsplus: fix to avoid false alarm of circular locking
| * c8cae1c194 x86/kconfig: Add as-instr64 macro to properly evaluate AS_WRUSS
| * 23a19655fb block: initialize integrity buffer to zero before writing it to media
| * 1cfdfb965e ubd: untagle discard vs write zeroes not support handling
| * 3236c24532 ubd: refactor the interrupt handler
| * b37d68ab60 platform/chrome: cros_ec_debugfs: fix wrong EC message version
| * 2d0738a832 md: fix deadlock between mddev_suspend and flush bio
| * 43b75d5439 rcu/tasks: Fix stale task snaphot for Tasks Trace
| * c25ae63de6 EDAC, i10nm: make skx_common.o a separate module
| * 754b569bc8 spi: atmel-quadspi: Add missing check for clk_prepare
| * df8e2a3eab spi: spi-microchip-core: Fix the number of chip selects supported
| * 310377719c powerpc/configs: Update defconfig with now user-visible CONFIG_FSL_IFC
* | 9340848802 Merge branch 'android15-6.6' into android15-6.6-lts
* | 184aacd9f9 ANDROID: ABI: virtual_device update ABI and symbol list
* | a663c3dcf2 ANDROID: ABI: Clean up symbol/ABI list for aarch64_virtual_device
* | 0218a9334c Merge 6.6.43 into android15-6.6-lts
|\|
| * 58b0425ff5 Linux 6.6.43
| * aa6a5704ca tap: add missing verification for short frame
| * d5ad89b7d0 tun: add missing verification for short frame
| * 73ae349534 filelock: Fix fcntl/close race recovery compat path
| * 2c71ab5270 ALSA: seq: ump: Skip useless ports for static blocks
| * 0dbe2b3bb3 ALSA: pcm_dmaengine: Don't synchronize DMA channel when DMA is paused
| * 6782e4f60e arm64: dts: qcom: sdm630: Disable SS instance in Parkmode for USB
| * 9583ad410f arm64: dts: qcom: ipq6018: Disable SS instance in Parkmode for USB
| * b96d67d873 arm64: dts: qcom: sm6350: Disable SS instance in Parkmode for USB
| * 2a3ce77c0a arm64: dts: qcom: msm8996: Disable SS instance in Parkmode for USB
| * 104456f7f4 arm64: dts: qcom: qrb4210-rb2: switch I2C2 to i2c-gpio
| * d80ab01970 ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360
| * 15e218ab0a ALSA: hda/realtek: Enable headset mic on Positivo SU C1400
| * 9f0fb11264 usb: gadget: midi2: Fix incorrect default MIDI2 protocol setup
| * 6ae7265a7b fs/ntfs3: Validate ff offset
| * f3124d51e4 fs/ntfs3: Add a check for attr_names and oatbl
| * 17440dbc66 jfs: don't walk off the end of ealist
| * e05a24289d ocfs2: add bounds checking to ocfs2_check_dir_entry()
| * 4edb0a84e6 drm/amdgpu: Fix signedness bug in sdma_v4_0_process_trap_irq()
* | b935ae8fd4 ANDROID: Build GKI with CONFIG_KUNIT=m
* | 6e69248f50 Revert "spi: Fix OCTAL mode support"
* | 1025aa8a54 Merge 6.6.42 into android15-6.6-lts
|\|
| * 31cf7ebee8 Linux 6.6.42
| * 9e67589a4a cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie()
| * 9dd7f56638 cachefiles: fix slab-use-after-free in fscache_withdraw_volume()
| * 5c5a577a2c netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume()
| * 6f1fc7fea4 wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL
| * ba780cb0cf wifi: mac80211: disable softirqs for queued frame handling
| * de3994a44e wifi: cfg80211: wext: set ssids=NULL for passive scans
| * 9ca15d7699 of/irq: Disable "interrupt-map" parsing for PASEMI Nemo
| * b0fc1bd251 Bluetooth: L2CAP: Fix deadlock
| * 16380f52b7 mm: page_ref: remove folio_try_get_rcu()
| * 170ce55eff ARM: 9324/1: fix get_user() broken with veneer
| * c15682ed16 cifs: fix noisy message on copy_file_range
| * 05ffaf48e2 ALSA: hda: Use imply for suggesting CONFIG_SERIAL_MULTI_INSTANTIATE
| * dcd61f34f6 spi: mux: set ctlr->bits_per_word_mask
| * e41db26543 selftests/bpf: Extend tcx tests to cover late tcx_entry release
| * f08956d8e0 hfsplus: fix uninit-value in copy_name
| * 54f137ee27 selftests/vDSO: fix clang build errors and warnings
| * 69f6e9be87 selftest/timerns: fix clang build failures for abs() calls
| * 8a3f2ad55f ASoC: SOF: Intel: hda-pcm: Limit the maximum number of periods by MAX_BDL_ENTRIES
| * d59ccdc4ab ksmbd: return FILE_DEVICE_DISK instead of super magic
| * bd3ca9bb56 spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices
| * 55f6da7051 riscv: stacktrace: fix usage of ftrace_graph_ret_addr()
| * b0fe6e72e6 drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus
| * d454b32bd2 wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK
| * c09e07857c fs: better handle deep ancestor chains in is_subdir()
| * f13c96e0e3 drm/radeon: check bo_va->bo is non-NULL before using it
| * 607731f315 drm/amd/display: Fix refresh rate range for some panel
| * 6ecf239f71 drm/amd/display: Account for cursor prefetch BW in DML1 mode support
| * 531e7852fb drm/amd/display: Add refresh rate range check
| * a2cfe94aa1 erofs: ensure m_llen is reset to 0 if metadata is invalid
| * b803f30ea2 bluetooth/l2cap: sync sock recv cb and release
| * fb02ce1686 Bluetooth: btnxpuart: Enable Power Save feature on startup
| * d6cbce1837 Bluetooth: hci_core: cancel all works upon hci_unregister_dev()
| * 58911b7abe tee: optee: ffa: Fix missing-field-initializers warning
| * 945658c211 scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed
| * f23c3d1ca9 powerpc/eeh: avoid possible crash when edev->pdev changes
| * e512a59b47 powerpc/pseries: Whitelist dtl slub object for copying to userspace
| * cf3f20313a net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD()
| * 30ac8d5e1b net: usb: qmi_wwan: add Telit FN912 compositions
| * 16cb62c3a6 ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA
| * c305a708bc ALSA: dmaengine_pcm: terminate dmaengine before synchronize
| * 85b47cd515 ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx
| * 802a745caf ALSA: PCM: Allow resume only for suspended streams
| * 267c61c4af ibmvnic: Add tx check to prevent skb leak
| * f88aeff5a1 btrfs: qgroup: fix quota root leak after quota disable failure
| * 9f25bd7013 platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB
| * 477112af1d platform/x86: lg-laptop: Change ACPI device id
| * c98123cedb platform/x86: lg-laptop: Remove LGEX0815 hotkey handling
| * cd337341cf platform/x86: wireless-hotkey: Add support for LG Airplane Button
| * 939f33bf73 platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources
| * 0a31b3fdc7 s390/sclp: Fix sclp_init() cleanup on failure
| * 38608d072f octeontx2-pf: Fix coverity and klockwork issues in octeon PF driver
| * e2ecdddca8 gpio: pca953x: fix pca953x_irq_bus_sync_unlock race
| * e4fca9acc7 can: kvaser_usb: fix return value for hif_usb_send_regout
| * 528466f921 Input: ads7846 - use spi_device_id table
| * e7ba46682a nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA.
| * 21cb9c4f5b ASoC: rt722-sdca-sdw: add debounce time for type detection
| * e18dfef2b5 ASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback
| * 9d944d4aa9 ASoC: ti: omap-hdmi: Fix too long driver name
| * 02c6dd05b0 ASoC: ti: davinci-mcasp: Set min period size using FIFO config
| * 3b0b50a695 ALSA: dmaengine: Synchronize dma channel after drop()
| * e3394dcb81 bytcr_rt5640 : inverse jack detect for Archos 101 cesium
| * 1a13bf4d6a ASoC: topology: Do not assign fields that are already set
| * ab5a6208b4 ASoC: topology: Fix references to freed memory
| * 423b0c32b0 Input: xpad - add support for ASUS ROG RAIKIRI PRO
| * 57534d8368 ASoC: rt722-sdca-sdw: add silence detection register as volatile
| * 14f445365f Input: i8042 - add Ayaneo Kun to i8042 quirk table
| * 66b1dbc55d Input: elantech - fix touchpad state on resume for Lenovo N24
| * be7b66d360 mips: fix compat_sys_lseek syscall
| * 94288fc3a1 ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE
| * 86a6a3964f drm/amdgpu: Indicate CU havest info to CP
| * c436a2351c selftests: openvswitch: Set value to nla flags.
| * b235848f40 cpumask: limit FORCE_NR_CPUS to just the UP case
| * 4bcb8e4c9f spi: Fix OCTAL mode support
| * 9155f76544 ALSA: hda/realtek: Add more codec ID to no shutup pins list
| * 808e92e8c2 drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency
| * 82c7a4cf14 KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group()
| * 1d45fff5da ALSA: hda/realtek: Support Lenovo Thinkbook 16P Gen 5
| * fe9644efd8 wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
| * 4871dd2f71 ALSA: hda: cs35l56: Fix lifecycle of codec pointer
| * 10967873b8 nvmet: always initialize cqe.result
| * ae84383c96 nvme: avoid double free special payload
| * b241d17aa1 drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time
| * 97f71343f7 drm: panel-orientation-quirks: Add quirk for Aya Neo KUN
| * 208fde6de0 drm/exynos: dp: drop driver owner initialization
| * 24be4091b8 iomap: Fix iomap_adjust_read_range for plen calculation
| * 53e0b76603 mei: demote client disconnect warning on suspend to debug
| * bd56b910fa fs/file: fix the check in find_next_fd()
| * 7c6ec0827c cachefiles: make on-demand read killable
| * c32ee78fbc cachefiles: Set object to close if ondemand_id < 0 in copen
| * 36d845ccd7 cachefiles: add consistency check for copen/cread
| * 3146a6af82 nfs: don't invalidate dentries on transient errors
| * e3adf9987e nfs: Avoid flushing many pages with NFS_FILE_SYNC
| * 8cebc59d6e nfs: propagate readlink errors in nfs_symlink_filler
| * b980906993 NFSv4: Fix memory leak in nfs4_set_security_label
| * c7734ddaea HID: Ignore battery for ELAN touchscreens 2F2C and 4116
| * dd93f857ec input: Add support for "Do Not Disturb"
| * 39bd2e1c79 input: Add event code for accessibility key
| * d9be8eeab0 kconfig: remove wrong expr_trans_bool()
| * 737161b438 kconfig: gconf: give a proper initial state to the Save button
| * 08f03186b9 null_blk: fix validation of block size
| * 69a978c7fe arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process
| * 522c3336c2 ila: block BH in ila_output()
| * 127707132f net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input()
| * 9d88edbe3d Input: silead - Always support 10 fingers
| * b0f79bda55 of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw()
| * c9edeb94d1 selftests/futex: pass _GNU_SOURCE without a value to the compiler
| * b182dede1a selftests/openat2: Fix build warnings on ppc64
| * 91bf063423 selftests: cachestat: Fix build warnings on ppc64
| * a1834cfcdf wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan()
| * f5e6b9d765 wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill
| * 4ae145f29f wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option
| * ef227372b6 wifi: iwlwifi: mvm: handle BA session teardown in RF-kill
| * 2d3381e884 wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd
| * e25fae9800 wifi: iwlwifi: mvm: remove stale STA link data during restart
| * e34b6aa969 wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup
| * c084a02e3e wifi: cfg80211: fix 6 GHz scan request building
| * 92df1422ba wifi: mac80211: handle tasklet frames before stopping
| * 8936ae4913 wifi: mac80211: apply mcast rate only if interface is up
| * dade6785c4 wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata
| * 2a6da27d09 tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs
| * a0156b837e ACPI: EC: Avoid returning AE_OK on errors in address space handler
| * 5e49b9b505 ACPI: EC: Abort address space access upon error
| * 113fa39675 efi/libstub: zboot.lds: Discard .discard sections
| * b76194fc3b scsi: qedf: Set qed_slowpath_params to zero before use
| * e949e39acd scsi: qedf: Wait for stag work during unload
| * 80c971d99c scsi: qedf: Don't process stag work during unload and recovery
| * 74fac04ec2 scsi: sr: Fix unintentional arithmetic wraparound
| * c28ba74c67 scsi: core: alua: I/O errors for ALUA state transitions
| * 5f5d0799eb filelock: Remove locks reliably when fcntl/close race is detected
* | 0f39131ed5 BACKPORT: UPSTREAM: sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath
* | ff00229c77 Revert "sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath"
* | c572fee3c0 Merge 6.6.41 into android15-6.6-lts
|\|
| * 2eaf5c0d81 Linux 6.6.41
| * eb7641fae2 i2c: rcar: fix error code in probe()
| * e243c1176d kbuild: Make ld-version.sh more robust against version string changes
| * dae3543db8 x86/bhi: Avoid warning in #DB handler due to BHI mitigation
| * 2f5f0eb016 x86/entry/64: Remove obsolete comment on tracing vs. SYSRET
| * f73481d9a8 x86/entry: Rename ignore_sysret()
| * 557d62e49e i2c: rcar: clear NO_RXDMA flag after resetting
| * bc6632549c i2c: testunit: avoid re-issued work after read message
| * 4d2d0491b3 i2c: rcar: ensure Gen3+ reset does not disturb local targets
| * 988c313318 i2c: rcar: introduce Gen4 devices
| * 4c029f04e4 i2c: rcar: reset controller is mandatory for Gen3+
| * ff3d2cf3be i2c: mark HostNotify target address as used
| * 5bfec9c2b8 i2c: rcar: bring hardware to known state when probing
| * c1bf973f57 btrfs: tree-checker: add type and sequence check for inline backrefs
| * 448a2500d1 sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath
| * 4dc200e315 ext4: avoid ptr null pointer dereference
| * 60f6151437 nilfs2: fix kernel bug on rename operation of broken directory
| * 6b05ad408f selftests/net: fix gro.c compilation failure due to non-existent opt_ipproto_off
| * 11078e2d11 mm/damon/core: merge regions aggressively when max_nr_regions is unmet
| * 93893eacb3 mm/shmem: disable PMD-sized page cache if needed
| * 5e305b5986 misc: fastrpc: Restrict untrusted app to attach to privileged PD
| * aeab0a85bb misc: fastrpc: Fix ownership reassignment of remote heap
| * 8b8b82dcf3 misc: fastrpc: Fix memory leak in audio daemon attach operation
| * ba602c70c7 misc: fastrpc: Copy the complete capability structure to user
| * 143982d84e misc: fastrpc: Avoid updating PD type for capability request
| * 2b2fb816af misc: fastrpc: Fix DSP capabilities request
| * b6a5c681d7 wireguard: send: annotate intentional data race in checking empty queue
| * f89f44e414 wireguard: queueing: annotate intentional data race in cpu round robin
| * 6638a203ab wireguard: allowedips: avoid unaligned 64-bit memory accesses
| * 6a43cd61b8 wireguard: selftests: use acpi=off instead of -no-acpi for recent QEMU
| * e408184365 cpufreq: Allow drivers to advertise boost enabled
| * 2ca2fd474d cpufreq: ACPI: Mark boost policy as enabled when setting boost
| * 08985dd4d1 ACPI: processor_idle: Fix invalid comparison with insertion sort for latency
| * 9525af1f58 libceph: fix race between delayed_work() and ceph_monc_stop()
| * f0cc5f7cb4 pmdomain: qcom: rpmhpd: Skip retention level for Power Domains
| * cd94cac406 Fix userfaultfd_api to return EINVAL as expected
| * b5634da5d1 ALSA: hda/realtek: Limit mic boost on VAIO PRO PX
| * 77f64c3df4 ALSA: hda/realtek: Enable Mute LED on HP 250 G7
| * 9e6b110af0 ALSA: hda/realtek: add quirk for Clevo V5[46]0TU
| * 23efa74cfe tty: serial: ma35d1: Add a NULL check for of_node
| * 639868f1cb platform/x86: toshiba_acpi: Fix array out-of-bounds access
| * c01f9a6461 nvmem: core: only change name to fram for current attribute
| * c3debec577 nvmem: meson-efuse: Fix return value of nvmem callbacks
| * 5f97b616e2 nvmem: rmem: Fix return value of rmem_read()
| * 25712a3791 arm64: dts: qcom: sc8280xp-x13s: fix touchscreen power on
| * 1e35301428 arm64: dts: qcom: sa8775p: Correct IRQ number of EL2 non-secure physical timer
| * 618edb821a iio: trigger: Fix condition for own trigger
| * 9e84b1ba5c ksmbd: discard write access to the directory open
| * a0c42ddd09 mm/filemap: make MAX_PAGECACHE_ORDER acceptable to xarray
| * 06b5a69c27 mm/filemap: skip to create PMD-sized page cache if needed
| * 28acd531c9 mm: vmalloc: check if a hash-index is in cpu_possible_mask
| * 794fa52b94 s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()
| * 9339641b99 xhci: always resume roothubs if xHC was reset during resume
| * a3d83021fd hpet: Support 32-bit userspace
| * 814a99ba69 misc: microchip: pci1xxxx: Fix return value of nvmem callbacks
| * 647d61aef1 USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor
| * d1205033e9 usb: gadget: configfs: Prevent OOB read/write in usb_string_copy()
| * add279faeb usb: dwc3: pci: add support for the Intel Panther Lake
| * 20836c953d USB: Add USB_QUIRK_NO_SET_INTF quirk for START BP-850k
| * 5ae6a64f18 USB: serial: mos7840: fix crash on resume
| * 511751182c USB: serial: option: add Rolling RW350-GL variants
| * 8ee097aecf USB: serial: option: add Netprisma LCUK54 series modules
| * 4e8c0883a2 USB: serial: option: add support for Foxconn T99W651
| * 9201d38054 USB: serial: option: add Fibocom FM350-GL
| * 8d320260f0 USB: serial: option: add Telit FN912 rmnet compositions
| * 5aaeb60b91 USB: serial: option: add Telit generic core-dump composition
| * 32b96db307 net: ks8851: Fix potential TX stall after interface reopen
| * 80ece00137 net: ks8851: Fix deadlock with the SPI chip variant
| * dfcdd7f89e tcp: avoid too many retransmit packets
| * b75f281bdd tcp: use signed arithmetic in tcp_rtx_probe0_timed_out()
| * 1e116c18e3 Revert "sched/fair: Make sure to try to detach at least one movable task"
| * 87f3ceb2b1 cifs: fix setting SecurityFlags to true
| * 8665fb96a3 octeontx2-af: fix issue with IPv4 match for RSS
| * 0207c79888 octeontx2-af: fix issue with IPv6 ext match for RSS
| * 2c41eaa8fb octeontx2-af: fix detection of IP layer
| * d24b124a96 octeontx2-af: fix a issue with cpt_lf_alloc mailbox
| * 22b864f7d7 octeontx2-af: replace cpt slot with lf id on reg write
| * 0e17926622 i40e: fix: remove needless retries of NVM update
| * cf3c2372d6 ARM: davinci: Convert comma to semicolon
| * 392cff2f86 firmware: cs_dsp: Use strnlen() on name fields in V1 wmfw files
| * 8246bbf818 ASoC: SOF: Intel: hda: fix null deref on system suspend entry
| * 76ea8e13aa firmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers
| * 3a9cd924ae firmware: cs_dsp: Validate payload length before processing block
| * 90ab191b7d firmware: cs_dsp: Return error if block header overflows file
| * 9c9877a96e firmware: cs_dsp: Fix overflow checking of wmfw header
| * 6bd5afff39 arm64: dts: qcom: sc8180x: Fix LLCC reg property again
| * 21379c6fc8 s390: Mark psw in __load_psw_mask() as __unitialized
| * d6c686c01c net, sunrpc: Remap EPERM in case of connection failure in xs_tcp_setup_socket
| * 799a34901b net/sched: Fix UAF when resolving a clash
| * c5fd77ca13 udp: Set SOCK_RCU_FREE earlier in udp_lib_get_port().
| * feeeeb4c0a ethtool: netlink: do not return SQI value if link is down
| * 099502ca41 ppp: reject claimed-as-LCP but actually malformed packets
| * 853f8cd459 net: ethernet: mtk-star-emac: set mac_managed_pm when probing
| * 9369830518 bpf: Fail bpf_timer_cancel when callback is being cancelled
| * e97c862e0b bpf: replace bpf_timer_init with a generic helper
| * 5910035674 bpf: make timer data struct more generic
| * e65a49b948 bpf: fix order of args in call to bpf_map_kvcalloc
| * 9d23909ae0 net: ethernet: lantiq_etop: fix double free in detach
| * 5266302cb2 i40e: Fix XDP program unloading while removing the driver
| * 7e9092d7ac net: fix rc7's __skb_datagram_iter()
| * 13bf7ce312 octeontx2-af: Fix incorrect value output on error path in rvu_check_rsrc_availability()
| * b180739b45 skmsg: Skip zero length skb in sk_msg_recvmsg
| * 0370f66700 net: phy: microchip: lan87xx: reinit PHY after cable test
| * 230bb13650 bpf: Fix too early release of tcx_entry
| * 124886cf20 tcp: fix incorrect undo caused by DSACK of TLP retransmit
| * e304a67514 net: bcmasp: Fix error code in probe()
| * cbfc844cbe vfs: don't mod negative dentry count when on shrinker list
| * f71ebe7b3e fs/dcache: Re-use value stored to dentry->d_flags instead of re-reading
| * 432b06b69d filelock: fix potential use-after-free in posix_lock_inode
| * cae91b5cf9 dsa: lan9303: Fix mapping between DSA port number and PHY address
| * 6bb6bd3dd6 cachefiles: add missing lock protection when polling
| * de045a82e1 cachefiles: cyclic allocation of msg_id to avoid reuse
| * d3179bae72 cachefiles: wait for ondemand_object_worker to finish when dropping object
| * ed60c1a82d cachefiles: cancel all requests for the object that is being dropped
| * 32e0a9a799 cachefiles: stop sending new request when dropping object
| * 1894386434 cachefiles: narrow the scope of triggering EPOLLIN events in ondemand mode
| * a04cc7f00d cachefiles: propagate errors from vfs_getxattr() to avoid infinite loop
| * f476dffc52 vfio/pci: Init the count variable in collecting hot-reset devices
| * c3111b3cf3 scsi: ufs: core: Fix ufshcd_abort_one racing issue
| * bed0896008 scsi: ufs: core: Fix ufshcd_clear_cmd racing issue
| * 797323d1cf mm: prevent derefencing NULL ptr in pfn_section_valid()
| * fc19e23168 Compiler Attributes: Add __uninitialized macro
* | fc5715cc5a Revert "vhost_task: Handle SIGKILL by flushing work and exiting"
* | 96c1873721 Merge 6.6.40 into android15-6.6-lts
|\|
| * 1a515bd58d Linux 6.6.40
| * 69bed24c82 Revert "usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB"
* | 592c034117 Merge 6.6.39 into android15-6.6-lts
|\|
| * 2ced7518a0 Linux 6.6.39
| * 95b1362540 nilfs2: fix incorrect inode allocation from reserved inodes
| * 9ac895a881 null_blk: Do not allow runt zone with zone capacity smaller then zone size
| * 1ba66b1211 drm/amdgpu: silence UBSAN warning
| * 49458c0975 ALSA: ump: Set default protocol when not given explicitly
| * d4b55b1379 spi: cadence: Ensure data lines set to low during dummy-cycle period
| * 056478b432 nfc/nci: Add the inconsistency check between the input data length and count
| * 9db55f6438 kbuild: fix short log for AS in link-vmlinux.sh
| * 5502c1f1d0 nvmet: fix a possible leak when destroy a ctrl during qp establishment
| * f61cea47ad platform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro
| * 487dc376a8 platform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW 11.6" tablet
| * fc525ed8cb regmap-i2c: Subtract reg size from max_write
| * b955b47905 nvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset
| * 9258d79597 connector: Fix invalid conversion in cn_proc.h
| * 39d31edcf9 dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails
| * e6e1eda06b nvme-multipath: find NUMA path only for online numa-node
| * 8f174c5db1 vhost-scsi: Handle vhost_vq_work_queue failures for events
| * 4d1de71e63 ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897
| * aa8b1d6073 fs/ntfs3: Mark volume as dirty if xattr is broken
| * 92e494a756 i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr
| * 3aeea9e127 clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg
| * 66b6da0cc6 clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs
| * 0fcb94e0ee clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents
| * 583bea0902 media: dw2102: fix a potential buffer overflow
| * 28d0ecc52f ima: Avoid blocking in RCU read-side critical section
| * cecffd9e3c arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on Quartz64 Model B
| * f1313ea92f bnx2x: Fix multiple UBSAN array-index-out-of-bounds
| * 7a8b1cfcb2 net: stmmac: dwmac-qcom-ethqos: fix error array size
| * 45a4aef063 mtd: rawnand: rockchip: ensure NVDDR timings are rejected
| * dbbc4cf0d5 mtd: rawnand: Bypass a couple of sanity checks during NAND identification
| * 70bb95e034 mtd: rawnand: Fix the nand_read_data_op() early check
| * 0fd8ce12f9 mtd: rawnand: Ensure ECC configuration is propagated to upper layers
| * c6036baea4 powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0
| * d10e3c3900 powerpc/pseries: Fix scv instruction crash with kexec
| * 14c78d69db clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without common
| * ba02424852 clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag
| * 33de7c47a1 drm: panel-orientation-quirks: Add quirk for Valve Galileo
| * 004b7fe6ca drm/amdgpu/atomfirmware: silence UBSAN warning
| * 744b229f09 drm/nouveau: fix null pointer dereference in nouveau_connector_get_modes
| * f6620df12c Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again"
| * dd0aa13fda fsnotify: Do not generate events for O_PATH file descriptors
| * 07ce8ad4eb can: kvaser_usb: Explicitly initialize family in leafimx driver_info struct
| * e2d8aa4c76 Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm reboot
| * a635d93ad9 Bluetooth: hci_bcm4377: Fix msgid release
| * 155d9c9ed1 scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add()
| * 72aa369e4e f2fs: Add inline to f2fs_build_fault_attr() stub
| * f8e960be92 btrfs: fix adding block group to a reclaim list and the unused list during reclaim
| * bd16a7ee33 mm: avoid overflows in dirty throttling logic
| * 79ad410c5b mm: optimize the redundant loop of mm_update_owner_next()
| * 3ab40870ed nilfs2: add missing check for inode numbers on directory entries
| * 9194f8ca57 nilfs2: fix inode number range checks
| * 991f036cab Revert "igc: fix a log entry using uninitialized netdev"
| * 9bdd0bf23f platform/x86: toshiba_acpi: Fix quickstart quirk handling
| * 69787793e7 cpu: Fix broken cmdline "nosmp" and "maxcpus=0"
| * b0a41715ed gpiolib: of: add polarity quirk for TSC2005
| * f8b55a465b mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file
| * 76965648fe inet_diag: Initialize pad field in struct inet_diag_req_v2
| * 4116ec6483 selftests: make order checking verbose in msg_zerocopy selftest
| * 946ba4e645 selftests: fix OOM in msg_zerocopy selftest
| * b75e33eae8 bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set()
| * 55a40406aa netfilter: nf_tables: unconditionally flush pending work before notifier
| * 7692c9b6ba riscv: kexec: Avoid deadlock in kexec crash path
| * 5ed821a8e9 wifi: wilc1000: fix ies_len type in connect path
| * dee87316b5 gpio: mmio: do not calculate bgpio_bits via "ngpios"
| * e3af5b14e7 net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx()
| * 9edc7a83cd net: txgbe: initialize num_q_vectors for MSI/INTx interrupts
| * 702b17f72d net: allow skb_datagram_iter to be called from any context
| * 895f5633a0 gpiolib: of: fix lookup quirk for MIPS Lantiq
| * e536e6efa6 e1000e: Fix S0ix residency on corporate systems
| * f4513867ba KVM: s390: fix LPSWEY handling
| * 8c2debdd17 tcp_metrics: validate source addr length
| * 4970e48f83 bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX
| * 0456697104 Bluetooth: ISO: Check socket flag instead of hcon
| * 38263088b8 Bluetooth: Ignore too large handle values in BIG
| * 1ae31b357a Bluetooth: hci_event: Fix setting of unicast qos interval
| * a9f4a9b27f net/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup()
| * 3e3551f870 net/mlx5: E-switch, Create ingress ACL when needed
| * 8a7fc2362d UPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_open()
| * 9e8f0c53a5 net: phy: phy_device: Fix PHY LED blinking code comment
| * 617075792b mac802154: fix time calculation in ieee802154_configure_durations()
| * abe067dc3a vhost_task: Handle SIGKILL by flushing work and exiting
| * f5bb72196f vhost: Release worker mutex during flushes
| * a86f9633f7 vhost: Use virtqueue mutex for swapping worker
| * 76d7b869b3 tools/power turbostat: Remember global max_die_id
| * 3ee21e14c8 cdrom: rearrange last_media_change check to avoid unintentional overflow
| * e130d4fc19 btrfs: scrub: initialize ret in scrub_simple_mirror() to fix compilation warning
| * 90a01aefb8 s390/pkey: Wipe sensitive data on failure
| * d0bbbf3146 jffs2: Fix potential illegal address access in jffs2_free_inode
| * b5f1844c05 serial: imx: Raise TX trigger level to 8
| * 586b410601 scsi: mpi3mr: Sanitise num_phys
| * 44958ca9e4 f2fs: check validation of fault attrs in f2fs_build_fault_attr()
| * 7e5471b5ef bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD
| * 92160970bf igc: fix a log entry using uninitialized netdev
| * c80d53c484 selftests/net: fix uninitialized variables
| * ee123d5655 powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#"
| * 4e40bc50da kunit: Fix timeout message
| * 6a3cacf6d3 orangefs: fix out-of-bounds fsid access
| * 7c91479c6f powerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n
| * e0cd887ad8 i2c: i801: Annotate apanel_addr as __ro_after_init
| * 8ac224e937 media: dvb-frontends: tda10048: Fix integer overflow
| * 29ce81f979 media: s2255: Use refcount_t instead of atomic_t for num_channels
| * 0f9d21eca4 media: dvb-frontends: tda18271c2dd: Remove casting during div
| * 3f25b5f163 net: dsa: mv88e6xxx: Correct check for empty list
| * 79ef1a5593 thermal/drivers/mediatek/lvts_thermal: Check NULL ptr on lvts_data
| * 547cb99314 wifi: mt76: mt7996: add sanity checks for background radar trigger
| * ff6b26be13 wifi: mt76: replace skb_put with skb_put_zero
| * 9a24eb8010 usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB
| * c727e46f0c Input: ff-core - prefer struct_size over open coded arithmetic
| * 50c6c51972 firmware: dmi: Stop decoding on broken entry
| * 58405d6eff sctp: prefer struct_size over open coded arithmetic
| * 864a024250 riscv: Apply SiFive CIP-1200 workaround to single-ASID sfence.vma
| * af19067bd5 media: dw2102: Don't translate i2c read into write
| * 3fac5aecb5 drm/amdgpu: fix the warning about the expression (int)size - len
| * 7e0fbceae1 drm/amdgpu: fix uninitialized scalar variable warning
| * 8e5cbc820a drm/amd/display: Fix uninitialized variables in DM
| * 95ad20ee3c drm/amd/display: Skip finding free audio for unknown engine_id
| * 96bf81cc1b drm/amd/display: Check pipe offset before setting vblank
| * 9933eca6ad drm/amd/display: Check index msg_id before read or write
| * e55077badb drm/amdgpu: Initialize timestamp for some legacy SOCs
| * 855ae72c20 drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc
| * 646e13f0a6 drm/amdgpu: Fix uninitialized variable warnings
| * 5c217253c7 media: mediatek: vcodec: Only free buffer VA that is not NULL
| * b502d4a088 crypto: aead,cipher - zeroize key buffer after use
| * 1ee644460f RISC-V: KVM: Fix the initial sample period value
| * e7d193073a selftests/bpf: dummy_st_ops should reject 0 for non-nullable params
| * a1a629fc37 selftests/bpf: do not pass NULL for non-nullable params in dummy_st_ops
| * 264451a364 selftests/bpf: adjust dummy_st_ops_success to detect additional error
| * b6ded5316e scsi: qedf: Make qedf_execute_tmf() non-preemptible
| * b8c5f63599 IB/core: Implement a limit on UMAD receive List
| * c15bb7c940 media: dvb-usb: dib0700_devices: Add missing release_firmware()
| * 47abb68e17 media: dvb: as102-fe: Fix as10x_register_addr packing
| * 0f37946c62 powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt.
| * 04d531b9a1 drm/lima: fix shared irq handling on driver remove
| * 7fc8d9a525 crypto: hisilicon/debugfs - Fix debugfs uninit process issue
| * 3ead19aa34 leds: an30259a: Use devm_mutex_init() for mutex initialization
| * 7d2a6abec0 locking/mutex: Introduce devm_mutex_init()
* | 3b4c9871b1 Merge branch 'android15-6.6' into branch 'android15-6.6-lts'
* | 035855d079 ANDROID: db845c: add 2 more symbols to the list
* | 8c50c1e132 Revert "mm/page_alloc: Separate THP PCP into movable and non-movable categories"
* | 11fd1049de Merge 6.6.38 into android15-6.6-lts
|\|
| * 2928631d53 Linux 6.6.38
| * e3540e5a70 Revert "bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()"
| * a5c2956637 Revert "powerpc/bpf: rename powerpc64_jit_data to powerpc_jit_data"
| * 466562d764 Revert "powerpc/bpf: use bpf_jit_binary_pack_[alloc|finalize|free]"
| * 9fef36cad6 Revert "bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro()"
* | 6a00c5aa97 Merge 6.6.37 into android15-6.6-lts
|\|
| * 8fa96e44d3 Linux 6.6.37
| * 8417af0224 tracing/net_sched: NULL pointer dereference in perf_trace_qdisc_reset()
| * 18630d83b7 serial: 8250_omap: Fix Errata i2310 with RX FIFO level check
| * 633c861c0e serial: imx: only set receiver level if it is zero
| * 843836bfc1 cxl/region: check interleave capability
| * a9e099e29e cxl/region: Avoid null pointer dereference in region lookup
| * f12be1a1fd cxl/region: Move cxl_dpa_to_region() work to the region driver
| * 3b758696cc arm64: dts: rockchip: Add sound-dai-cells for RK3368
| * a96a83c939 arm64: dts: rockchip: fix PMIC interrupt pin on ROCK Pi E
| * d530fe8628 arm64: dts: rockchip: make poweroff(8) work on Radxa ROCK 5A
| * c6639892ca ARM: dts: rockchip: rk3066a: add #sound-dai-cells to hdmi node
| * 619c5fe7d3 arm64: dts: rockchip: Fix the value of `dlg,jack-det-rate` mismatch on rk3399-gru
| * b6970ce861 arm64: dts: rockchip: Rename LED related pinctrl nodes on rk3308-rock-pi-s
| * c49af0075f arm64: dts: rockchip: Fix SD NAND and eMMC init on rk3308-rock-pi-s
| * c5978b9962 mm/page_alloc: Separate THP PCP into movable and non-movable categories
| * 07caf754f6 Revert "cpufreq: amd-pstate: Fix the inconsistency in max frequency units"
| * d83df7de2b pwm: stm32: Refuse too small period requests
| * 00432384ec erofs: fix NULL dereference of dif->bdev_handle in fscache mode
| * c636bb37f8 syscalls: fix sys_fanotify_mark prototype
| * e04886b50c syscalls: fix compat_sys_io_pgetevents_time64 usage
| * 836359247b ftruncate: pass a signed offset
| * 062e256516 ata: libata-core: Fix double free on error
| * d8d5412688 ata: ahci: Clean up sysfs file on error
| * 3e72558c17 can: mcp251xfd: fix infinite loop when xmit fails
| * 73fb6df4e6 batman-adv: Don't accept TT entries for out-of-spec VIDs
| * 01f58871af drm/amdgpu/atomfirmware: fix parsing of vram_info
| * 89d8a85154 drm/amd/display: Send DP_TOTAL_LTTPR_CNT during detection if LTTPR is present
| * 7ece609b0c drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes
| * 06dec31a0a drm/i915/gt: Fix potential UAF by revoke of fence registers
| * 330c8c1453 drm/amdgpu: avoid using null object of framebuffer
| * f29fcfbf60 drm/fbdev-dma: Only set smem_start is enable per module option
| * cb751e48bb drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes
| * 16682588ea drm/drm_file: Fix pid refcounting race
| * 5515a81652 hexagon: fix fadvise64_64 calling conventions
| * 32dffe1365 csky, hexagon: fix broken sys_sync_file_range
| * a0bfefcb61 btrfs: zoned: fix initial free space detection
| * 91878a2bc8 sh: rework sync_file_range ABI
| * 829974305d kbuild: Install dtb files as 0644 in Makefile.dtbinst
| * d2683b2d1e irqchip/loongson-liointc: Set different ISRs for different cores
| * 52bbae429b cpu/hotplug: Fix dynstate assignment in __cpuhp_setup_state_cpuslocked()
| * c5a51cfe94 irqchip/loongson-eiointc: Use early_cpu_to_node() instead of cpu_to_node()
| * da3cabfd8b cpufreq: intel_pstate: Use HWP to initialize ITMT if CPPC is missing
| * ff1121d221 PCI/MSI: Fix UAF in msi_capability_init
| * 177e33b655 net: can: j1939: enhanced error handling for tightly received RTS messages in xtp_rx_rts_session_new
| * b6f78276b9 net: can: j1939: recover socket queue on CAN bus error during BAM transmission
| * ab2a683938 net: can: j1939: Initialize unused data in j1939_send_one()
| * 31020bea75 tty: mcf: MCF54418 has 10 UARTS
| * 1d994fb58e ALSA: hda/realtek: fix mute/micmute LEDs don't work for EliteBook 645/665 G11.
| * d3ebc5597e serial: bcm63xx-uart: fix tx after conversion to uart_port_tx_limited()
| * 60dc1a2a3f serial: core: introduce uart_port_tx_limited_flags()
| * d75b8ae150 serial: imx: set receiver level before starting uart
| * e67d7f3800 serial: 8250_omap: Implementation of Errata i2310
| * 2ab254507c Revert "serial: core: only stop transmit when HW fifo is empty"
| * 6b80ccc0ac usb: dwc3: core: Workaround for CSR read timeout
| * ab99c4be94 usb: dwc3: core: Add DWC31 version 2.00a controller
| * e630592719 usb: ucsi: stm32: fix command completion handling
| * 519610e20e usb: typec: ucsi: glink: fix child node release in probe function
| * 9ed8e8c440 usb: gadget: aspeed_udc: fix device address configuration
| * 17e2956633 usb: dwc3: core: remove lock of otg mode during gadget suspend/resume to avoid deadlock
| * f536f09eb4 usb: atm: cxacru: fix endpoint checking in cxacru_bind()
| * bcf78eca09 usb: musb: da8xx: fix a resource leak in probe()
| * a96915ffc9 usb: gadget: printer: fix races against disable
| * 9dec26eda3 usb: gadget: printer: SS+ support
| * cc2bce1fe1 net: usb: ax88179_178a: improve link status logs
| * 055b4e3d6b iio: chemical: bme680: Fix sensor data read operation
| * b5967393d5 iio: chemical: bme680: Fix overflows in compensate() functions
| * 93709966ce iio: chemical: bme680: Fix calibration data variable
| * 133828897c iio: chemical: bme680: Fix pressure value output
| * 7387777aeb iio: accel: fxls8962af: select IIO_BUFFER & IIO_KFIFO_BUF
| * 1ce8be8442 iio: adc: ad7266: Fix variable checking bug
| * 8c65da9b15 ata,scsi: libata-core: Do not leak memory for ata_port struct members
| * 119c97ace2 ata: libata-core: Fix null pointer dereference on error
| * 84ee4515a8 i2c: testunit: discard write requests while old command is running
| * 37bec254ee i2c: testunit: don't erase registers after STOP
| * b89b0af97d kbuild: Fix build target deb-pkg: ln: failed to create hard link
| * 4edc6c5b31 kbuild: doc: Update default INSTALL_MOD_DIR from extra to updates
| * 8fd89aa382 counter: ti-eqep: enable clock at probe
| * da6c6adba5 iio: xilinx-ams: Don't include ams_ctrl_channels in scan_mask
| * 7fb456c3c6 mmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro()
| * 3336979b6a mmc: sdhci: Do not invert write-protect twice
| * 006e04ae96 mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos
| * 485d942171 mmc: sdhci-brcmstb: check R1_STATUS for erase/trim/discard
| * 50a68792a9 mmc: sdhci-pci-o2micro: Convert PCIBIOS_* return codes to errnos
| * 88e0ad40d0 mm: fix incorrect vbq reference in purge_fragmented_block
| * bc5e98e004 nfs: drop the incorrect assertion in nfs_swap_rw()
| * c05ffb693b ocfs2: fix DIO failure due to insufficient transaction credits
| * c2a78811ff pinctrl: qcom: spmi-gpio: drop broken pm8008 support
| * 9b95f63d54 Revert "MIPS: pci: lantiq: restore reset gpio polarity"
| * d0be1c8ee4 parisc: use generic sys_fanotify_mark implementation
| * 16222beb9f x86: stop playing stack games in profile_pc()
| * 591c0650b9 randomize_kstack: Remove non-functional per-arch entropy filtering
| * 67ccb6b021 gpiolib: cdev: Disallow reconfiguration without direction (uAPI v1)
| * 74eb70ce67 riscv: stacktrace: convert arch_stack_walk() to noinstr
| * f16c10e05f drm/amdgpu: Fix pci state save during mode-1 reset
| * abb84c4620 RISC-V: fix vector insn load/store width mask
| * 2d83492259 gpio: davinci: Validate the obtained number of IRQs
| * 0ca8656457 drm/panel: simple: Add missing display timing flags for KOE TX26D202VM0BWA
| * e834fecf66 nvme: fixup comment for nvme RDMA Provider Type
| * 41e58607a5 drm/radeon/radeon_display: Decrease the size of allocated memory
| * 3429ef5f50 gfs2: Fix NULL pointer dereference in gfs2_log_flush
| * ed4434b8b1 soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message
| * 79c9ea0d42 irqchip/loongson: Select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP for IRQ_LOONGARCH_CPU
| * 06fa2d9445 media: dvbdev: Initialize sbuf
| * d8f5ce3cb9 ALSA: emux: improve patch ioctl data validation
| * 80575b252a crypto: ecdh - explicitly zeroize private_key
| * 69f49527ae net/dpaa2: Avoid explicit cpumask var allocation on stack
| * 724e7965af net/iucv: Avoid explicit cpumask var allocation on stack
| * 8ac281d423 RDMA/restrack: Fix potential invalid address access
| * d812ae6e02 bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode
| * e6bb84cb47 wifi: ieee80211: check for NULL in ieee80211_mle_size_ok()
| * 5266cbcf3a mtd: partitions: redboot: Added conversion of operands to a larger type
| * 94111446fa x86/fpu: Fix AMD X86_BUG_FXSAVE_LEAK fixup
| * df475f71d4 vduse: Temporarily fail if control queue feature requested
| * 8d4d14536c vduse: validate block features only with block devices
| * 1618f7a875 drm/panel: ilitek-ili9881c: Fix warning with GPIO controllers that sleep
| * 08f6c05feb bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro()
| * f99feda568 powerpc/bpf: use bpf_jit_binary_pack_[alloc|finalize|free]
| * 1033919400 powerpc/bpf: rename powerpc64_jit_data to powerpc_jit_data
| * fdd411af81 bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()
| * 3243e64eb4 net: mana: Fix possible double free in error handling path
| * 952bf8df22 netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers
| * b5418b4162 ALSA: seq: Fix missing MSB in MIDI2 SPP conversion
| * b4b26d23a1 tcp: fix tcp_rcv_fastopen_synack() to enter TCP_CA_Loss for failed TFO
| * 91fe991e02 powerpc: restore some missing spu syscalls
| * 55aed1491b parisc: use correct compat recv/recvfrom syscalls
| * 61ff73933b sparc: fix compat recv/recvfrom syscalls
| * 035c504121 sparc: fix old compat_sys_select()
| * 784079f697 net: dsa: microchip: fix wrong register write when masking interrupt
| * f981ca3fcf ALSA: seq: Fix missing channel at encoding RPN/NRPN MIDI2 messages
| * fdae4d139f Fix race for duplicate reqsk on identical SYN
| * cf0291a679 btrfs: use NOFS context when getting inodes during logging and log replay
| * 3ebda17c46 netfilter: fix undefined reference to 'netfilter_lwtunnel_*' when CONFIG_SYSCTL=n
| * 14e51ea78b xdp: Remove WARN() from __xdp_reg_mem_model()
| * b36267d996 ice: Rebuild TC queues on VSI queue reconfiguration
| * 9d36f6312b net: dsa: microchip: use collision based back pressure mode
| * 96c8693fc1 net: phy: micrel: add Microchip KSZ 9477 to the device table
| * 23f0624bcb ibmvnic: Free any outstanding tx skbs during scrq reset
| * 511804ab70 bpf: Fix overrunning reservations in ringbuf
| * 942901e0fc mlxsw: spectrum_buffers: Fix memory corruptions on Spectrum-4 systems
| * ba4d75a8f4 openvswitch: get related ct labels from its master if it is not confirmed
| * 2ef957de4e net: dsa: microchip: fix initial port flush problem
| * 29bc9e7c75 ASoC: fsl-asoc-card: set priv->pdev before using it
| * 032a2ec27d ASoC: amd: acp: remove i2s configuration check in acp_i2s_probe()
| * e158ed266f ASoC: amd: acp: add a null check for chip_pdev structure
| * 05cbeb0803 s390/pci: Add missing virt_to_phys() for directed DIBV
| * 8d02ead6d0 bpf: Add missed var_off setting in coerce_subreg_to_size_sx()
| * 185dca8755 bpf: Add missed var_off setting in set_sext32_default_val()
| * b377d4df8f ASoC: q6apm-lpass-dai: close graph on prepare errors
| * f74bb396f1 workqueue: Increase worker desc's length to 32
| * 6ffd06c371 ASoC: atmel: atmel-classd: Re-add dai_link->platform to fix card init
| * 6de2e58204 ASoC: atmel: convert not to use asoc_xxx()
| * 2886b30b1c ASoC: mediatek: mt8183-da7219-max98357: Fix kcontrol name collision
| * 4932ddb9fd ASoC: rockchip: i2s-tdm: Fix trcm mode by setting clock on right mclk
| * 00da1ddd69 wifi: mac80211: Use flexible array in struct ieee80211_tim_ie
| * 2dcc136eef selftests: mptcp: userspace_pm: fixed subtest names
| * 528c3a4ceb selftests: mptcp: print_test out of verify_listener_events
| * 71d21704d2 MIPS: pci: lantiq: restore reset gpio polarity
| * 2838dfa529 pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set
| * b85dec60a3 pinctrl: rockchip: use dedicated pinctrl type for RK3328
| * 14f6c7bf21 pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins
| * 98db009476 pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins
| * 4038c57bf6 pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER
| * f1d05111b3 Input: ili210x - fix ili251x_read_touch_data() return value
| * d9933caf86 usb: typec: ucsi: Ack also failed Get Error commands
| * 64ab9d2d1b usb: typec: ucsi: Never send a lone connector change ack
| * dd7c4e3704 iio: pressure: bmp280: Fix BMP580 temperature reading
| * 3f199b4e39 iio: pressure: fix some word spelling errors
* | f67208a12e ANDROID: fix up tty_operations ABI break
* | 8ea9c0fc00 Revert "net/sched: fix false lockdep warning on qdisc root lock"
* | b87a1e28af Revert "net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path"
* | 47deb51546 Merge 6.6.36 into android15-6.6-lts
|\|
| * 61945f2f69 Linux 6.6.36
| * b3f7525556 Revert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default"
| * 9de62e8831 hid: asus: asus_report_fixup: fix potential read out of bounds
| * 25f8b9a781 kprobe/ftrace: fix build error due to bad function definition
| * a089369346 net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path
| * b552a47cc8 ASoC: Intel: sof-sdw: really remove FOUR_SPEAKER quirk
| * 56aa62ff36 drm/amd/display: revert Exit idle optimizations before HDCP execution
| * 988a03e31e LoongArch: Fix entry point in kernel image header
| * eae6e7dbd1 efi/loongarch: Directly position the loaded image file
| * d9a5d5c493 vgacon: rework screen_info #ifdef checks
| * 05f263c166 riscv: force PAGE_SIZE linear mapping if debug_pagealloc is enabled
| * 5f03d4f286 riscv: Don't use PGD entries for the linear mapping
| * 65ac09c965 x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL
| * 71cf8cfd19 x86/cpu/vfm: Add new macros to work with (vendor/family/model) values
| * 6408fcfea4 tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test
| * 7261d27bcc nbd: Fix signal handling
| * 193820ee0c nbd: Improve the documentation of the locking assumptions
| * afcd1a3ac3 ocfs2: update inode fsync transaction id in ocfs2_unlink and ocfs2_link
| * 10fc3a1813 ocfs2: convert to new timestamp accessors
| * 1dbb1a3181 wifi: rtl8xxxu: enable MFP support with security flag of RX descriptor
| * b30c9b1118 perf script: Show also errors for --insn-trace option
| * 0ea11a1124 perf: script: add raw|disasm arguments to --insn-trace option
| * 23b1940096 spi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4
| * 299c0cb3aa arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc
| * 6e77a7c0bd spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup()
| * 211deb3e31 dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema
| * f712670a91 dt-bindings: i2c: atmel,at91sam: correct path to i2c-controller schema
| * 391251d496 i2c: ocores: set IACK bit after core is enabled
| * 84d3549d54 mm/page_table_check: fix crash on ZONE_DEVICE
| * 250fad18b0 tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack()
| * 856cf3305f mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default
| * 08cfaa1217 serial: 8250_dw: Revert "Move definitions to the shared header"
| * 231f18e8e9 efi/x86: Free EFI memory map only when installing a new one.
| * 637619b02c kcov: don't lose track of remote references during softirqs
| * ae30200ecc gcov: add support for GCC 14
| * 67bcecd780 ocfs2: fix NULL pointer dereference in ocfs2_abort_trigger()
| * 0550ad8771 ocfs2: fix NULL pointer dereference in ocfs2_journal_dirty()
| * 63f894de08 dt-bindings: dma: fsl-edma: fix dma-channels constraints
| * b065d79ed0 drm/amdgpu: fix UBSAN warning in kv_dpm.c
| * 9e57611182 drm/radeon: fix UBSAN warning in kv_dpm.c
| * e7bda1f8ba drm/i915/mso: using joiner is not possible with eDP MSO
| * 9f3b02cc05 ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14AHP9
| * b03d8b4a64 ALSA: hda/realtek: Limit mic boost on N14AP7
| * dd3068d81d ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11.
| * 1025281622 ovl: fix encoding fid for lower only root
| * cd2f517976 RDMA/mlx5: Follow rb_key.ats when creating new mkeys
| * 637a3bebcd RDMA/mlx5: Remove extra unlock on error path
| * 9464632483 RDMA/rxe: Fix data copy for IB_SEND_INLINE
| * 72040b4f99 KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes
| * 48bb62859d KVM: arm64: Disassociate vcpus from redistributor region on teardown
| * a937ef951b KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()
| * 32a62a6b10 LoongArch: Fix multiple hardware watchpoint issues
| * 75ecfab9bf LoongArch: Trigger user-space watchpoints correctly
| * 4b26f9ace3 LoongArch: Fix watchpoint setting error
| * 450df994f3 cifs: fix typo in module parameter enable_gcm_256
| * eacfd7f07e scsi: ufs: core: Free memory allocated for model before reinit
| * bf1e8c21f2 btrfs: retry block group reclaim without infinite loop
| * 454c454ed6 net: do not leave a dangling sk pointer, when socket creation fails
| * f08e079bdd net: usb: ax88179_178a: improve reset check
| * 78a6136e94 net: stmmac: Assign configured channel value to EXTTS event
| * 5556721880 locking/atomic: scripts: fix ${atomic}_sub_and_test() kerneldoc
| * 677ff4589f ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists()
| * 82d5a4ba46 ext4: avoid overflow when setting values via sysfs
| * db3d39869e arm64: defconfig: enable the vf610 gpio driver
| * 17095b1d79 ACPI: EC: Evaluate orphan _REG under EC device
| * d63c635e22 RDMA/mana_ib: Ignore optional access flags for MRs
| * e0deb0e9c9 RDMA/mlx5: Add check for srq max_sge attribute
| * 3b733016d8 RDMA/mlx5: Fix unwind flow as part of mlx5_ib_stage_init_init
| * a6d6332a00 firmware: psci: Fix return value from psci_system_suspend()
| * 2a215410cf io_uring/rsrc: fix incorrect assignment of iter->nr_segs in io_import_fixed
| * 87e0621a6b spi: spi-imx: imx51: revert burst length calculation back to bits_per_word
| * 434c6b924e ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine."
| * 83936d4ecd arm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin
| * 563788af07 arm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property
| * c41f973a68 arm64: dts: freescale: imx8mp-venice-gw73xx-2x: fix BT shutdown GPIO
| * 625c4fda11 arm64: dts: imx8mp: Fix TC9595 input clock on DH i.MX8M Plus DHCOM SoM
| * 332af18d1a arm64: dts: imx8mp: Fix TC9595 reset GPIO on DH i.MX8M Plus DHCOM SoM
| * 90d29da114 thermal/drivers/mediatek/lvts_thermal: Return error in case of invalid efuse data
| * 47a0fe77b6 regulator: bd71815: fix ramp values
| * 79cee58de3 dmaengine: ioatdma: Fix missing kmem_cache_destroy()
| * 6f47c1e987 dmaengine: fsl-edma: avoid linking both modules
| * 30d2259c5e dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe()
| * fb6e3d4d43 dmaengine: ioatdma: Fix error path in ioat3_dma_probe()
| * ab9501ecaa dmaengine: ioatdma: Fix leaking on version mismatch
| * faa35db78b dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list
| * 186d778525 regulator: core: Fix modpost error "regulator_get_regmap" undefined
| * 163868ec1f RDMA/rxe: Fix responder length checking for UD request packets
| * 9f06731c4e spi: cs42l43: Correct SPI root clock speed
| * 5f338cb5ca RDMA/bnxt_re: Fix the max msix vectors macro
| * 7bcca7108c net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings
| * ad22071b8e bnxt_en: Restore PTP tx_avail count in case of skb_pad() error
| * 714782d580 ice: Fix VSI list rule with ICE_SW_LKUP_LAST type
| * 325f8ab776 netfilter: move the sysctl nf_hooks_lwtunnel into the netfilter core
| * d62df86c17 seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors
| * 94dd411c18 netfilter: ipset: Fix suspicious rcu_dereference_protected()
| * 3ee9c732d6 octeontx2-pf: Fix linking objects into multiple modules
| * 096a93e1c4 octeontx2-pf: Add error handling to VLAN unoffload handling
| * 3ef2a16a1d virtio_net: fixing XDP for fully checksummed packets handling
| * ef609fd734 virtio_net: checksum offloading handling fix
| * a71b686418 net: stmmac: No need to calculate speed divider when offload is disabled
| * a674424c23 selftests: openvswitch: Use bash as interpreter
| * 666e934d74 ptp: fix integer overflow in max_vclocks_store
| * 9126fd82e9 sched: act_ct: add netns into the key of tcf_ct_flow_table
| * b57a4a2dc8 tipc: force a dst refcount before doing decryption
| * 5f926aa96b net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()
| * 284fd7e97b net/sched: act_api: rely on rcu in tcf_idr_check_alloc
| * 123eaaf636 net: phy: mxl-gpy: Remove interrupt mask clearing from config_init
| * de4fc1091a net: lan743x: Support WOL at both the PHY and MAC appropriately
| * 41805c46d5 net: lan743x: disable WOL upon resume to restore full data path operation
| * 6b2dfc4ff3 qca_spi: Make interrupt remembering atomic
| * ef0394ca25 netns: Make get_net_ns() handle zero refcount net
| * f897d71716 xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr()
| * 73e7c8ca6a ipv6: prevent possible NULL dereference in rt6_probe()
| * b6947723c9 ipv6: prevent possible NULL deref in fib6_nh_init()
| * b6ebe4fed7 netrom: Fix a memory leak in nr_heartbeat_expiry()
| * d940be596b ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM
| * 7f9644782c bpf: Avoid splat in pskb_pull_reason
| * 5a24f876b5 ALSA: hda: tas2781: Component should be unbound before deconstruction
| * 8be82acd4e ALSA: hda: cs35l56: Component should be unbound before deconstruction
| * 08fa10b265 cipso: fix total option length computation
| * 23a52ca69c net: mvpp2: use slab_build_skb for oversized frames
| * 082b3d4e78 btrfs: zoned: allocate dummy checksums for zoned NODATASUM writes
| * 823e42971f ice: avoid IRQ collision to fix init failure on ACPI S3 resume
| * 83de3ace79 ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option
| * 590f9d97cd ALSA: hda/realtek: Remove Framework Laptop 16 from quirks
| * 55d5d08174 tracing: Build event generation tests only as modules
| * 2cd4854ef1 mips: bmips: BCM6358: make sure CBR is correctly set
| * fe5a1bfad4 MIPS: Routerboard 532: Fix vendor retry check code
| * b89c2c56a0 ALSA: seq: ump: Fix missing System Reset message handling
| * ff27bd8e17 ALSA: hda: cs35l41: Possible null pointer dereference in cs35l41_hda_unbind()
| * fae0e055d0 PCI: Do not wait for disconnected devices when resuming
| * 96a0e06dfe ACPI: EC: Install address space handler at the namespace root
| * 448efb7ea0 cpufreq: amd-pstate: fix memory leak on CPU EPP exit
| * 618fbf4c91 vfio/pci: Collect hot-reset devices to local buffer
| * 287b569a5b tty: add the option to have a tty reject a new ldisc
| * a94a560040 usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API
| * 404fb6c4c8 serial: exar: adding missing CTI and Exar PCI ids
| * 982ae3376c serial: imx: Introduce timeout when waiting on transmitter empty
| * 1c33fd1738 MIPS: Octeon: Add PCIe link status check
| * 1036d3ea7a f2fs: don't set RO when shutting down f2fs
| * 7196289190 PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports
| * 6f999660a6 udf: udftime: prevent overflow in udf_disk_stamp_to_time()
| * 38e6a52966 usb: typec: ucsi_glink: drop special handling for CCI_BUSY
| * eba944dffe usb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380
| * e151ae1ee0 Avoid hw_desc array overrun in dw-axi-dmac
| * 10132ccf99 usb: misc: uss720: check for incompatible versions of the Belkin F5U002
| * eddeb8d941 f2fs: remove clear SB_INLINECRYPT flag in default_options
| * 971c3be5db usb: gadget: uvc: configfs: ensure guid to be valid before set
| * ae0d1ea3e8 kprobe/ftrace: bail out if ftrace was killed
| * 23afcd52af ext4: fix uninitialized ratelimit_state->lock access in __ext4_fill_super()
| * 54f514a036 iommu/arm-smmu-v3: Free MSIs in case of ENOMEM
| * 89bed5c844 power: supply: cros_usbpd: provide ID table for avoiding fallback match
| * 4569c9641e platform/x86: p2sb: Don't init until unassigned resources have been assigned
| * 2ff4b9a2f0 powerpc/io: Avoid clang null pointer arithmetic warnings
| * f066882293 media: mtk-vcodec: potential null pointer deference in SCP
| * 23d3c898d5 media: intel/ipu6: Fix build with !ACPI
| * 3ad0034910 powerpc/pseries: Enforce hcall result buffer validity and size
| * ff1de429c2 ALSA: hda/realtek: Add quirks for Lenovo 13X
| * bdbc4ca77f drm/lima: mask irqs in timeout path before hard reset
| * 022db5d6a8 drm/lima: add mask irq callback to gp and pp
| * 171f438a87 ASoC: Intel: sof_sdw: add quirk for Dell SKU 0C0F
| * 38bf3b41b6 ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14
| * a63054e677 platform/x86: toshiba_acpi: Add quirk for buttons on Z830
| * 8f3ade4b60 drm/amd/display: Exit idle optimizations before HDCP execution
| * d7b8159ddd Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl
| * 810e6a1da6 ACPI: video: Add backlight=native quirk for Lenovo Slim 7 16ARH7
| * 18fa9a90a0 HID: asus: fix more n-key report descriptors if n-key quirked
| * a956f64ca8 HID: Add quirk for Logitech Casa touchpad
| * 85edd783f4 wifi: mt76: mt7921s: fix potential hung tasks during chip recovery
| * 3f1a155950 netpoll: Fix race condition in netpoll_owner_active
| * 4882e92c88 net: dsa: realtek: keep default LED state in rtl8366rb
| * c4dbe5501f kselftest: arm64: Add a null pointer check
| * 6d8b2c5206 net/sched: fix false lockdep warning on qdisc root lock
| * 2f037b28a7 net: sfp: add quirk for ATS SFP-GE-T 1000Base-TX module
| * fa85b016a5 scsi: qedi: Fix crash while reading debugfs attribute
| * 76ce2f9125 drop_monitor: replace spin_lock by raw_spin_lock
| * 2d42aacea8 ACPI: x86: Add PNP_UART1_SKIP quirk for Lenovo Blade2 tablets
| * c572d3a920 af_packet: avoid a false positive warning in packet_setsockopt()
| * 946a635b1a wifi: ath9k: work around memset overflow warning
| * 2685008a5f batman-adv: bypass empty buckets in batadv_purge_orig_ref()
| * ef063f0f5c selftests/bpf: Fix flaky test btf_map_in_map/lookup_update
| * 5270950a3b selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh
| * c5dc2d8eb3 ssb: Fix potential NULL pointer dereference in ssb_device_uevent()
| * fd841ee01f block/ioctl: prefer different overflow check
| * 3afcca7bcc rcutorture: Fix invalid context warning when enable srcu barrier testing
| * 93b7d58202 rcutorture: Make stall-tasks directly exit when rcutorture tests end
| * 2e5ed1130e rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment
| * 9e810bd995 io_uring/sqpoll: work around a potential audit memory leak
| * b101f0bfb6 crypto: hisilicon/qm - Add the err memory release process to qm uninit
| * 9f21886370 crypto: hisilicon/sec - Fix memory leak for sec resource release
| * 7220b9795d padata: Disable BH when taking works lock on MT path
| * 0eeb28d7e1 fs/writeback: bail out if there is no more inodes for IO and queued once
* | b9dbfe1a97 ANDROID: fix up crc generation for uart functions
* | f534c7c7bd Revert "bpf: Optimize the free of inner map"
* | bf852b32cc Revert "bpf: Fix a potential use-after-free in bpf_link_free()"
* | 4683195a6f Merge 6.6.35 into android15-6.6-lts
|\|
| * 5f2d0708ac Linux 6.6.35
| * 3466abafa9 zap_pid_ns_processes: clear TIF_NOTIFY_SIGNAL along with TIF_SIGPENDING
| * 2fd6cfb2a4 i2c: designware: Fix the functionality flags of the slave-only interface
| * 572afd43c9 i2c: at91: Fix the functionality flags of the slave-only interface
| * a4cd6074ae misc: microchip: pci1xxxx: Fix a memory leak in the error handling of gp_aux_bus_probe()
| * 2cc32639ec usb-storage: alauda: Check whether the media is initialized
| * 3a03ef31c1 serial: 8250_dw: Don't use struct dw8250_data outside of 8250_dw
| * 836e1a9fd8 serial: 8250_dw: Replace ACPI device check by a quirk
| * 1d98b6a0b9 serial: 8250_dw: Switch to use uart_read_port_properties()
| * f59e2391d3 serial: port: Introduce a common helper to read properties
| * 68a53d1212 serial: core: Add UPIO_UNKNOWN constant for unknown port type
| * 1006d1b5eb device property: Implement device_is_big_endian()
| * dd431c3ac1 ima: Fix use-after-free on a dentry's dname.name
| * 0b8fba38bd greybus: Fix use-after-free bug in gb_interface_release due to race condition.
| * aefd8f343d selftests: net: lib: avoid error removing empty netns name
| * 44bdef2357 selftests: net: lib: support errexit with busywait
| * 1d650d2c9b selftests/net/lib: no need to record ns name if it already exist
| * d722ed2530 selftests/net/lib: update busywait timeout value
| * 8a73c08e00 cachefiles, erofs: Fix NULL deref in when cachefiles is not doing ondemand-mode
| * 3beccb6a32 remoteproc: k3-r5: Jump to error handling labels in start/stop errors
| * bb2f3187e3 selftests: forwarding: Avoid failures to source net/lib.sh
| * 2a969959b9 selftests/net: add variable NS_LIST for lib.sh
| * 04f7b9b4d7 selftests/net: add lib.sh
| * dd782da470 Revert "fork: defer linking file vma until vma is fully initialized"
| * 72b5c7f3b3 serial: 8250_pxa: Configure tx_loadsz to match FIFO IRQ level
| * 0d73477af9 mm/huge_memory: don't unpoison huge_zero_folio
| * 93d61e1bac tick/nohz_full: Don't abuse smp_call_function_single() in tick_setup_device()
| * 614d397be0 nilfs2: fix potential kernel bug due to lack of writeback flag waiting
| * f8474caf39 swiotlb: extend buffer pre-padding to alloc_align_mask if necessary
| * 6c385c1fa0 swiotlb: Reinstate page-alignment for mappings >= PAGE_SIZE
| * 6033fc9522 swiotlb: Enforce page alignment in swiotlb_alloc()
| * 9f2050106f xfs: allow cross-linking special files without project quota
| * 8bb0402836 xfs: don't use current->journal_info
| * 79ba47df4e xfs: allow sunit mount option to repair bad primary sb stripe values
| * ae609281ec xfs: ensure submit buffers on LSN boundaries in error handlers
| * 04fa426908 xfs: shrink failure needs to hold AGI buffer
| * ea365e6062 xfs: fix SEEK_HOLE/DATA for regions with active COW extents
| * 7f0e5af269 xfs: fix scrub stats file permissions
| * 20bccdb03a xfs: fix imprecise logic in xchk_btree_check_block_owner
| * 092571ef9a btrfs: zoned: fix use-after-free due to race with dev replace
| * 069e0cc343 btrfs: zoned: factor out DUP bg handling from btrfs_load_block_group_zone_info
| * 68713bc70d btrfs: zoned: factor out single bg handling from btrfs_load_block_group_zone_info
| * a139ad6642 btrfs: zoned: factor out per-zone logic from btrfs_load_block_group_zone_info
| * f952676087 btrfs: zoned: introduce a zone_info struct in btrfs_load_block_group_zone_info
| * a3be677629 pmdomain: ti-sci: Fix duplicate PD referrals
| * 6fd062713d intel_th: pci: Add Lunar Lake support
| * ebcef91164 intel_th: pci: Add Meteor Lake-S support
| * c8727ddde1 intel_th: pci: Add Sapphire Rapids SOC support
| * 37eb9f7cc7 intel_th: pci: Add Granite Rapids SOC support
| * 3b08df88b0 intel_th: pci: Add Granite Rapids support
| * f287b1e34f drm/i915: Fix audio component initialization
| * 7a9883be3b drm/i915/dpt: Make DPT object unshrinkable
| * 1b4a8b89bf drm/shmem-helper: Fix BUG_ON() on mmap(PROT_WRITE, MAP_PRIVATE)
| * 1d2f1123a0 drm/i915/gt: Disarm breadcrumbs if engines are already idle
| * 42524cc5fe rtla/auto-analysis: Replace \t with spaces
| * d32f12e157 rtla/timerlat: Simplify "no value" printing on top
| * 8661a7af04 riscv: rewrite __kernel_map_pages() to fix sleeping in invalid context
| * 6ee0c842d4 iio: invensense: fix interrupt timestamp alignment
| * 955c824d54 iio: adc: axi-adc: make sure AXI clock is enabled
| * 33187fa1a8 remoteproc: k3-r5: Do not allow core1 to power up before core0 via sysfs
| * 2494bc856e remoteproc: k3-r5: Wait for core0 power-up before powering up core1
| * aa81c7b078 dmaengine: axi-dmac: fix possible race in remove()
| * 4145835ec2 PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id
| * 3c361f313d ocfs2: fix races between hole punching and AIO+DIO
| * 7ec0e3b86f ocfs2: use coarse time for new created files
| * 518fbd644d fs/proc: fix softlockup in __read_vmcore
| * ba04b459ef knfsd: LOOKUP can return an illegal error value
| * 591d5b12f8 spmi: hisi-spmi-controller: Do not override device identifier
| * e293c6b38a vmci: prevent speculation leaks by sanitizing event in event_deliver()
| * 2d11505e79 dma-buf: handle testing kthreads creation failure
| * e946428439 sock_map: avoid race between sock_map_close and sk_psock_put
| * 2c581ca0d6 null_blk: Print correct max open zones limit in null_init_zoned_dev()
| * 5fc6b708ef kheaders: explicitly define file modes for archived headers
| * fcb88dc66b tracing/selftests: Fix kprobe event name test for .isra. functions
| * d63e501ac6 riscv: fix overlap of allocated page and PTR_ERR
| * 7063f15d2a perf auxtrace: Fix multiple use of --itrace option
| * 809a2ed171 perf/core: Fix missing wakeup when waiting for context reference
| * 348008f004 x86/amd_nb: Check for invalid SMN reads
| * d91ddd0508 x86/kexec: Fix bug with call depth tracking
| * 5c0fb9cb40 irqchip/gic-v3-its: Fix potential race condition in its_vlpi_prop_update()
| * 6d0881a00d clkdev: Update clkdev id usage to allow for longer names
| * dbf0787c2f mptcp: pm: update add_addr counters after connect
| * 09469a0817 mptcp: pm: inc RmAddr MIB counter once per RM_ADDR ID
| * f1f0a46f8b mptcp: ensure snd_una is properly initialized on connect
| * 35bcf16b4a drm/exynos: hdmi: report safe 640x480 mode as a fallback when no EDID found
| * a269c57012 drm/exynos/vidi: fix memory leak in .get_modes()
| * fd880577c6 ACPI: x86: Force StorageD3Enable on more products
| * 5bf196f193 parisc: Try to fix random segmentation faults in package builds
| * a42b0060d6 drivers: core: synchronize really_probe() and dev_uevent()
| * e57c84e156 iio: imu: inv_icm42600: delete unneeded update watermark call
| * aaf6b327a3 iio: invensense: fix odr switching to same value
| * 8e472061a3 iio: dac: ad5592r: fix temperature channel scaling value
| * 24ff87bb9f iio: adc: ad9467: fix scan type sign
| * d4f3861893 x86/boot: Don't add the EFI stub to targets, again
| * db20d4e487 ksmbd: fix missing use of get_write in in smb2_set_ea()
| * 13b38f9262 ksmbd: move leading slash check to smb2_get_name()
| * 86c9713602 misc: microchip: pci1xxxx: fix double free in the error handling of gp_aux_bus_probe()
| * ca6660c956 bnxt_en: Adjust logging of firmware messages in case of released token in __hwrm_send()
| * 185c72f6b9 af_unix: Read with MSG_PEEK loops if the first unread byte is OOB
| * 183ebc167a ionic: fix use after netif_napi_del()
| * 7caefa2771 net: bridge: mst: fix suspicious rcu usage in br_mst_set_state
| * a6cc9e9a65 net: bridge: mst: pass vlan group directly to br_mst_vlan_set_state
| * 96d3265fc4 net/ipv6: Fix the RT cache flush via sysctl using a previous delay
| * 9a3eb4816a nvmet-passthru: propagate status from id override functions
| * fe1e395563 block: fix request.queuelist usage in flush
| * 6b7155458e block: sed-opal: avoid possible wrong address reference in read_sed_opal_key()
| * 35119b1139 net: stmmac: replace priv->speed with the portTransmitRate from the tc-cbs parameters
| * d01f39f73b gve: ignore nonrelevant GSO type bits when processing TSO headers
| * b0c95cefd9 net: pse-pd: Use EOPNOTSUPP error code instead of ENOTSUPP
| * 2ad10c2aad scsi: ufs: core: Quiesce request queues before checking pending cmds
| * 567cfc59e4 x86/uaccess: Fix missed zeroing of ia32 u64 get_user() range checking
| * 5396ce9a5e x86/asm: Use %c/%n instead of %P operand modifier in asm templates
| * 2ba35b37f7 netfilter: ipset: Fix race between namespace cleanup and gc in the list:set type
| * b30669fdea netfilter: nft_inner: validate mandatory meta and payload
| * 7ccca396e9 Bluetooth: fix connection setup in l2cap_connect
| * 599a28fa9e Bluetooth: L2CAP: Fix rejecting L2CAP_CONN_PARAM_UPDATE_REQ
| * 110764a071 net/mlx5e: Fix features validation check for tunneled UDP (non-VXLAN) packets
| * bb5c1b0fbd geneve: Fix incorrect inner network header offset when innerprotoinherit is set
| * c72660999c net dsa: qca8k: fix usages of device_get_named_child_node()
| * d61808ac99 tcp: fix race in tcp_v6_syn_recv_sock()
| * b5c8ffc8cf drm/bridge/panel: Fix runtime warning on panel bridge release
| * 9460961d82 drm/komeda: check for error-valued pointer
| * f100031fd6 net: stmmac: dwmac-qcom-ethqos: Configure host DMA width
| * fd2b613bc4 liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet
| * 47016dcb50 net: hns3: add cond_resched() to hns3 ring buffer init process
| * 689de7c3bf net: hns3: fix kernel crash problem in concurrent scenario
| * ef01c26d6f net: sfp: Always call `sfp_sm_mod_remove()` on remove
| * 6797259d9b modpost: do not warn about missing MODULE_DESCRIPTION() for vmlinux.o
| * 6fdc1152af af_unix: Annotate data-race of sk->sk_state in unix_accept().
| * b82c97a79b drm/vmwgfx: Don't memcmp equivalent pointers
| * ce48b688a8 drm/vmwgfx: Remove STDU logic from generic mode_valid function
| * 15a875ecfc drm/vmwgfx: 3D disabled should not effect STDU memory limits
| * 3ca8e582e0 drm/vmwgfx: Filter modes which exceed graphics memory
| * b0b05171de drm/vmwgfx: Refactor drm connector probing for display modes
| * f677ca8cfe HID: logitech-dj: Fix memory leak in logi_dj_recv_switch_to_dj_mode()
| * 1bbadf953f io_uring/io-wq: avoid garbage value of 'match' in io_wq_enqueue()
| * ab702c3483 io_uring/io-wq: Use set_bit() and test_bit() at worker->flags
| * 7388ae6f26 iommu: Return right value in iommu_sva_bind_device()
| * c344d70307 iommu/amd: Fix sysfs leak in iommu init
| * 30f76bc468 HID: core: remove unnecessary WARN_ON() in implement()
| * 17a6806f60 gpio: tqmx86: fix broken IRQ_TYPE_EDGE_BOTH interrupt type
| * 12043e85bd gpio: tqmx86: store IRQ trigger type and unmask status separately
| * 01aa7b7a3d gpio: tqmx86: introduce shadow register for GPIO output value
| * d690790108 gpio: tqmx86: fix typo in Kconfig label
| * b07a62f8c8 platform/x86: dell-smbios: Fix wrong token data in sysfs
| * 2c82e21bbc drm/panel: sitronix-st7789v: Add check for of_drm_get_panel_orientation
| * ca060e2557 nvme: fix nvme_pr_* status code parsing
| * beb2dde5e1 selftests/tracing: Fix event filter test to retry up to 10 times
| * b21cae4688 NFS: add barriers when testing for NFS_FSDATA_BLOCKED
| * b1a6e884de SUNRPC: return proper error from gss_wrap_req_priv
| * c30988e06b NFSv4.1 enforce rootpath check in fs_location query
| * a9aa5a49c8 clk: sifive: Do not register clkdevs for PRCI clocks
| * dff9b22389 selftests/ftrace: Fix to check required event file
| * 3bf0b80302 cachefiles: flush all requests after setting CACHEFILES_DEAD
| * d2d3eb377a cachefiles: defer exposing anon_fd until after copy_to_user() succeeds
| * 527db1cb4c cachefiles: never get a new anonymous fd if ondemand_id is valid
| * 1d95e5010c cachefiles: remove err_put_fd label in cachefiles_ondemand_daemon_read()
| * 3958679c49 cachefiles: fix slab-use-after-free in cachefiles_ondemand_daemon_read()
| * a6de82765e cachefiles: fix slab-use-after-free in cachefiles_ondemand_get_fd()
| * 9f5fa40f09 cachefiles: add restore command to recover inflight ondemand read requests
| * e564e48ca2 cachefiles: add spin_lock for cachefiles_ondemand_info
| * f740fd943b cachefiles: resend an open request if the read request's object is closed
| * 33d21f0658 cachefiles: extract ondemand info field from cachefiles_object
| * 955190e185 cachefiles: introduce object ondemand state
| * 50d0e55356 cachefiles: remove requests from xarray during flushing requests
| * 19133f53f1 cachefiles: add output string to cachefiles_obj_[get|put]_ondemand_fd
| * d8316838aa cxl/region: Fix memregion leaks in devm_cxl_add_region()
| * 09b4aa2815 cxl/test: Add missing vmalloc.h for tools/testing/cxl/test/mem.c
| * b3f206985a HID: nvidia-shield: Add missing check for input_ff_create_memless
| * af4cff0dd6 powerpc/uaccess: Fix build errors seen with GCC 13/14
| * 2ce5341c36 gve: Clear napi->skb before dev_kfree_skb_any()
| * 323d2563bd scsi: sd: Use READ(16) when reading block zero on large capacity disks
| * 9079338c5a scsi: mpt3sas: Avoid test/set_bit() operating in non-allocated memory
| * da097dccae scsi: mpi3mr: Fix ATA NCQ priority support
| * 3e9785d3e9 scsi: core: Disable CDL by default
| * d5ceeb0b6a thunderbolt: debugfs: Fix margin debugfs node creation condition
| * d4121290b4 xhci: Apply broken streams quirk to Etron EJ188 xHCI host
| * 949be4ec58 xhci: Handle TD clearing for multiple streams case
| * 0a834fb6db xhci: Apply reset resume quirk to Etron EJ188 xHCI host
| * 834c57876c xhci: Set correct transferred length for cancelled bulk transfers
| * 4598233d97 jfs: xattr: fix buffer overflow for invalid xattr
| * cc30d05b34 landlock: Fix d_parent walk
| * 3380fa014a serial: port: Don't block system suspend even if bytes are left to xmit
| * b895a1b981 tty: n_tty: Fix buffer offsets when lookahead is used
| * ce356d8d7e mei: me: release irq in mei_me_pci_resume error path
| * ad47b23e47 usb: typec: tcpm: Ignore received Hard Reset in TOGGLING state
| * 04c05d50fa usb: typec: tcpm: fix use-after-free case in tcpm_register_source_caps
| * b641889cc1 USB: xen-hcd: Traverse host/ when CONFIG_USB_XEN_HCD is selected
| * 72a3fe36cf USB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages
| * 43cfac7b88 io_uring: check for non-NULL file pointer in io_file_can_poll()
| * 0c9df3df0c io_uring/rsrc: don't lock while !TASK_RUNNING
| * d18b05eda7 nilfs2: fix nilfs_empty_dir() misjudgment and long loop on I/O errors
| * 8394dce135 nilfs2: return the mapped address from nilfs_get_page()
| * 39a143a2b0 bpf: fix multi-uprobe PID filtering logic
| * 7ec535ed87 eventfs: Update all the eventfs_inodes from the events descriptor
| * 1c88d94a7a irqchip/riscv-intc: Prevent memory leak when riscv_intc_init_common() fails
| * 85ca483e72 irqchip/riscv-intc: Introduce Andes hart-level interrupt controller
| * 4820953413 irqchip/riscv-intc: Allow large non-standard interrupt number
| * 01c987b828 selftests/mm: compaction_test: fix bogus test success on Aarch64
| * 3f6ccd40af selftests/mm: log a consistent test name for check_compaction
| * d39532e918 selftests/mm: conform test to TAP format output
| * bb9bb13ce6 mm/memory-failure: fix handling of dissolved but not taken off from buddy pages
| * fe01748ca6 memory-failure: use a folio in me_huge_page()
| * 130b4b9478 firmware: qcom_scm: disable clocks if qcom_scm_bw_enable() fails
| * 16ece7c564 ksmbd: use rwsem instead of rwlock for lease break
| * 6548d543a2 net: ethtool: fix the error condition in ethtool_get_phy_stats_ethtool()
| * 7e796c3fef ipv6: fix possible race in __fib6_drop_pcpu_from()
| * d8011254e9 af_unix: Annotate data-race of sk->sk_shutdown in sk_diag_fill().
| * 60db0759c4 af_unix: Use skb_queue_len_lockless() in sk_diag_show_rqlen().
| * 471ec7b77a af_unix: Use skb_queue_empty_lockless() in unix_release_sock().
| * f1683d07eb af_unix: Use unix_recvq_full_lockless() in unix_stream_connect().
| * 29fce603b1 af_unix: Annotate data-race of net->unx.sysctl_max_dgram_qlen.
| * 996ec22ff5 af_unix: Annotate data-races around sk->sk_sndbuf.
| * 4398f59518 af_unix: Annotate data-races around sk->sk_state in UNIX_DIAG.
| * 0ede400c32 af_unix: Annotate data-race of sk->sk_state in unix_stream_read_skb().
| * 776fcc45e3 af_unix: Annotate data-races around sk->sk_state in sendmsg() and recvmsg().
| * 3d25de6486 af_unix: Annotate data-race of sk->sk_state in unix_stream_connect().
| * 484e036e1a af_unix: Annotate data-races around sk->sk_state in unix_write_space() and poll().
| * 4e38d6c049 af_unix: Annotate data-race of sk->sk_state in unix_inq_len().
| * 45733e981e af_unix: Annodate data-races around sk->sk_state for writers.
| * 8003545ca1 af_unix: Set sk->sk_state under unix_state_lock() for truly disconencted peer.
| * 040d938487 net: wwan: iosm: Fix tainted pointer delete is case of region creation fail
| * 649b63f5da ice: add flag to distinguish reset from .ndo_bpf in XDP rings config
| * eab834acb4 ice: remove af_xdp_zc_qps bitmap
| * 3201ba7d1c ice: fix iteration of TLVs in Preserved Fields Area
| * b21bb09f8b ptp: Fix error message on failed pin verification
| * 724050ae4b net/sched: taprio: always validate TCA_TAPRIO_ATTR_PRIOMAP
| * d857df8683 net/mlx5: Fix tainted pointer delete is case of flow rules creation fail
| * 6ccada6ffb net/mlx5: Always stop health timer during driver removal
| * e3001df36c net/mlx5: Stop waiting for PCI if pci channel is offline
| * 3dd41669b3 mptcp: count CLOSE-WAIT sockets for MPTCP_MIB_CURRESTAB
| * acdf17546e tcp: count CLOSE-WAIT sockets for TCP_MIB_CURRESTAB
| * 924f7bbfc5 vxlan: Fix regression when dropping packets due to invalid src addresses
| * 54c2c171c1 net: sched: sch_multiq: fix possible OOB write in multiq_tune()
| * cba5467442 net: phy: Micrel KSZ8061: fix errata solution not taking effect problem
| * b03255294e net/smc: avoid overwriting when adjusting sock bufsizes
| * 2d7912f3ac octeontx2-af: Always allocate PF entries from low prioriy zone
| * d387805d4b bpf: Set run context for rawtp test_run callback
| * 50569d1294 net: tls: fix marking packets as decrypted
| * f8dd092e8b ipv6: sr: block BH in seg6_output_core() and seg6_input_core()
| * db21c1ee6b ipv6: ioam: block BH from ioam6_output()
| * 9ee14af24e vmxnet3: disable rx data ring on dma allocation failure
| * 834aa2c34b KVM: SEV-ES: Delegate LBR virtualization to the processor
| * b6e4076ca9 KVM: SEV: Do not intercept accesses to MSR_IA32_XSS for SEV-ES guests
| * 2128bae4ec KVM: SEV-ES: Disallow SEV-ES guests when X86_FEATURE_LBRV is absent
| * 91cff53136 bpf: Fix a potential use-after-free in bpf_link_free()
| * 2ad2f2edb9 bpf: Optimize the free of inner map
| * 5aa03dd388 bpf: Store ref_ctr_offsets values in bpf_uprobe array
| * 02a255723e net: phy: micrel: fix KSZ9477 PHY issues after suspend/resume
| * 645e643eeb net/ncsi: Fix the multi thread manner of NCSI driver
| * d7dd9d1f02 net/ncsi: Simplify Kconfig/dts control flow
| * 87cc251416 ax25: Replace kfree() in ax25_dev_free() with ax25_dev_put()
| * 52100fd74a ax25: Fix refcount imbalance on inbound connections
| * 909dc098a7 RISC-V: KVM: Fix incorrect reg_subtype labels in kvm_riscv_vcpu_set_reg_isa_ext function
| * 5d8622f61e RISC-V: KVM: No need to use mask when hart-index-bit is 0
| * b2b1043ac1 scsi: ufs: mcq: Fix error output and clean up ufshcd_mcq_abort()
| * 2f467fefdf wifi: mac80211: correctly parse Spatial Reuse Parameter Set element
| * a05018739a wifi: iwlwifi: mvm: don't read past the mfuart notifcation
| * 29a18d56bd wifi: iwlwifi: mvm: check n_ssids before accessing the ssids
| * f7773fff6d wifi: iwlwifi: dbg_ini: move iwl_dbg_tlv_free outside of debugfs ifdef
| * bdfa7cf328 wifi: iwlwifi: mvm: set properly mac header
| * 1ef2671de7 wifi: iwlwifi: mvm: revert gen2 TX A-MPDU size to 64
| * 1fd3f32695 wifi: iwlwifi: mvm: don't initialize csa_work twice
| * ff2b4dc81e wifi: cfg80211: pmsr: use correct nla_get_uX functions
| * 0ccc63958d wifi: cfg80211: Lock wiphy in cfg80211_get_station
| * 46b7eff59a wifi: cfg80211: fully move wiphy work to unbound workqueue
| * 456bbb8a31 wifi: mac80211: Fix deadlock in ieee80211_sta_ps_deliver_wakeup()
| * 63d5f89bb5 wifi: mac80211: mesh: Fix leak of mesh_preq_queue objects
* | 2dbf1ccc27 Merge branch 'android15-6.6' into branch 'android15-6.6-lts'
* | 85e99cebd9 Merge 6.6.34 into android15-6.6-lts
|\|
| * 76d42e596d Linux 6.6.34
| * 8353b7f70d smp: Provide 'setup_max_cpus' definition on UP too
| * 50f3931746 selftests: net: more strict check in net_helper
| * 225de871dd smb: client: fix deadlock in smb2_find_smb_tcon()
| * 9c3095ad40 powerpc/bpf: enforce full ordering for ATOMIC operations with BPF_FETCH
| * b48f81d2c3 ALSA: seq: Fix incorrect UMP type for system messages
| * 44bc51c08d btrfs: fix leak of qgroup extent records after transaction abort
| * 3d08c52ba1 btrfs: fix crash on racing fsync and size-extending write into prealloc
| * e5104cbb14 tracefs: Clear EVENT_INODE flag in tracefs_drop_inode()
| * 4e84ead3f6 eventfs: Keep the directories from having the same inode number as files
| * 5ade5fbdbb eventfs: Fix a possible null pointer dereference in eventfs_find_events()
| * cbc4dacaa5 NFS: Fix READ_PLUS when server doesn't support OP_READ_PLUS
| * d6ea0e12be nfs: fix undefined behavior in nfs_block_bits()
| * 9191b574d7 EDAC/igen6: Convert PCIBIOS_* return codes to errnos
| * 8f84ae5043 EDAC/amd64: Convert PCIBIOS_* return codes to errnos
| * 0a9007271e ALSA: ump: Don't accept an invalid UMP protocol number
| * 3113ff8e49 ALSA: ump: Don't clear bank selection after sending a program change
| * e3ae00ee23 ASoC: SOF: ipc4-topology: Fix input format query of process modules without base extension
| * 1c7891812d genirq/irqdesc: Prevent use-after-free in irq_find_at_or_after()
| * aed55acbb9 i3c: master: svc: fix invalidate IBI type and miss call client IBI handler
| * e049845096 s390/cpacf: Make use of invalid opcode produce a link error
| * ab278ff72a s390/cpacf: Split and rework cpacf query functions
| * 4c0bfb4e86 s390/ap: Fix crash in AP internal function modify_bitmap()
| * b2b685c77e parisc: Define sigset_t in parisc uapi header
| * 6de4da0f1a parisc: Define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
| * eea3545abf ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat
| * 1a48d7cf6e ARM: dts: samsung: smdk4412: fix keypad no-autorepeat
| * 0da0e880b8 ARM: dts: samsung: smdkv310: fix keypad no-autorepeat
| * f7f84721fd riscv: dts: starfive: Remove PMIC interrupt info for Visionfive 2 board
| * a95df6f04f ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find()
| * b0b47084f5 ext4: set type of ac_groups_linear_remaining to __u32 to avoid overflow
| * 3093e586b0 ext4: Fixes len calculation in mpage_journal_page_buffers
| * 3194771798 drm/amdkfd: handle duplicate BOs in reserve_bo_and_cond_vms
| * 58ce0788c7 sparc: move struct termio to asm/termios.h
| * 5af198c387 net: fix __dst_negative_advice() race
| * ea303a7af8 kdb: Use format-specifiers rather than memset() for padding in kdb_read()
| * e00ec562b0 kdb: Merge identical case statements in kdb_read()
| * 958ba65a35 kdb: Fix console handling when editing and tab-completing commands
| * d373d3c633 kdb: Use format-strings rather than '\0' injection in kdb_read()
| * 107e825cc4 kdb: Fix buffer overflow during tab-complete
| * 4c09df4002 wifi: ath10k: fix QCOM_RPROC_COMMON dependency
| * f07224c166 bonding: fix oops during rmmod
| * 8b732150f2 watchdog: rti_wdt: Set min_hw_heartbeat_ms to accommodate a safety margin
| * 7669752383 selftests/mm: fix build warnings on ppc64
| * 0eb43c377a selftests/mm: compaction_test: fix incorrect write of zero to nr_hugepages
| * c55d3564ad mm/vmalloc: fix vmalloc which may return null if called with __GFP_NOFAIL
| * 2eeff6e36c mm: /proc/pid/smaps_rollup: avoid skipping vma after getting mmap_lock again
| * cb3ea7684a mm/hugetlb: pass correct order_per_bit to cma_declare_contiguous_nid
| * f317e97da9 mm/cma: drop incorrect alignment check in cma_init_reserved_mem
| * 3e64c37fe3 sparc64: Fix number of online CPUs
| * 35c8cf7b8a rtla/timerlat: Fix histogram report when a cpu count is 0
| * bb5afc42c4 intel_th: pci: Add Meteor Lake-S CPU support
| * 8f893e52b9 cpufreq: amd-pstate: Fix the inconsistency in max frequency units
| * b54d24eb4a tpm_tis: Do *not* flush uninitialized work
| * 19e85d9390 kmsan: do not wipe out origin when doing partial unpoisoning
| * 99ed145f46 mm/ksm: fix ksm_zero_pages accounting
| * 0a82b46a01 mm/ksm: fix ksm_pages_scanned accounting
| * 6c1791130b net/9p: fix uninit-value in p9_client_rpc()
| * 400b8fb66c net/ipv6: Fix route deleting failure when metric equals 0
| * a19b2bc5d0 scsi: core: Handle devices which return an unusually large VPD page count
| * 6d458d0dcc HID: i2c-hid: elan: fix reset suspend current leakage
| * 90dd0592b3 i2c: acpi: Unbind mux adapters before delete
| * 9ee7a77c15 iomap: fault in smaller chunks for non-large folio mappings
| * 1f3988ca0d filemap: add helper mapping_max_folio_size()
| * be0ce3f6ff mm: fix race between __split_huge_pmd_locked() and GUP-fast
| * 2e083ef234 kbuild: Remove support for Clang's ThinLTO caching
| * c2d443aa1a crypto: qat - Fix ADF_DEV_RESET_SYNC memory leak
| * d14104360c crypto: ecrdsa - Fix module auto-load on add_key
| * cc3306fb04 crypto: ecdsa - Fix module auto-load on add-key
| * a68c0c55fa clk: qcom: clk-alpha-pll: fix rate setting for Stromer PLLs
| * 9562dbe5cd clk: bcm: rpi: Assign ->num before accessing ->hws
| * 0dc913217f clk: bcm: dvp: Assign ->num before accessing ->hws
| * ca6d6d872a LoongArch: Override higher address bits in JUMP_VIRT_ADDR
| * ae9e39a2fb LoongArch: Add all CPUs enabled by fdt to NUMA node 0
| * 93ca96f098 KVM: arm64: AArch32: Fix spurious trapping of conditional instructions
| * 5bff951fed KVM: arm64: Allow AArch32 PSTATE.M to be restored as System mode
| * 6660e152e5 KVM: arm64: Fix AArch32 register narrowing on userspace write
| * f79edaf737 KVM: SVM: WARN on vNMI + NMI window iff NMIs are outright masked
| * bb430ea4ba Revert "drm/amdkfd: fix gfx_target_version for certain 11.0.3 devices"
| * 7bc52dce07 drm/amd: Fix shutdown (again) on some SMU v13.0.4/11 platforms
| * f0c5c944c6 9p: add missing locking around taking dentry fid list
| * 4eff07025c drm/amdgpu/atomfirmware: add intergrated info v2.3 table
| * b8385ff814 fbdev: savage: Handle err return when savagefb_check_var failed
| * bd2ad553f1 drm/fbdev-generic: Do not set physical framebuffer address
| * 22d04790d6 mmc: sdhci-acpi: Add quirk to enable pull-up on the card-detect GPIO on Asus T100TA
| * b5636348f3 mmc: sdhci-acpi: Disable write protect detection on Toshiba WT10-A
| * e000578a3a mmc: sdhci-acpi: Fix Lenovo Yoga Tablet 2 Pro 1380 sdcard slot not working
| * e236bb53fd mmc: sdhci-acpi: Sort DMI quirks alphabetically
| * d9ae0aa8ff mmc: sdhci: Add support for "Tuning Error" interrupts
| * c0a16ff432 mmc: core: Add mmc_gpiod_set_cd_config() function
| * 7590da4c04 mmc: davinci: Don't strip remove function when driver is builtin
| * a80d1da923 media: v4l: async: Fix notifier list entry init
| * 001b4825c9 media: v4l: async: Don't set notifier's V4L2 device if registering fails
| * 87100b0924 media: v4l: async: Properly re-initialise notifier entry in unregister
| * dde33147c9 media: v4l2-core: hold videodev_lock until dev reg, finishes
| * 3e7eeba0d3 media: mxl5xx: Move xpt structures off stack
| * 77c4cd7e0b media: mc: mark the media devnode as registered from the, start
| * e80d9db99b media: mc: Fix graph walk in media_pipeline_start
| * 2a24da4cf6 arm64: dts: ti: verdin-am62: Set memory size to 2gb
| * 3f03a4a9e2 arm64: dts: hi3798cv200: fix the size of GICR
| * ea17c9aeb6 arm64: dts: qcom: sc8280xp: add missing PCIe minimum OPP
| * 4c59282ad9 wifi: rtlwifi: rtl8192de: Fix endianness issue in RX path
| * 50ebdaa259 wifi: rtlwifi: rtl8192de: Fix low speed with WPA3-SAE
| * 96e544378e wifi: rtlwifi: rtl8192de: Fix 5 GHz TX power
| * 8539d0b039 wifi: rtl8xxxu: Fix the TX power of RTL8192CU, RTL8723AU
| * 7994e88dab wifi: rtw89: pci: correct TX resource checking for PCI DMA channel of firmware command
| * cd2538e5af md/raid5: fix deadlock that raid5d() wait for itself to clear MD_SB_CHANGE_PENDING
| * f9e0a4ec4b arm64: dts: qcom: qcs404: fix bluetooth device address
| * 49c23519d6 arm64: tegra: Correct Tegra132 I2C alias
| * 17695c8d50 ACPI: resource: Do IRQ override on TongFang GXxHRXx and GMxHGxx
| * 6a283d64b4 soc: qcom: rpmh-rsc: Enhance check for VRM in-flight request
| * 0a47ba94ec thermal/drivers/qcom/lmh: Check for SCM availability at probe
| * 3d22872e77 platform/chrome: cros_ec: Handle events during suspend after resume completion
| * 0c08b92f98 proc: Move fdinfo PTRACE_MODE_READ check into the inode .permission operation
| * d171c85d74 fsverity: use register_sysctl_init() to avoid kmemleak warning
| * c5a39f1643 ata: pata_legacy: make legacy_exit() work again
| * 91d9307325 wifi: rtw89: correct aSIFSTime for 6GHz band
| * 6479b9f415 bcache: fix variable length array abuse in btree_iter
| * 5b0a3dc3e8 drm/amdgpu: add error handle to avoid out-of-bounds
| * 7d12e918f2 media: lgdt3306a: Add a check against null-pointer-def
| * be0155202e f2fs: fix to do sanity check on i_xattr_nid in sanity_check_inode()
| * 2c66a89962 drm/sun4i: hdmi: Move mode_set into enable
| * 8474d4b416 drm/sun4i: hdmi: Convert encoder to atomic
| * 68de50dc58 selftests: net: List helper scripts in TEST_FILES Makefile variable
| * d7e2ad42a0 selftests: net: included needed helper in the install targets
| * a384591187 selftests/net: synchronize udpgro tests' tx and rx connection
| * 461db4b51c vxlan: Fix regression when dropping packets due to invalid src addresses
| * 417dbd7be3 mm: ratelimit stat flush from workingset shrinker
| * 15cc248e7e erofs: avoid allocating DEFLATE streams before mounting
| * 184873af87 mptcp: fix full TCP keep-alive support
| * 89e11fe49f mptcp: cleanup SOL_TCP handling
| * 41089d9c8a mptcp: avoid some duplicate code in socket option handling
| * 0af2070056 riscv: signal: handle syscall restart before get_signal
| * 9399baa02e net: sfp-bus: fix SFP mode detect from bitrate
| * ed2d2ead17 afs: Don't cross .backup mountpoint from backup volume
| * b8d50770ec mmc: core: Do not force a retune before RPMB switch
| * cfa73607eb drm/i915/hwmon: Get rid of devm
* | b8fe1c3c09 ANDROID: GKI: fix stg due to kthread_stop_put()
* | 6aa6a1e569 Merge branch 'android15-6.6' into branch 'android15-6.6-lts'
* | 2d4304d8cf ANDROID: add kthread_stop_put to the symbol list for virtual targets
* | f3b544c623 ANDROID: add __module_get to db854c symbol list.
* | df3ad59c29 Revert "drm/mipi-dsi: use correct return type for the DSC functions"
* | 0902992e03 Revert "eventfs: Do not differentiate the toplevel events directory"
* | 5ef5f28bbb Revert "eventfs: Create eventfs_root_inode to store dentry"
* | 117f556b94 Revert "eventfs/tracing: Add callback for release of an eventfs_inode"
* | 5302e964f3 Revert "eventfs: Free all of the eventfs_inode after RCU"
* | c4bed60157 Revert "eventfs: Have "events" directory get permissions from its parent"
* | 6ad7f6ea6a Revert "regulator: pickable ranges: don't always cache vsel"
* | 0e90f8b654 Revert "regulator: tps6287x: Force writing VSEL bit"
* | 6cb1b3afbb Revert "media: cec: core: avoid recursive cec_claim_log_addrs"
* | 09d9eceb98 Revert "i3c: add actual_len in i3c_priv_xfer"
* | e967b73af2 Revert "i3c: master: svc: rename read_len as actual_len"
* | f3a0d7b688 Revert "i3c: master: svc: return actual transfer data len"
* | 2cff98c11c Revert "i3c: master: svc: change ENXIO to EAGAIN when IBI occurs during start frame"
* | 4091ea13a1 Revert "Bluetooth: HCI: Remove HCI_AMP support"
* | cfa231a1fa ANDROID: add pwm_apply_state() function back
* | 40c3aca0d2 Merge 6.6.33 into android15-6.6-lts
|\|
| * 140cf97204 Linux 6.6.33
| * c273cae038 riscv: stacktrace: fixed walk_stackframe()
| * 3090c06d50 riscv: prevent pt_regs corruption for secondary idle threads
| * af628d43a8 SUNRPC: Fix loop termination condition in gss_free_in_token_pages()
| * c775ffab3e f2fs: use f2fs_{err,info}_ratelimited() for cleanup
| * 4647876e7e f2fs: write missing last sum blk of file pinning section
| * 98ed486436 perf sched timehist: Fix -g/--call-graph option failure
| * fdc455cd02 drm/msm/dpu: make error messages at dpu_core_irq_register_callback() more sensible
| * 2948c1e5d5 media: vsp1: Remove unbalanced .s_stream(0) calls
| * c353aa21f2 nouveau: report byte usage in VRAM usage.
| * d0afcca9ce RDMA/bnxt_re: Fix the sparse warnings
| * f33052802e perf evlist: Add perf_evlist__go_system_wide() helper
| * 95e33c0f61 perf util: Add a function for replacing characters in a string
| * 1a705491f3 platform/x86/intel-uncore-freq: Don't present root domain on error
| * 31729546c1 platform/x86/intel/tpmi: Handle error from tpmi_process_info()
| * 59f86a2908 genirq/cpuhotplug, x86/vector: Prevent vector leak during CPU offline
| * 66c92af813 KVM: x86: Don't advertise guest.MAXPHYADDR as host.MAXPHYADDR in CPUID
| * d6873acc3e x86/pci: Skip early E820 check for ECAM region
| * 9dce01f386 efi: libstub: only free priv.runtime_map when allocated
| * 2a2f9b87c4 x86/efistub: Omit physical KASLR when memory reservations exist
| * 2c95241ac5 ALSA: timer: Set lower bound of start tick time
| * b7c4ef7ba3 ALSA: seq: ump: Fix swapped song position pointer data
| * e67cae4255 hwmon: (shtc1) Fix property misspelling
| * d800e1868f hwmon: (intel-m10-bmc-hwmon) Fix multiplier for N6000 board power sensor
| * e021631682 drm/panel: sitronix-st7789v: fix display size for jt240mhqs_hwt_ek_e3 panel
| * 042adfbfe8 drm/panel: sitronix-st7789v: tweak timing for jt240mhqs_hwt_ek_e3 panel
| * 442b5ee91a drm/panel: sitronix-st7789v: fix timing for jt240mhqs_hwt_ek_e3 panel
| * 81c52c0ccc powerpc/pseries/lparcfg: drop error message from guest name lookup
| * 5f1b01a8c8 ALSA: seq: Fix yet another spot for system message conversion
| * 54213c0980 ipvlan: Dont Use skb->sk in ipvlan_process_v{4,6}_outbound
| * 659ef6fd49 net: ena: Fix redundant device NUMA node override
| * 26668c2d44 net: ena: Reduce lines with longer column width boundary
| * f826701d02 net: dsa: microchip: fix RGMII error in KSZ DSA driver
| * 2c2e3247e8 spi: stm32: Don't warn about spurious interrupts
| * db93128536 kheaders: use `command -v` to test for existence of `cpio`
| * 0b01a41e2c drm/i915/gt: Fix CCS id's calculation for CCS mode setting
| * d154613d2b drm/i915/guc: avoid FIELD_PREP warning
| * 2b6e818fc6 kconfig: fix comparison to constant symbols, 'm', 'n'
| * b939d1e04a net/sched: taprio: extend minimum interval restriction to entire cycle too
| * aa31159641 net/sched: taprio: make q->picos_per_byte available to fill_sched_entry()
| * 61134e41db netfilter: nft_fib: allow from forward/input without iif selector
| * 570b4c5209 netfilter: tproxy: bail out if IP has been disabled on the device
| * c4f77480e5 netfilter: nft_payload: skbuff vlan metadata mangle support
| * 75bc6bc559 net: ti: icssg-prueth: Fix start counter for ft1 filter
| * 4448b5eaab ALSA: seq: Don't clear bank selection at event -> UMP MIDI2 conversion
| * 5c3df8c4f4 ALSA: seq: Fix missing bank setup between MIDI1/MIDI2 UMP conversion
| * 562f8862ba selftests: mptcp: join: mark 'fail' tests as flaky
| * 99ac814eb1 selftests: mptcp: add ms units for tc-netem delay
| * 052c9f0c14 selftests: mptcp: simult flows: mark 'unbalanced' tests as flaky
| * 71e61511c3 ice: fix accounting if a VLAN already exists
| * 98101ca23a net: micrel: Fix lan8841_config_intr after getting out of sleep mode
| * f0c58df771 net:fec: Add fec_enet_deinit()
| * 000a65bf1d bpf: Allow delete from sockmap/sockhash only if update is allowed
| * 5da6d51d48 ASoC: cs42l43: Only restrict 44.1kHz for the ASP
| * ec361a0ffc net: usb: smsc95xx: fix changing LED_SEL bit value updated from EEPROM
| * 208d04341c Octeontx2-pf: Free send queue buffers incase of leaf to inner
| * ac325c7f89 af_unix: Read sk->sk_hash under bindlock during bind().
| * 302fe8dd14 af_unix: Annotate data-race around unix_sk(sk)->addr.
| * f6638e955c enic: Validate length of nl attributes in enic_set_vf_port
| * 07bbe6668e ALSA: hda/realtek: Adjust G814JZR to use SPI init for amp
| * cb9c2bd4ec ALSA: core: Remove debugfs at disconnection
| * b26e0fa2cf ALSA: jack: Use guard() for locking
| * f58eec1468 bpf: Fix potential integer overflow in resolve_btfids
| * a4ee782444 dma-buf/sw-sync: don't enable IRQ from sync_print_obj()
| * de1a0a2d9d net/mlx5e: Fix UDP GSO for encapsulated packets
| * 33933f006d net/mlx5e: Use rx_missed_errors instead of rx_dropped for reporting buffer exhaustion
| * aa60de63fd net/mlx5e: Fix IPsec tunnel mode offload feature check
| * b0a15cde37 net/mlx5: Use mlx5_ipsec_rx_status_destroy to correctly delete status rules
| * fb035aa9a3 net/mlx5: Fix MTMP register capability offset in MCAM register
| * e5bdf4eeeb net/mlx5: Lag, do bond only if slaves agree on roce state
| * 07327fcbec net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ8061
| * dedc1dfaa6 drm/amd/display: Enable colorspace property for MST connectors
| * ca3b4293dc nvmet: fix ns enable/disable possible hang
| * 36989c6825 nvme-multipath: fix io accounting on failover
| * 87d78f7eb7 nvme-tcp: add definitions for TLS cipher suites
| * 5a91116b00 dma-mapping: benchmark: handle NUMA_NO_NODE correctly
| * 34a816d873 dma-mapping: benchmark: fix node id validation
| * 856dc7eb7f dma-mapping: benchmark: fix up kthread-related error handling
| * a9da6ddaef kthread: add kthread_stop_put
| * 1b5234b224 spi: Don't mark message DMA mapped when no transfer in it is
| * 0889e6f209 netfilter: nft_payload: restore vlan q-in-q match support
| * 5278e4354a netfilter: ipset: Add list flush to cancel_gc
| * 8f365564af netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu()
| * 1547183852 tpm_tis_spi: Account for SPI header when allocating TPM SPI xfer buffer
| * ad4b202da2 tracing/probes: fix error check in parse_btf_field()
| * c3e439cb04 kasan, fortify: properly rename memintrinsics
| * d346e14757 ice: Interpret .set_channels() input differently
| * e155741ec4 drivers/xen: Improve the late XenStore init protocol
| * 46e72ebc6b nfc: nci: Fix handling of zero-length payload packets in nci_rx_work()
| * 87bdc9f6f5 net: relax socket state check at accept time.
| * ab67c2fd3d tls: fix missing memory barrier in tls_init
| * d470a80904 net: fec: avoid lock evasion when reading pps_enable
| * 11f1fb8149 Revert "ixgbe: Manual AN-37 for troublesome link partners for X550 SFI"
| * 20da5bfd66 i3c: master: svc: change ENXIO to EAGAIN when IBI occurs during start frame
| * 3dc730aa1b i3c: master: svc: return actual transfer data len
| * 46fb7121fc i3c: master: svc: rename read_len as actual_len
| * fe52ab31f0 i3c: add actual_len in i3c_priv_xfer
| * 04207a9c64 virtio: delete vq in vp_find_vqs_msix() when request_irq() fails
| * 7871f32b45 net: lan966x: Remove ptp traps in case the ptp is not enabled.
| * c5caa03d86 rv: Update rv_en(dis)able_monitor doc to match kernel-doc
| * 9f2ad88f9b arm64: asm-bug: Add .align 2 to the end of __BUG_ENTRY
| * 69c47b3763 openvswitch: Set the skbuff pkt_type for proper pmtud support.
| * ae08aea3f5 pNFS/filelayout: fixup pNfs allocation modes
| * 02261d3f9d tcp: Fix shift-out-of-bounds in dctcp_update_alpha().
| * ef633ecb54 regulator: tps6594-regulator: Correct multi-phase configuration
| * 0e44d6cbe8 ipv6: sr: fix memleak in seg6_hmac_init_algo
| * d59ae9314b af_unix: Update unix_sk(sk)->oob_skb under sk_receive_queue lock.
| * 35db7c9d01 regulator: tps6287x: Force writing VSEL bit
| * f46695d3b0 regulator: pickable ranges: don't always cache vsel
| * 706dff4ff7 rpcrdma: fix handling for RDMA_CM_EVENT_DEVICE_REMOVAL
| * f3a8f8670f sunrpc: fix NFSACL RPC retry on soft mount
| * 511811a7d3 nfs: keep server info for remounts
| * 0d317bcf81 NFSv4: Fixup smatch warning for ambiguous return
| * 57847c2ec5 ASoC: tas2781: Fix wrong loading calibrated data sequence
| * 92503b5caa ASoC: tas2552: Add TX path for capturing AUDIO-OUT data
| * e53a7f8afc nfc: nci: Fix uninit-value in nci_rx_work
| * f354dc8c7d selftests: net: kill smcrouted in the cleanup logic in amt.sh
| * f4df8c7670 ipv6: sr: fix missing sk_buff release in seg6_input_core
| * 521d21fa65 net: Always descend into dsa/ folder with CONFIG_NET_DSA enabled
| * 1d95dbaa6e x86/kconfig: Select ARCH_WANT_FRAME_POINTERS again when UNWINDER_FRAME_POINTER=y
| * 3a487e3cab perf/arm-dmc620: Fix lockdep assert in ->event_init()
| * 01f5809c78 xen/x86: add extra pages to unpopulated-alloc if available
| * d08e879983 regulator: bd71828: Don't overwrite runtime voltages
| * b1bee99312 blk-cgroup: Properly propagate the iostat update up the hierarchy
| * 714e59b545 blk-cgroup: fix list corruption from reorder of WRITE ->lqueued
| * d4a60298ac blk-cgroup: fix list corruption from resetting io stat
| * 3652ac87c9 drm/nouveau: use tile_mode and pte_kind for VM_BIND bo allocations
| * 6446c1ca2d nouveau: add an ioctl to report vram usage
| * 929eaf32dd nouveau: add an ioctl to return vram bar size.
| * 38c2fd9aed ASoC: mediatek: mt8192: fix register configuration for tdm
| * 9054c474f9 ALSA: hda: cs35l56: Fix lifetime of cs_dsp instance
| * f95fde17ed ALSA: hda: cs35l56: Initialize all ASP1 registers
| * 3fd715d617 ASoC: cs35l56: Fix to ensure ASP1 registers match cache
| * 6e359be497 ALSA: hda/cs_dsp_ctl: Use private_free for control cleanup
| * 1b5cfb411b null_blk: Fix the WARNING: modpost: missing MODULE_DESCRIPTION()
| * 2d062f7468 ASoC: tas2781: Fix a warning reported by robot kernel test
| * a1955a6df9 drm/msm/a6xx: Avoid a nullptr dereference when speedbin setting fails
| * 2a09eb7e36 selftests/powerpc/dexcr: Add -no-pie to hashchk tests
| * 6ead3eccf6 drm: zynqmp_dpsub: Always register bridge
| * f33888b9b6 Revert "drm/bridge: ti-sn65dsi83: Fix enable error path"
| * 89af84e651 media: cec: core: avoid confusing "transmit timed out" message
| * 1af4790bc1 media: cec: core: avoid recursive cec_claim_log_addrs
| * cceda163b7 media: cec: cec-api: add locking in cec_release()
| * 8f40b92f54 media: cec: cec-adap: always cancel work in cec_transmit_msg_fh
| * 75aafce64a media: sunxi: a83-mips-csi2: also select GENERIC_PHY
| * 24b9362c9f cxl/region: Fix cxlr_pmem leaks
| * d5ac654bab cxl/trace: Correct DPA field masks for general_media & dram events
| * 8a328396a5 um: Fix the declaration of kasan_map_memory
| * a5cd856087 um: Fix the -Wmissing-prototypes warning for get_thread_reg
| * 59e34e390c um: Fix the -Wmissing-prototypes warning for __switch_mm
| * adb1c558c6 powerpc/pseries: Add failure related checks for h_get_mpp and h_get_ppp
| * 3d50e4cef2 media: flexcop-usb: fix sanity check of bNumEndpoints
| * 408facc796 platform/x86: thinkpad_acpi: Take hotkey_mutex during hotkey_exit()
| * ec653f4474 tools/arch/x86/intel_sdsi: Fix meter_certificate decoding
| * 8af4923b04 tools/arch/x86/intel_sdsi: Fix meter_show display
| * 42adfac5d2 tools/arch/x86/intel_sdsi: Fix maximum meter bundle length
| * c73d327327 media: mediatek: vcodec: fix possible unbalanced PM counter
| * f29a426420 media: mediatek: vcodec: add encoder power management helper functions
| * 19bd9537b6 drm/amdgpu: Fix buffer size in gfx_v9_4_3_init_ cp_compute_microcode() and rlc_microcode()
| * bdd5bbe967 drm/amdgpu: init microcode chip name from ip versions
| * a4c638ab25 Input: cyapa - add missing input core locking to suspend/resume functions
| * d410017a71 media: stk1160: fix bounds checking in stk1160_copy_video()
| * 3fe7b95312 drm/bridge: tc358775: fix support for jeida-18 and jeida-24
| * 873f676991 drm/msm/dpu: Add callback function pointer check before its call
| * 04c2fca455 drm/msm/dpu: stop using raw IRQ indices in the kernel output
| * 3bbe257c46 drm/msm/dpu: make the irq table size static
| * a70ce2bb1d drm/msm/dpu: add helper to get IRQ-related data
| * 186a82662d drm/msm/dpu: extract dpu_core_irq_is_valid() helper
| * 50cf1608f1 drm/msm/dpu: remove irq_idx argument from IRQ callbacks
| * 1fe1c9dc21 fs/ntfs3: Use variable length array instead of fixed size
| * 109d85a983 fs/ntfs3: Use 64 bit variable to avoid 32 bit overflow
| * 6c8054d590 fs/ntfs3: Check 'folio' pointer for NULL
| * 92ce7359f9 um: vector: fix bpfflash parameter evaluation
| * 434a06c38e um: Add winch to winch_handlers before registering winch IRQ
| * e98f29bf0b um: Fix return value in ubd_init()
| * 900d54bced drm/meson: gate px_clk when setting rate
| * 22432baba4 drm/mediatek: dp: Fix mtk_dp_aux_transfer return value
| * 3f388ca6a4 drm/msm/dpu: Always flush the slave INTF on the CTL
| * 01d8692b0c drm/msm/dsi: Print dual-DSI-adjusted pclk instead of original mode pclk
| * 755575a42c media: ov2680: Do not fail if data-lanes property is absent
| * 08754dd758 media: ov2680: Allow probing if link-frequencies is absent
| * a7e0a70ac6 media: ov2680: Clear the 'ret' variable on success
| * 9a496f7d18 media: v4l: Don't turn on privacy LED if streamon fails
| * 35556d0e1c media: v4l2-subdev: Document and enforce .s_stream() requirements
| * 4031c57f02 Input: pm8xxx-vibrator - correct VIB_MAX_LEVELS calculation
| * 063d89156f mmc: sdhci_am654: Fix ITAPDLY for HS400 timing
| * 2b8d2a6e53 mmc: sdhci_am654: Add ITAPDLYSEL in sdhci_j721e_4bit_set_clock
| * 3433a34063 mmc: sdhci_am654: Add OTAP/ITAP delay enable
| * 3525baf3a9 mmc: sdhci_am654: Drop lookup for deprecated ti,otap-del-sel
| * fa9a2c696a mmc: sdhci_am654: Write ITAPDLY for DDR52 timing
| * 57205cf9c1 mmc: sdhci_am654: Add tuning algorithm for delay chain
| * b003b8c15c Input: ims-pcu - fix printf string overflow
| * 69f245b86c dt-bindings: adc: axi-adc: add clocks property
| * a291998f8a dt-bindings: adc: axi-adc: update bindings for backend framework
| * 51a2049a2c eventfs: Have "events" directory get permissions from its parent
| * 281eaee393 eventfs: Free all of the eventfs_inode after RCU
| * 14aa4f3efc eventfs/tracing: Add callback for release of an eventfs_inode
| * e5c80b2352 eventfs: Create eventfs_root_inode to store dentry
| * 11244a4328 serial: sc16is7xx: fix bug in sc16is7xx_set_baud() when using prescaler
| * f0eb53ffd8 serial: sc16is7xx: replace hardcoded divisor value with BIT() macro
| * c6fecd0743 misc/pvpanic-pci: register attributes via pci_driver
| * e9194a954c misc/pvpanic: deduplicate common code
| * f68f3e3f5c iio: accel: mxc4005: Reset chip on probe() and resume()
| * 43424f7053 iio: accel: mxc4005: allow module autoloading via OF compatible
| * e26405d5b2 eventfs: Do not differentiate the toplevel events directory
| * 64a9a930af drm/amd/display: Revert Remove pixle rate limit for subvp
| * 242f11be47 drm/amd/display: Remove pixle rate limit for subvp
| * cb9f455e27 gpiolib: acpi: Fix failed in acpi_gpiochip_find() by adding parent node match
| * b3b8ba3752 dt-bindings: PCI: rockchip,rk3399-pcie: Add missing maxItems to ep-gpios
| * 916cf5d6ae s390/boot: Remove alt_stfle_fac_list from decompressor
| * 2102692eb2 s390/ipl: Fix incorrect initialization of nvme dump block
| * b34ea5b975 s390/ipl: Fix incorrect initialization of len fields in nvme reipl block
| * 2028823f1d s390/vdso: Use standard stack frame layout
| * 0e035cb818 s390/vdso: Create .build-id links for unstripped vdso files
| * 07423c9b43 kbuild: fix build ID symlinks to installed debug VDSO files
| * adacfc6dec kbuild: unify vdso_install rules
| * a422869153 s390/vdso: Generate unwind information for C modules
| * 6bd72dd0f7 s390/vdso64: filter out munaligned-symbols flag for vdso
| * 379ec9d95c LoongArch: Fix callchain parse error with kernel tracepoint events again
| * 5af155f9b1 perf pmu: Count sys and cpuid JSON events separately
| * 4ac93db3dd perf pmu: Assume sysfs events are always the same case
| * 930e16ac95 perf tools: Add/use PMU reverse lookup from config to name
| * 923b83bc86 perf tools: Use pmus to describe type from attribute
| * c5aaeae250 perf pmu: "Compat" supports regular expression matching identifiers
| * f989dc0090 perf pmu: Move pmu__find_core_pmu() to pmus.c
| * d37e53e8c8 perf test: Add a test for strcmp_cpuid_str() expression
| * a46c614411 perf stat: Don't display metric header for non-leader uncore events
| * 7723485af6 usb: fotg210: Add missing kernel doc description
| * f0cdc3e248 f2fs: fix to add missing iput() in gc_data_segment()
| * 1003d16ea2 perf daemon: Fix file leak in daemon_session__control
| * c546fef47c libsubcmd: Fix parse-options memory leak
| * 70d6dca403 serial: sh-sci: protect invalidating RXDMA on shutdown
| * 9f9341064a f2fs: compress: don't allow unaligned truncation on released compress inode
| * 8d2fc8ae67 f2fs: fix to release node block count in error path of f2fs_new_node_page()
| * 329edb7c9e f2fs: compress: fix to cover {reserve,release}_compress_blocks() w/ cp_rwsem lock
| * 81c975902b f2fs: compress: fix error path of inc_valid_block_count()
| * b8a742a8bd f2fs: introduce get_available_block_count() for cleanup
| * 5f8e5a096e f2fs: deprecate io_bits
| * 92b24f04d3 f2fs: compress: fix to update i_compr_blocks correctly
| * 9ec45f857a perf symbols: Fix ownership of string in dso__load_vmlinux()
| * c3cc465631 perf maps: Move symbol maps functions to maps.c
| * c5314cfa92 perf thread: Fixes to thread__new() related to initializing comm
| * 9029a775f0 perf report: Avoid SEGV in report__setup_sample_type()
| * e50576c7e6 perf ui browser: Avoid SEGV on title
| * 6902179a41 f2fs: fix block migration when section is not aligned to pow2
| * 40d76c393c f2fs: support file pinning for zoned devices
| * 066cec3709 f2fs: kill heap-based allocation
| * 61330214b2 f2fs: separate f2fs_gc_range() to use GC for a range
| * f0248ba6b6 f2fs: use BLKS_PER_SEG, BLKS_PER_SEC, and SEGS_PER_SEC
| * 42d48304f6 f2fs: support printk_ratelimited() in f2fs_printk()
| * 6496d63a16 f2fs: Clean up errors in segment.h
| * e02a267a69 PCI/EDR: Align EDR_PORT_LOCATE_DSM with PCI Firmware r3.3
| * 84ae90ba37 PCI/EDR: Align EDR_PORT_DPC_ENABLE_DSM with PCI Firmware r3.3
| * 787b7ddf43 dt-bindings: spmi: hisilicon,hisi-spmi-controller: fix binding references
| * 913a00ec6b extcon: max8997: select IRQ_DOMAIN instead of depending on it
| * a8860002ca perf ui browser: Don't save pointer to stack memory
| * 88b88dd7d8 perf bench internals inject-build-id: Fix trap divide when collecting just one DSO
| * cd99864e1f i2c: synquacer: Fix an error handling path in synquacer_i2c_probe()
| * bb220136ae i2c: cadence: Avoid fifo clear after start
| * ec3468221e ppdev: Add an error check in register_device
| * b596340b85 ppdev: Remove usage of the deprecated ida_simple_xx() API
| * 370c480410 stm class: Fix a double free in stm_register_device()
| * 4e125b96e3 usb: gadget: u_audio: Clear uac pointer when freed.
| * 453d3fa926 usb: gadget: u_audio: Fix race condition use of controls after free during gadget unbind.
| * 9eb15f24a0 dmaengine: idxd: Avoid unnecessary destruction of file_ida
| * 4ef5468e84 dt-bindings: phy: qcom,usb-snps-femto-v2: use correct fallback for sc8180x
| * 6357221b68 dt-bindings: phy: qcom,sc8280xp-qmp-ufs-phy: fix msm899[68] power-domains
| * dc14f0a2c6 watchdog: sa1100: Fix PTR_ERR_OR_ZERO() vs NULL check in sa1100dog_probe()
| * d47f51eb1f watchdog: bd9576: Drop "always-running" property
| * 9b1c063ffc watchdog: cpu5wdt.c: Fix use-after-free bug caused by cpu5wdt_trigger
| * cd283810f6 pinctrl: qcom: pinctrl-sm7150: Fix sdc1 and ufs special pins regs
| * dedf17b3af dt-bindings: pinctrl: mediatek: mt7622: fix array properties
| * 6954ae0177 VMCI: Fix an error handling path in vmci_guest_probe_device()
| * b5f31d1470 PCI: of_property: Return error for int_map allocation failure
| * 97ba21401b ovl: remove upper umask handling from ovl_create_upper()
| * 034968dbd8 leds: pwm: Disable PWM when going to suspend
| * a10c3d5ff9 pwm: Rename pwm_apply_state() to pwm_apply_might_sleep()
| * 6bb1efff9b perf intel-pt: Fix unassigned instruction op (discovered by MemorySanitizer)
| * 0053891e2f PCI: Wait for Link Training==0 before starting Link retrain
| * 65ce3fad7d microblaze: Remove early printk call from cpuinfo-static.c
| * 6240bd8981 microblaze: Remove gcc flag for non existing early_printk.c file
| * a758e99cd6 udf: Convert udf_expand_file_adinicb() to use a folio
| * 7745b1b785 udf: Remove GFP_NOFS allocation in udf_expand_file_adinicb()
| * 4d7d12b643 fpga: region: add owner module and take its refcount
| * 0bd22a4966 vfio/pci: fix potential memory leak in vfio_intx_enable()
| * e642622550 i915: make inject_virtual_interrupt() void
| * bb6f7de21d coresight: etm4x: Fix access to resource selector registers
| * 3840a3f37a coresight: etm4x: Safe access for TRCQCLTR
| * 0c575997de coresight: etm4x: Do not save/restore Data trace control registers
| * 42f016cd85 coresight: etm4x: Do not hardcode IOMEM access for register restore
| * 720d27664d iio: adc: adi-axi-adc: only error out in major version mismatch
| * d3513f1261 iio: adc: adi-axi-adc: move to backend framework
| * 184b2967d5 iio: adc: ad9467: convert to backend framework
| * 5fc4f0c01c iio: add the IIO backend framework
| * e1fc56c400 iio: buffer-dmaengine: export buffer alloc and free functions
| * b70042e4dc iio: adc: adi-axi-adc: convert to regmap
| * 864b42f8b3 iio: adc: ad9467: use chip_info variables instead of array
| * a679a40bd2 iio: adc: ad9467: use spi_get_device_match_data()
| * 08f5bd2032 iio: pressure: dps310: support negative temperature values
| * d3ced099f3 perf test shell arm_coresight: Increase buffer size for Coresight basic tests
| * e61cb35f56 perf docs: Document bpf event modifier
| * 0688c4f7c5 coresight: etm4x: Fix unbalanced pm_runtime_enable()
| * 1083681ea2 riscv: dts: starfive: visionfive 2: Remove non-existing TDM hardware
| * 1145fda91f iio: adc: stm32: Fixing err code to not indicate success
| * f841226818 f2fs: fix to check pinfile flag in f2fs_move_file_range()
| * 5632bdb4e9 f2fs: fix to relocate check condition in f2fs_fallocate()
| * 116d824f95 f2fs: compress: fix to relocate check condition in f2fs_ioc_{,de}compress_file()
| * 1d59aa23a3 f2fs: compress: fix to relocate check condition in f2fs_{release,reserve}_compress_blocks()
| * ff9504c045 perf bench uprobe: Remove lib64 from libc.so.6 binary path
| * f56632928a dt-bindings: PCI: rcar-pci-host: Add missing IOMMU properties
| * 479e4daae6 dt-bindings: PCI: rcar-pci-host: Add optional regulators
| * 829afc132f perf record: Fix debug message placement for test consumption
| * aa4158e316 perf record: Move setting tracking events before record__init_thread_masks()
| * e024e98e81 perf evlist: Add evlist__findnew_tracking_event() helper
| * 28a50a15d1 perf tests: Apply attributes to all events in object code reading test
| * fca6659b4e perf tests: Make "test data symbol" more robust on Neoverse N1
| * bf386f268b arm64: dts: meson: fix S4 power-controller node
| * e21a398d22 interconnect: qcom: qcm2290: Fix mas_snoc_bimc QoS port assignment
| * 28f5a08600 module: don't ignore sysfs_create_link() failures
| * 3431d265ea serial: sc16is7xx: add proper sched.h include for sched_set_fifo()
| * 967cb01d0a PCI: tegra194: Fix probe path for Endpoint mode
| * 46c6fc133d greybus: arche-ctrl: move device table to its right location
| * 749603af8f serial: max3100: Fix bitwise types
| * e8a10089ed serial: max3100: Update uart_driver_registered on driver removal
| * 93df2fba6c serial: max3100: Lock port->lock when calling uart_handle_cts_change()
| * 73c6ddb499 perf annotate: Fix annotation_calc_lines() to pass correct address to get_srcline()
| * 80e06e547d perf annotate: Use global annotation_options
| * 1157abdc2e perf top: Convert to the global annotation_options
| * e0af85d60b perf report: Convert to the global annotation_options
| * dfd02119ae perf annotate: Introduce global annotation_options
| * 260de04387 perf annotate: Split branch stack cycles information out of 'struct annotation_line'
| * 4ddf437cae perf machine thread: Remove exited threads by default
| * 7adc363bc2 perf record: Lazy load kernel symbols
| * 1f42814949 firmware: dmi-id: add a release callback function
| * 59767d1e30 dmaengine: idma64: Add check for dma_set_max_seg_size
| * 7eeef1e935 soundwire: cadence: fix invalid PDI offset
| * 6ee4ad5dfb perf stat: Do not fail on metrics on s390 z/VM systems
| * 32f615e0a5 usb: typec: ucsi: simplify partner's PD caps registration
| * ad864c123b usb: typec: ucsi: always register a link to USB PD device
| * 1ec229afd4 perf annotate: Get rid of duplicate --group option item
| * 30dc493b81 counter: linux/counter.h: fix Excess kernel-doc description warning
| * d7c4081c54 fpga: bridge: add owner module and take its refcount
| * 2da62a139a fpga: manager: add owner module and take its refcount
| * 4b3609e6c8 f2fs: fix to wait on page writeback in __clone_blkaddrs()
| * 2b2611a424 f2fs: multidev: fix to recognize valid zero block address
| * ac12df6b97 phy: qcom: qmp-combo: fix duplicate return in qmp_v4_configure_dp_phy
| * 518e2c46b5 greybus: lights: check return of get_channel_from_mode
| * fe92a949b2 iio: core: Leave private pointer NULL when no private data supplied
| * 5c53a28ab2 perf probe: Add missing libgen.h header needed for using basename()
| * 834e603dbe perf record: Delete session after stopping sideband thread
| * 2f593fd9d3 net: wangxun: fix to change Rx features
| * 941e1c6d86 sched/core: Fix incorrect initialization of the 'burst' parameter in cpu_max_write()
| * 4d9d099ab2 sched/fair: Allow disabling sched_balance_newidle with sched_relax_domain_level
| * ee3577c5d3 af_packet: do not call packet_read_pending() from tpacket_destruct_skb()
| * f28bdc2ee5 netrom: fix possible dead-lock in nr_rt_ioctl()
| * 57fa96c04e net: qrtr: ns: Fix module refcnt
| * 4488617e5e net: bridge: mst: fix vlan use-after-free
| * 76282afa17 selftests: net: bridge: increase IGMP/MLD exclude timeout membership interval
| * 1abb371147 net: bridge: xmit: make sure we have at least eth header len bytes
| * 00ea83bfb4 modules: Drop the .export_symbol section from the final modules
| * 4aa2d5fd7e tracing/user_events: Fix non-spaced field matching
| * 4c40e1b76e tracing/user_events: Prepare find/delete for same name events
| * 2fc3d0ac09 tracing/user_events: Allow events to persist for perfmon_capable users
| * 3eb127dc40 RDMA/cma: Fix kmemleak in rdma_core observed during blktests nvme/rdma use siw
| * e011ea687f RDMA/IPoIB: Fix format truncation compilation errors
| * 382494aa88 selftests/kcmp: remove unused open mode
| * c1d8c429e4 SUNRPC: Fix gss_free_in_token_pages()
| * a658f011d8 bnxt_re: avoid shift undefined behavior in bnxt_qplib_alloc_init_hwq
| * 29feea56de RDMA/bnxt_re: Adds MSN table capability for Gen P7 adapters
| * 9a54460b33 RDMA/bnxt_re: Update the HW interface definitions
| * e300b1b95c RDMA/bnxt_re: Remove roundup_pow_of_two depth for all hardware queue resources
| * f52e649e93 RDMA/bnxt_re: Refactor the queue index update
| * 0b0d5701a8 of: module: add buffer overflow check in of_modalias()
| * 370a86dc97 ext4: remove the redundant folio_wait_stable()
| * 07fa88b0f3 ext4: fix potential unnitialized variable
| * f4fb561d52 sunrpc: removed redundant procp check
| * e873f36ec8 drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map()
| * d5c75ededb virt: acrn: stop using follow_pfn
| * c7cca4c61f ext4: avoid excessive credit estimate in ext4_tmpfile()
| * caaee1b858 x86/insn: Add VEX versions of VPDPBUSD, VPDPBUSDS, VPDPWSSD and VPDPWSSDS
| * 3d22be008b x86/insn: Fix PUSH instruction in x86 instruction decoder opcode map
| * 6973cb78f0 clk: qcom: mmcc-msm8998: fix venus clock issue
| * 631c54f07d clk: qcom: dispcc-sm8550: fix DisplayPort clocks
| * e91d89de5e clk: qcom: dispcc-sm6350: fix DisplayPort clocks
| * 7ef714778d clk: qcom: dispcc-sm8450: fix DisplayPort clocks
| * 65e528a69c lib/test_hmm.c: handle src_pfns and dst_pfns allocation failure
| * 6d06fc4edf clk: renesas: r9a07g043: Add clock and reset entry for PLIC
| * 6c7455605a clk: renesas: r8a779a0: Fix CANFD parent clock
| * 8696be3a5f IB/mlx5: Use __iowrite64_copy() for write combining stores
| * 03ff3e23ad RDMA/rxe: Fix incorrect rxe_put in error path
| * 13c7bb72d3 RDMA/rxe: Allow good work requests to be executed
| * 21b4c6d4d8 RDMA/rxe: Fix seg fault in rxe_comp_queue_pkt
| * 63cbb3e704 clk: qcom: clk-alpha-pll: remove invalid Stromer register offset
| * 1a91f05ca2 clk: rs9: fix wrong default value for clock amplitude
| * dd4b239184 clk: mediatek: mt8365-mm: fix DPI0 parent
| * 6f541a89ce RDMA/hns: Modify the print level of CQE error
| * 571f79eb1a RDMA/hns: Use complete parentheses in macros
| * b7f2f6d227 RDMA/hns: Fix GMV table pagesize
| * 63da190eeb RDMA/hns: Fix UAF for cq async event
| * 22c915af31 RDMA/hns: Fix deadlock on SRQ async events.
| * db415a39ff RDMA/hns: Fix return value in hns_roce_map_mr_sg
| * 6b4f693992 iommu: Undo pasid attachment only for the devices that have succeeded
| * 888b03fcd1 clk: mediatek: pllfh: Don't log error for missing fhctl node
| * 499569c8ab RDMA/mlx5: Adding remote atomic access flag to updatable flags
| * 5880d8ca57 RDMA/mlx5: Uncacheable mkey has neither rb_key or cache_ent
| * 73c5f64cfa clk: samsung: exynosautov9: fix wrong pll clock id value
| * 205b6dd5b7 media: cadence: csi2rx: configure DPHY before starting source stream
| * 6040fcea46 drm/edid: Parse topology block for all DispID structure v1.x
| * b4c5086669 drm/rockchip: vop2: Do not divide height twice for YUV
| * 4b3421c2f6 media: uvcvideo: Add quirk for Logitech Rally Bar
| * dda6efae16 drm/mipi-dsi: use correct return type for the DSC functions
| * 04b001fa8b drm/panel: simple: Add missing Innolux G121X1-L03 format, flags, connector
| * bd4fb19e33 drm/bridge: anx7625: Update audio status while detecting
| * 587acea975 drm/panel: novatek-nt35950: Don't log an error when DSI host can't be found
| * 7962ae5aad drm/bridge: dpc3433: Don't log an error when DSI host can't be found
| * 52334bb44f drm/bridge: tc358775: Don't log an error when DSI host can't be found
| * 30cb32c7ec drm/bridge: lt9611uxc: Don't log an error when DSI host can't be found
| * ae2ac0aef9 drm/bridge: lt9611: Don't log an error when DSI host can't be found
| * 95b5eba76e drm/bridge: lt8912b: Don't log an error when DSI host can't be found
| * 95f959193c drm/bridge: icn6211: Don't log an error when DSI host can't be found
| * 4486576578 drm/bridge: anx7625: Don't log an error when DSI host can't be found
| * 656fb206ae ASoC: tracing: Export SND_SOC_DAPM_DIR_OUT to its value
| * 42c22b6305 drm: vc4: Fix possible null pointer dereference
| * 335cc45ef2 drm/arm/malidp: fix a possible null pointer dereference
| * cc20c87b04 media: atomisp: ssh_css: Fix a null-pointer dereference in load_video_binaries
| * 1cc6b956ad fbdev: sh7760fb: allow modular build
| * 983e91ad75 media: v4l2-subdev: Fix stream handling for crop API
| * c1a3803e5b media: i2c: et8ek8: Don't strip remove function when driver is builtin
| * dd271f1366 media: dt-bindings: ovti,ov2680: Fix the power supply names
| * db572c3973 media: ipu3-cio2: Request IRQ earlier
| * 525be5dc8e drm/msm/dp: Avoid a long timeout for AUX transfer if nothing connected
| * 554484e463 drm/msm/dp: allow voltage swing / pre emphasis of 3
| * dcf53e6103 drm: bridge: cdns-mhdp8546: Fix possible null pointer dereference
| * 0f070f0c3b media: radio-shark2: Avoid led_names truncations
| * d8076c9e02 media: rcar-vin: work around -Wenum-compare-conditional warning
| * f987b53c28 media: ngene: Add dvb_ca_en50221_init return value check
| * 750e384b9b ASoC: Intel: avs: Test result of avs_get_module_entry()
| * a1780d8a7c ASoC: Intel: avs: Fix potential integer overflow
| * 7976b78631 ASoC: Intel: avs: Fix ASRC module initialization
| * c81b6d6496 selftests: cgroup: skip test_cgcore_lesser_ns_open when cgroup2 mounted without nsdelegate
| * be84945440 fbdev: sisfb: hide unused variables
| * 28049d5a74 ASoC: SOF: Intel: mtl: Implement firmware boot state check
| * f0bf72d1b4 ASoC: SOF: Intel: mtl: Disable interrupts when firmware boot failed
| * 02be4ce0d0 ASoC: SOF: Intel: mtl: call dsp dump when boot retry fails
| * 6bdadbee34 ASoC: SOF: Intel: lnl: Correct rom_status_reg
| * 8aeb3dc8b3 ASoC: SOF: Intel: mtl: Correct rom_status_reg
| * 368017b1bf ASoC: SOF: Intel: pci-mtl: fix ARL-S definitions
| * 1ef8f0b414 ASoC: SOF: Intel: pci-mtl: use ARL specific firmware definitions
| * 46c15b7130 ASoC: Intel: common: add ACPI matching tables for Arrow Lake
| * f0b4617d80 powerpc/fsl-soc: hide unused const variable
| * af26ea9901 drm/mediatek: Add 0 size check to mtk_drm_gem_obj
| * d5689998a0 drm/meson: vclk: fix calculation of 59.94 fractional rates
| * 1a7254525c ASoC: kirkwood: Fix potential NULL dereference
| * 4a1dc97212 fbdev: shmobile: fix snprintf truncation
| * 87b8dca6e0 ASoC: mediatek: Assign dummy when codec not specified for a DAI link
| * 9ceb5bd746 mtd: rawnand: hynix: fixed typo
| * adbd5da08e mtd: core: Report error if first mtd_otp_size() call fails in mtd_otp_nvmem_add()
| * a6498eac49 ASoC: Intel: avs: ssm4567: Do not ignore route checks
| * 48f3fe1373 ASoC: Intel: Disable route checks for Skylake boards
| * 4e8c8b37ee drm/amd/display: Fix potential index out of bounds in color transformation function
| * 859da9472b drm/panel: atna33xc20: Fix unbalanced regulator in the case HPD doesn't assert
| * 9429b12dfc drm/dp: Don't attempt AUX transfers when eDP panels are not powered
| * e71399aa6c drm/lcdif: Do not disable clocks on already suspended hardware
| * fc49f4d1a1 dev_printk: Add and use dev_no_printk()
| * 34d80802cb printk: Let no_printk() use _printk()
| * 5fdc39e024 drm/omapdrm: Fix console with deferred ops
| * c00e8fd749 fbdev: Provide I/O-memory helpers as module
| * e79f933ad1 drm/omapdrm: Fix console by implementing fb_dirty
| * ec1723175a drm/ci: update device type for volteer devices
| * aa03f049d4 drm/ci: add subset-1-gfx to LAVA_TAGS and adjust shards
| * 101bbe559d drm/ci: uprev mesa version: fix container build & crosvm
| * 45755ef11f drm/bridge: Fix improper bridge init order with pre_enable_prev_first
| * 5af2e235b0 Bluetooth: HCI: Remove HCI_AMP support
| * 75d7ac5e22 Bluetooth: hci_event: Remove code to removed CONFIG_BT_HS
| * 0a8af30a86 Bluetooth: Remove usage of the deprecated ida_simple_xx() API
| * f03d3322a7 Bluetooth: ISO: Fix BIS cleanup
| * dfde465d89 Bluetooth: qca: Fix error code in qca_read_fw_build_info()
| * e231034377 Bluetooth: compute LE flow credits based on recvbuf space
| * 3ddf170e4a net: micrel: Fix receiving the timestamp in the frame for lan8841
| * 5f9d2dcf71 mptcp: SO_KEEPALIVE: fix getsockopt support
| * d38625f719 net: fec: remove .ndo_poll_controller to avoid deadlocks
| * 965d940fb7 ax25: Fix reference count leak issue of net_device
| * 38eb01edfd ax25: Fix reference count leak issues of ax25_dev
| * 39da6f09e1 ax25: Use kernel universal linked list to implement ax25_dev_list
| * a1bf044583 riscv, bpf: make some atomic operations fully ordered
| * 46f17e7d4f s390/bpf: Emit a barrier for BPF_FETCH instructions
| * 1337ec94bc net/mlx5: Discard command completions in internal error
| * f9caccdd42 net/mlx5: Add a timeout to acquire the command queue semaphore
| * e93fc8d959 net/mlx5: Reload only IB representors upon lag disable/enable
| * 66a5f6e09c net/mlx5: Enable 4 ports multiport E-switch
| * 3398a40dcc ipv6: sr: fix invalid unregister error path
| * 6c6b74edc9 ipv6: sr: fix incorrect unregister order
| * 58fd673b05 ipv6: sr: add missing seg6_local_exit
| * 78741b4caa net: openvswitch: fix overwriting ct original tuple for ICMPv6
| * 108ec8bf64 net: usb: smsc95xx: stop lying about skb->truesize
| * 0688d4e499 af_unix: Fix data races in unix_release_sock/unix_stream_sendmsg
| * 8f6f82d6a2 net: ethernet: cortina: Locking fixes
| * 1ebaa96f97 selftests: net: move amt to socat for better compatibility
| * 9d601b81f1 selftests: net: add missing config for amt.sh
| * 229d4a32b5 selftests: net: add more missing kernel config
| * 5de5aeb98f eth: sungem: remove .ndo_poll_controller to avoid deadlocks
| * 11dd90c11a net: ipv6: fix wrong start position when receive hop-by-hop fragment
| * 68d38724cf m68k: mac: Fix reboot hang on Mac IIci
| * f3baf0f4f9 m68k: Fix spinlock race in kernel thread creation
| * 979d764ebd net: usb: sr9700: stop lying about skb->truesize
| * 80cb2f61a6 usb: aqc111: stop lying about skb->truesize
| * 18f59aab33 HID: amd_sfh: Handle "no sensors" in PM operations
| * 9d08e7fd44 wifi: mwl8k: initialize cmd->addr[] properly
| * db9214833e x86/numa: Fix SRAT lookup of CFMWS ranges with numa_fill_memblks()
| * 4c62c6c8a0 kernel/numa.c: Move logging out of numa.h
| * 0d5cfcede0 scsi: qla2xxx: Fix debugfs output for fw_resource_count
| * 563e609275 scsi: qedf: Ensure the copied buf is NUL terminated
| * 204714e680 scsi: bfa: Ensure the copied buf is NUL terminated
| * 5386f6734d HID: intel-ish-hid: ipc: Add check for pci_alloc_irq_vectors
| * c3ae972a22 selftests/bpf: Fix pointer arithmetic in test_xdp_do_redirect
| * 1ec7ccb4cd kunit: Fix kthread reference
| * 2d43d30aaf selftests: default to host arch for LLVM builds
| * 381079197e selftests/resctrl: fix clang build failure: use LOCAL_HDRS
| * 3af6ed233a selftests/binderfs: use the Makefile's rules, not Make's implicit rules
| * ed74398642 wifi: nl80211: Avoid address calculations via out of bounds array indexing
| * 166c9d2eef libbpf: Fix error message in attach_kprobe_multi
| * 35e001ce84 wifi: mt76: mt7603: add wpdma tx eof flag for PSE client reset
| * bdd2255fcf wifi: mt76: mt7603: fix tx queue of loopback packets
| * 1f29d8571f Revert "sh: Handle calling csum_partial with misaligned data"
| * 78a12934b7 sh: kprobes: Merge arch_copy_kprobe() into arch_prepare_kprobe()
| * 6675c541f5 bpf: Add BPF_PROG_TYPE_CGROUP_SKB attach type enforcement in BPF_LINK_CREATE
| * b33a81e4ec wifi: ar5523: enable proper endpoint verification
| * 39f8a29330 bpf: Fix verifier assumptions about socket->sk
| * 62eb07923f wifi: carl9170: add a proper sanity check for endpoints
| * d43a8c7ec0 macintosh/via-macii: Fix "BUG: sleeping function called from invalid context"
| * 7a44f4944b net: give more chances to rcu in netdev_wait_allrefs_any()
| * a7678a16c2 drivers/perf: hisi: hns3: Actually use devm_add_action_or_reset()
| * be1fa711e5 drivers/perf: hisi: hns3: Fix out-of-bound access when valid event group
| * 8e9aab2492 drivers/perf: hisi_pcie: Fix out-of-bound access when valid event group
| * a80814fe91 pwm: sti: Simplify probe function using devm functions
| * cedd7e5369 pwm: sti: Prepare removing pwm_chip from driver data
| * 00bb933578 tcp: avoid premature drops in tcp_add_backlog()
| * a47027919d net: dsa: mv88e6xxx: Avoid EEPROM timeout without EEPROM on 88E6250-family switches
| * d1e3dc19d5 net: dsa: mv88e6xxx: Add support for model-specific pre- and post-reset handlers
| * d0e874a348 wifi: ath10k: populate board data for WCN3990
| * abd2e71185 cpufreq: brcmstb-avs-cpufreq: ISO C90 forbids mixed declarations
| * e1dcff6e29 scsi: ufs: core: mcq: Fix ufshcd_mcq_sqe_search()
| * 51929a8db8 selftests/bpf: Fix a fd leak in error paths in open_netns
| * e19681ae6c gfs2: do_xmote fixes
| * b68b9dd723 gfs2: finish_xmote cleanup
| * d6b412c510 gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn
| * 7c2bc932b6 gfs2: Mark withdraws as unlikely
| * 0636b34b44 gfs2: Fix potential glock use-after-free on unmount
| * 18dfb29644 gfs2: Remove ill-placed consistency check
| * d312fbf6a2 gfs2: No longer use 'extern' in function declarations
| * 0db3b4e502 gfs2: Rename gfs2_lookup_{ simple => meta }
| * 9db1bdd714 gfs2: Convert gfs2_internal_read to folios
| * d92445b239 gfs2: Get rid of gfs2_alloc_blocks generation parameter
| * 09f8c676e4 wifi: ath10k: Fix an error code problem in ath10k_dbg_sta_write_peer_debug_trigger()
| * 55c54269fb dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition
| * 5b996de139 dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500 compatible
| * 27cacfc081 dt-bindings: thermal: loongson,ls2k-thermal: Fix binding check issues
| * 2d5ca6e4a2 thermal/drivers/tsens: Fix null pointer dereference
| * 95575de7de wifi: ath12k: fix out-of-bound access of qmi_invoke_handler()
| * 6ae55c7fa6 x86/purgatory: Switch to the position-independent small code model
| * 6c6c0afd35 scsi: hpsa: Fix allocation size for Scsi_Host private data
| * 52c266b486 scsi: libsas: Fix the failure of adding phy with zero-address to port
| * 1ea06a34f7 wifi: iwlwifi: mvm: init vif works only once
| * f84b9b25d0 cppc_cpufreq: Fix possible null pointer dereference
| * c0ed9a711e openrisc: traps: Don't send signals to kernel mode threads
| * 71d865be7c udp: Avoid call to compute_score on multiple sites
| * edcdeb8a4f x86/pat: Fix W^X violation false-positives when running as Xen PV guest
| * 29681171ff x86/pat: Restructure _lookup_address_cpa()
| * 308fba77bc x86/pat: Introduce lookup_address_in_pgd_attr()
| * 3e99f060cf cpufreq: exit() callback is optional
| * 99f3af0a1a tcp: increase the default TCP scaling ratio
| * ca19418abc tcp: define initial scaling factor value as a macro
| * a7fba17a05 selftests/bpf: Fix umount cgroup2 error in test_sockmap
| * dc03a37553 x86/boot/64: Clear most of CR4 in startup_64(), except PAE, MCE and LA57
| * abea81e6a7 gfs2: Fix "ignore unlock failures after withdraw"
| * 21d78e4c36 gfs2: Don't forget to complete delayed withdraw
| * 673f7120a6 ACPI: disable -Wstringop-truncation
| * acb5503dbb irqchip/loongson-pch-msi: Fix off-by-one on allocation error path
| * a9bbafa46c irqchip/alpine-msi: Fix off-by-one in allocation error path
| * 1d4e1fa2f2 locking/atomic/x86: Correct the definition of __arch_try_cmpxchg128()
| * 040c3a0024 ACPI: LPSS: Advertise number of chip selects via property
| * 776bad0b1f scsi: ufs: core: Perform read back after disabling UIC_COMMAND_COMPL
| * 92374b6a5a scsi: ufs: core: Perform read back after disabling interrupts
| * bfd29d5ea6 scsi: ufs: core: Perform read back after writing UTP_TASK_REQ_LIST_BASE_H
| * 872f68019b scsi: ufs: cdns-pltfrm: Perform read back after writing HCLKDIV
| * 8e5ede836b scsi: ufs: qcom: Perform read back after writing CGC enable
| * d2741b23b1 scsi: ufs: qcom: Perform read back after writing unipro mode
| * 32402b2a9c scsi: ufs: qcom: Perform read back after writing REG_UFS_SYS1CLK_1US
| * 8f01dda10c scsi: ufs: qcom: Perform read back after writing reset bit
| * b17592380f bpf: prevent r10 register from being marked as precise
| * 7a7d4237e3 bpf: Pack struct bpf_fib_lookup
| * f92aebf170 bpftool: Mount bpffs on provided dir instead of parent dir
| * 8758646709 wifi: carl9170: re-fix fortified-memset warning
| * bc236ebc2a dlm: fix user space lock decision to copy lvb
| * 0fdbbe7ee7 bitops: add missing prototype check
| * f3531ac07b mlx5: stop warning for 64KB pages
| * 7dd2a9bb7b mlx5: avoid truncating error message
| * 6541f8ea76 qed: avoid truncating work queue length
| * 997a53102a enetc: avoid truncating error message
| * c5202a3889 ACPI: Fix Generic Initiator Affinity _OSC bit
| * 2bd572d421 sched/fair: Add EAS checks before updating root_domain::overutilized
| * c078f2b492 wifi: iwlwifi: mvm: fix check in iwl_mvm_sta_fw_id_mask
| * f0fe67ca75 wifi: iwlwifi: reconfigure TLC during HW restart
| * adde919099 wifi: iwlwifi: mvm: select STA mask only for active links
| * 29caa34239 wifi: iwlwifi: mvm: allocate STA links only for active links
| * 6c166d1646 wifi: ieee80211: fix ieee80211_mle_basic_sta_prof_size_ok()
| * 9fa391354a x86/boot: Ignore relocations in .notes sections in walk_relocs() too
| * 22c3d94cd4 wifi: mt76: mt7915: workaround too long expansion sparse warnings
| * 9cf8052afc wifi: ath12k: use correct flag field for 320 MHz channels
| * ba3647aa16 bpftool: Fix missing pids during link show
| * 424e5ac976 wifi: ath11k: don't force enable power save on non-running vdevs
| * c37466406f wifi: brcmfmac: pcie: handle randbuf allocation failure
| * 014e4e9275 wifi: ath10k: poll service ready message before failing
| * e5d98cc331 block: support to account io_ticks precisely
| * 99bbbd9aea block: fix and simplify blkdevparts= cmdline parsing
| * 910717920c block: refine the EOF check in blkdev_iomap_begin
| * e8d340f809 crypto: qat - specify firmware files for 402xx
| * c9566b812c md: fix resync softlockup when bitmap size is less than array size
| * 1fc82121d0 lkdtm: Disable CFI checking for perms functions
| * fbadcde157 soc: qcom: pmic_glink: Make client-lock non-sleeping
| * 7880dbf4ea kunit/fortify: Fix mismatched kvalloc()/vfree() usage
| * fe3a28db03 null_blk: Fix missing mutex_destroy() at module removal
| * 19e9452d73 soc: mediatek: cmdq: Fix typo of CMDQ_JUMP_RELATIVE
| * 0cac39347f firmware: qcom: scm: Fix __scm and waitq completion variable initialization
| * 8fc7934635 soc: qcom: pmic_glink: notify clients about the current state
| * d02c6eb5d3 soc: qcom: pmic_glink: don't traverse clients list without a lock
| * 840565b135 s390/mm: Re-enable the shared zeropage for !PV and !skeys KVM guests
| * b410a6c84d mm/userfaultfd: Do not place zeropages when zeropages are disallowed
| * f32f810dcc io-wq: write next_work before dropping acct_lock
| * af82d8d217 jffs2: prevent xattr node from overflowing the eraseblock
| * c4f49d3fc1 ARM: configs: sunxi: Enable DRM_DW_HDMI
| * afb39909bf rcu: Fix buffer overflow in print_cpu_stall_info()
| * 32d988f48e rcu-tasks: Fix show_rcu_tasks_trace_gp_kthread buffer overflow
| * 1319dbd64b io_uring: use the right type for work_llist empty check
| * a750b846c1 s390/cio: fix tracepoint subchannel type field
| * b39d0d6617 crypto: x86/sha512-avx2 - add missing vzeroupper
| * 1c5bce29d0 crypto: x86/sha256-avx2 - add missing vzeroupper
| * ba0aa694c3 crypto: x86/nh-avx2 - add missing vzeroupper
| * 4e9293d660 crypto: ccp - drop platform ifdef checks
| * 45b9292175 parisc: add missing export of __cmpxchg_u8()
| * fd848dc7e2 nilfs2: fix out-of-range warning
| * 2ed750b7ae ecryptfs: Fix buffer size for tag 66 packet
| * 25edcae667 firmware: raspberrypi: Use correct device for DMA mappings
| * d8c42a6e61 mm/slub, kunit: Use inverted data to corrupt kmem cache
| * d0f14ae223 crypto: bcm - Fix pointer arithmetic
| * d142957377 openpromfs: finish conversion to the new mount API
| * 396bc5e54b nvmet: prevent sprintf() overflow in nvmet_subsys_nsid_exists()
| * daa27fd2e1 ksmbd: fix uninitialized symbol 'share' in smb2_tree_connect()
| * 4f65f4defe epoll: be better about file lifetimes
| * 71de5fc303 nvmet: fix nvme status code when namespace is disabled
| * ae451994ba nvmet-tcp: fix possible memory leak when tearing down a controller
| * b6eaa53f95 nvme: cancel pending I/O if nvme controller is in terminal state
| * 2ab74bf282 nvmet-auth: replace pr_debug() with pr_err() to report an error.
| * 57a23adbc4 nvmet-auth: return the error code to the nvmet_auth_host_hash() callers
| * 8871cab467 nvme: find numa distance only if controller has valid numa id
| * 214301d0be x86/mm: Remove broken vsyscall emulation code from the page fault code
| * 6c49ba4025 drm/amdkfd: Flush the process wq before creating a kfd_process
| * de23d906b2 drm/amd/display: Disable seamless boot on 128b/132b encoding
| * fefcd1c75b drm/amd/display: Fix DC mode screen flickering on DCN321
| * b6fab47b64 drm/amd/display: Add VCO speed parameter for DCN31 FPU
| * 53a7d15331 drm/amd/display: Allocate zero bw after bw alloc enable
| * e0760e3847 drm/amd/display: Add dtbclk access to dcn315
| * 422f3259ac drm/amdgpu: Fix VRAM memory accounting
| * cc73306bf4 ALSA: hda: intel-dsp-config: harden I2C/I2S codec detection
| * 9973c05871 ASoC: da7219-aad: fix usage of device_get_named_child_node()
| * ae14ac3bc0 platform/x86: ISST: Add Grand Ridge to HPM CPU list
| * 3a83d0d284 softirq: Fix suspicious RCU usage in __do_softirq()
| * 107c893e0a ALSA: emu10k1: make E-MU FPGA writes potentially more reliable
| * af8dc212f7 bpf, x86: Fix PROBE_MEM runtime load check
| * 37c275727a fpga: dfl-pci: add PCI subdevice ID for Intel D5005 card
| * 9647947786 Input: xpad - add support for ASUS ROG RAIKIRI
| * 59e9cd63a5 KVM: selftests: Add test for uaccesses to non-existent vgic-v2 CPUIF
| * 02c36fe481 ASoC: rt715-sdca: volume step modification
| * be91170bee ASoC: rt715: add vendor clear control register
| * 91a0bd4e9c ASoC: cs35l41: Update DSP1RX5/6 Sources for DSP config
| * 968f6983d4 regulator: vqmmc-ipq4019: fix module autoloading
| * 5c0b06dca4 regulator: qcom-refgen: fix module autoloading
| * b084d3f577 ASoC: rt722-sdca: add headset microphone vrefo setting
| * dace61d6dc ASoC: rt722-sdca: modify channel number to support 4 channels
| * b642f447cf ASoC: dt-bindings: rt5645: add cbj sleeve gpio property
| * 7904b06629 ASoC: rt5645: Fix the electric noise due to the CBJ contacts floating
| * f6bb8d6c2a ASoC: acp: Support microphone from device Acer 315-24p
| * 58872c444a ASoC: SOF: pcm: Restrict DSP D0i3 during S0ix to IPC3
| * a73f1e25d5 ALSA: hda: cs35l56: Exit cache-only after cs35l56_wait_for_firmware_boot()
| * 3ad4d29b65 regulator: irq_helpers: duplicate IRQ name
| * 0813333069 ASoC: Intel: bytcr_rt5640: Apply Asus T100TA quirk to Asus T100TAM too
| * 02580c6afd sched/isolation: Fix boot crash when maxcpus < first housekeeping CPU
| * 1bb8751478 selftests: sud_test: return correct emulated syscall value on RISC-V
| * 9208e9c8bd drm/etnaviv: fix tx clock gating on some GC7000 variants
| * b2959fdd3a LoongArch: Lately init pmu after smp is online
| * 976b74fa60 cpu: Ignore "mitigations" kernel parameter if CPU_MITIGATIONS=n
| * d4ed998487 Revert "net: txgbe: fix clk_name exceed MAX_DEV_ID limits"
| * d6a2007376 Revert "net: txgbe: fix i2c dev name cannot match clkdev"
| * 39cfce7516 drm/amdgpu/mes: fix use-after-free issue
| * 67aa2a7b83 drm/amdgpu: Fix the ring buffer size for queue VM flush
| * bdbb7611dd drm/amdkfd: Add VRAM accounting for SVM migration
| * 7e12479958 drm/amd/pm: Restore config space after reset
| * 04cf241fe5 drm/amdgpu: Update BO eviction priorities
| * 17f689f10f drm/amd/display: Set color_mgmt_changed to true on unsuspend
| * 85f0812b6d net: usb: qmi_wwan: add Telit FN920C04 compositions
| * ca2da54610 HID: mcp-2221: cancel delayed_work only when CONFIG_IIO is enabled
| * e26d4063d2 dt-bindings: rockchip: grf: Add missing type to 'pcie-phy' node
| * 125c0dcc00 wifi: cfg80211: fix the order of arguments for trace events of the tx_rx_evt class
| * ea2121cdc7 wifi: mac80211: ensure beacon is non-S1G prior to extracting the beacon timestamp field
| * 0cfadb49ef wifi: mac80211: don't use rate mask for scanning
| * 09133f4b56 KEYS: asymmetric: Add missing dependencies of FIPS_SIGNATURE_SELFTEST
| * 21c7e4587e KEYS: asymmetric: Add missing dependency on CRYPTO_SIG
| * 2f103287ef ALSA: Fix deadlocks with kctl removals at disconnection
| * e644036a3e ALSA: core: Fix NULL module pointer assignment at card init
| * 8d04efceb4 ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 440/460 G11.
| * 5698ba6932 ksmbd: ignore trailing slashes in share paths
| * 6772584945 ksmbd: avoid to send duplicate oplock break notifications
| * 579a0c6979 fs/ntfs3: Break dir enumeration if directory contents error
| * 84906740dc fs/ntfs3: Fix case when index is reused during tree transformation
| * e4fd2dce71 fs/ntfs3: Taking DOS names into account during link counting
| * df1f6ed23b fs/ntfs3: Remove max link count info display during driver init
| * a8799662fe nilfs2: fix potential hang in nilfs_detach_log_writer()
| * f81fd00610 nilfs2: fix unexpected freezing of nilfs_segctor_sync()
| * f9186bba4e nilfs2: fix use-after-free of timer for log writer thread
| * d65984358a net: smc91x: Fix m68k kernel compilation for ColdFire CPU
| * 77237eabdc net: lan966x: remove debugfs directory in probe() error path
| * 5cd17f0e74 net: ti: icssg_prueth: Fix NULL pointer dereference in prueth_probe()
| * f678c3c336 tools/nolibc/stdlib: fix memory error in realloc()
| * 64f0c3bd2d tools/latency-collector: Fix -Wformat-security compile warns
| * 622ab95fdc net: mana: Fix the extra HZ in mana_hwc_send_request
| * af3274905b ring-buffer: Fix a race between readers and resize checks
| * 68222d7b4b r8169: Fix possible ring buffer corruption on fragmented Tx packets.
| * 766e3bacc7 Revert "r8169: don't try to disable interrupts if NAPI is, scheduled already"
| * a9886aad5d io_uring: fail NOP if non-zero op flags is passed in
| * 68a767dd69 Input: try trimming too long modalias strings
| * e4a1d0aa0d serial: 8520_mtk: Set RTS on shutdown for Rx in-band wakeup
| * 7e16930d46 serial: 8250_bcm7271: use default_mux_rate if possible
| * c6e1650cf5 speakup: Fix sizeof() vs ARRAY_SIZE() bug
| * 62c3763dcb tty: n_gsm: fix missing receive state reset after mode switch
| * 774d83b008 tty: n_gsm: fix possible out-of-bounds in gsm0_receive()
| * 7b4881da5b ftrace: Fix possible use-after-free issue in ftrace_location()
| * 775de4e954 selftests/ftrace: Fix BTFARG testcase to check fprobe is enabled correctly
| * b1c2d09a40 x86/tsc: Trust initial offset in architectural TSC-adjust MSRs
* | dc53968049 Merge branch 'android15-6.6' into branch 'android15-6.6-lts'
* | 693e05782f Revert "binder: fix max_thread type inconsistency"
* | cb89ca1e4d Merge 6.6.32 into android15-6.6-lts
|\|
| * 91de249b68 Linux 6.6.32
| * 3ffef55116 block: add a partscan sysfs attribute for disks
| * d6b6dfff6c block: add a disk_has_partscan helper
| * fe4549b1d6 Docs/admin-guide/mm/damon/usage: fix wrong example of DAMOS filter matching sysfs file
| * 71483049de docs: kernel_include.py: Cope with docutils 0.21
| * 1266e5a8f5 admin-guide/hw-vuln/core-scheduling: fix return type of PR_SCHED_CORE_GET
| * 1c652e1e10 KEYS: trusted: Do not use WARN when encode fails
| * 26c6d7dc8c remoteproc: mediatek: Make sure IPI buffer fits in L2TCM
| * 642069561e serial: kgdboc: Fix NMI-safety problems from keyboard reset code
| * 40b963e45c usb: typec: tipd: fix event checking for tps6598x
| * 2f95dfb647 usb: typec: ucsi: displayport: Fix potential deadlock
| * a202b26d95 net: usb: ax88179_178a: fix link status when link is set to down/up
| * ec96bcf5f9 usb: dwc3: Wait unconditionally after issuing EndXfer command
| * 71df2cb286 binder: fix max_thread type inconsistency
| * c364e7a34c drm/amdgpu: Fix possible NULL dereference in amdgpu_ras_query_error_status_helper()
| * f9b877a7ee erofs: reliably distinguish block based and fscache mode
| * 3924179ba9 erofs: get rid of erofs_fs_context
| * fcb05fee00 bpf: Add missing BPF_LINK_TYPE invocations
| * f70d849b67 kselftest: Add a ksft_perror() helper
| * 7b4bd57cf0 mmc: core: Add HS400 tuning in HS400es initialization
| * e62835264d KEYS: trusted: Fix memory leak in tpm2_key_encode()
| * ad3f7986c5 Bluetooth: L2CAP: Fix div-by-zero in l2cap_le_flowctl_init()
| * cfe560c705 Bluetooth: L2CAP: Fix slab-use-after-free in l2cap_connect()
| * 4d29fd53a0 ice: remove unnecessary duplicate checks for VF VSI ID
| * 0ca683f921 ice: pass VSI pointer into ice_vc_isvalid_q_id
| * 3a7ac49029 net: ks8851: Fix another TX stall caused by wrong ISR flag handling
| * 7e4f50dfc9 drm/amd/display: Fix division by zero in setup_dsc_config
| * d4a079d146 smb: smb2pdu.h: Avoid -Wflex-array-member-not-at-end warnings
| * 5a65254c4c ksmbd: add continuous availability share parameter
| * 07e76ea179 cifs: Add tracing for the cifs_tcon struct refcounting
| * 2004e41cd2 smb: client: instantiate when creating SFU files
| * 01bce099af smb: client: fix NULL ptr deref in cifs_mark_open_handles_for_deleted_file()
| * dbd2df36cd smb3: add trace event for mknod
| * 8aff8b8b17 smb311: additional compression flag defined in updated protocol spec
| * a9aa7a776e smb311: correct incorrect offset field in compression header
| * c1f3c8204e cifs: Move some extern decls from .c files to .h
| * 39bdc4197a ksmbd: fix potencial out-of-bounds when buffer offset is invalid
| * 9e4937cbc1 ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16()
| * 74dc3e5bf6 ksmbd: Fix spelling mistake "connction" -> "connection"
| * 27b40b7bfc ksmbd: fix possible null-deref in smb_lazy_parent_lease_break_close
| * 8b2326963d cifs: remove redundant variable assignment
| * 1598a015c7 cifs: fixes for get_inode_info
| * 91cdeb0d4b cifs: defer close file handles having RH lease
| * 8df4bcdb0a ksmbd: add support for durable handles v1/v2
| * 665e858830 ksmbd: mark SMB2_SESSION_EXPIRED to session when destroying previous session
| * eb4a05e3c3 smb: common: simplify compression headers
| * fdd938b2b4 smb: common: fix fields sizes in compression_pattern_payload_v1
| * e8aee4f4d2 smb: client: negotiate compression algorithms
| * 25f3604fcd smb3: add dynamic trace point for ioctls
| * c057a809e1 smb: client: return reparse type in /proc/mounts
| * 5825240194 smb: client: set correct d_type for reparse DFS/DFSR and mount point
| * 97db416045 smb: client: parse uid, gid, mode and dev from WSL reparse points
| * 7449d736bb smb: client: introduce SMB2_OP_QUERY_WSL_EA
| * b93ac66fa2 smb: client: Fix a NULL vs IS_ERR() check in wsl_set_xattrs()
| * df0a8a1925 smb: client: add support for WSL reparse points
| * 831ffbd1c7 smb: client: reduce number of parameters in smb2_compound_op()
| * 84c597f7f9 smb: client: fix potential broken compound request
| * db0f1c0770 smb: client: move most of reparse point handling code to common file
| * c1468c7e0a smb: client: introduce reparse mount option
| * 1e60bc0e95 smb: client: retry compound request without reusing lease
| * b6e27f7fc2 smb: client: do not defer close open handles to deleted files
| * f93d145f90 smb: client: reuse file lease key in compound operations
| * cfb8f73da6 smb: client: get rid of smb311_posix_query_path_info()
| * a90f37e3d7 smb: client: parse owner/group when creating reparse points
| * e4232010b1 smb3: update allocation size more accurately on write completion
| * fff4045e71 smb: client: handle path separator of created SMB symlinks
| * 1b5f2928cc cifs: update the same create_guid on replay
| * 75417833bb ksmbd: Add kernel-doc for ksmbd_extract_sharename() function
| * cdd7870a5f cifs: set replay flag for retries of write command
| * 433042a91f cifs: commands that are retried should have replay flag set
| * a5df782031 smb: client: delete "true", "false" defines
| * 5cf3fddbd3 smb: Fix some kernel-doc comments
| * b4ca2942a0 cifs: new mount option called retrans
| * de2cadf4bf smb: client: don't clobber ->i_rdev from cached reparse points
| * 6789c83876 cifs: new nt status codes from MS-SMB2
| * b96ea433ff cifs: pick channel for tcon and tdis
| * 36f8070c9b cifs: minor comment cleanup
| * 8358f46bef cifs: remove redundant variable tcon_exist
| * 67ed045c5f ksmbd: vfs: fix all kernel-doc warnings
| * d4caa984c9 ksmbd: auth: fix most kernel-doc warnings
| * 42430638ac cifs: remove unneeded return statement
| * 8e6a3999e6 cifs: get rid of dup length check in parse_reparse_point()
| * 774c645247 cifs: Pass unbyteswapped eof value into SMB2_set_eof()
| * 88e07de246 smb3: Improve exception handling in allocate_mr_list()
| * d53fcb485f cifs: fix in logging in cifs_chan_update_iface
| * 304ff3c1b0 smb: client: handle special files and symlinks in SMB3 POSIX
| * 870c73abef smb: client: cleanup smb2_query_reparse_point()
| * 00ecebcb86 smb: client: allow creating symlinks via reparse points
| * a158bb66b1 smb: client: optimise reparse point querying
| * 02bcf865cc smb: client: allow creating special files via reparse points
| * 886b7fb455 smb: client: extend smb2_compound_op() to accept more commands
| * da70c1d3c5 smb: client: Fix minor whitespace errors and warnings
| * abea3c9ac8 smb: client: introduce cifs_sfu_make_node()
| * a7b537b3be cifs: fix use after free for iface while disabling secondary channels
| * bb536892da Missing field not being returned in ioctl CIFS_IOC_GET_MNT_INFO
| * 210c8b9d49 smb3: minor cleanup of session handling code
| * cc3035d092 smb3: more minor cleanups for session handling routines
| * b74c8d9be3 smb3: minor RDMA cleanup
| * 9c88aae1e4 cifs: print server capabilities in DebugData
| * 69a1669a6b smb: use crypto_shash_digest() in symlink_hash()
| * 5b3c76351b Add definition for new smb3.1.1 command type
| * c5c63108a8 SMB3: clarify some of the unused CreateOption flags
| * 6bd52f41d8 cifs: Add client version details to NTLM authenticate message
* | d1e94b4e06 Reapply "net: usb: ax88179_178a: avoid writing the mac address before first reading"
* | ae95f64028 ANDROID: GKI: add wait_for_completion_interruptible_timeout to db845c symbol list
* | 638e92300e Revert "nvmem: add explicit config option to read old syntax fixed OF cells"
* | 53f6732e41 Revert "mtd: limit OTP NVMEM cell parse to non-NAND devices"
* | 477613d127 Merge 6.6.31 into android15-6.6-lts
|\|
| * e3d332aaf8 Linux 6.6.31
| * 9fd0198f7e md: fix kmemleak of rdev->serial
| * b02372814a Revert "selftests/bpf: Add netkit to tc_redirect selftest"
| * 7e0a322877 mm/hugetlb: fix DEBUG_LOCKS_WARN_ON(1) when dissolve_free_hugetlb_folio()
| * 845cf1c769 btrfs: do not wait for short bulk allocation
| * 25777f3f4e keys: Fix overwrite of key expiration on instantiation
| * 9fda5aed60 dmaengine: idxd: add a write() method for applications to submit work
| * 8cacaaa475 dmaengine: idxd: add a new security check to deal with a hardware erratum
| * c516453577 VFIO: Add the SPR_DSA and SPR_IAX devices to the denylist
| * 7bcba557d5 Bluetooth: qca: fix firmware check error path
| * 6b63e0ef4d Bluetooth: qca: fix info leak when fetching fw build id
| * ba307abed5 Bluetooth: qca: fix info leak when fetching board id
| * 9d23305f86 Bluetooth: qca: generalise device address check
| * c3a38d10b9 Bluetooth: qca: fix NVM configuration parsing
| * 427281f949 Bluetooth: qca: add missing firmware sanity checks
| * 2d88237004 Bluetooth: qca: fix wcn3991 device address check
| * 3019a9d3d2 Bluetooth: qca: fix invalid device address check
| * cc6f5aa151 eventfs: Do not treat events directory different than other directories
| * 0c56915c04 tracefs: Still use mount point as default permissions for instances
| * 5f91fc8279 tracefs: Reset permissions on remount if permissions are options
| * 100117279c ksmbd: do not grant v2 lease if parent lease key and epoch are not set
| * 329081691f ksmbd: avoid to send duplicate lease break notifications
| * b2ed549571 ksmbd: off ipv6only for both ipv4/ipv6 binding
| * 8a5e88cbde spi: microchip-core-qspi: fix setting spi bus clock rate
| * e9f867739b regulator: core: fix debugfs creation regression
| * a2da0e5c51 nvme-pci: Add quirk for broken MSIs
| * 377f3a9a3d mm/userfaultfd: reset ptes when close() for wr-protected ones
| * 468971c3f4 mm: use memalloc_nofs_save() in page_cache_ra_order()
| * 73b58d9d0c selftests/mm: fix powerpc ARCH check
| * 513f8dc02e x86/apic: Don't access the APIC when disabling x2APIC
| * 6555d7c06e hwmon: (pmbus/ucd9000) Increase delay from 250 to 500us
| * b6dbfd5bcc net: fix out-of-bounds access in ops_init
| * 8d0ab64261 arm64: dts: qcom: sa8155p-adp: fix SDHC2 CD pin configuration
| * af8af93c6a drm/amd/display: Fix incorrect DSC instance for MST
| * 7be093e452 drm/amd/display: Handle Y carry-over in VCP X.Y calculation
| * ca82830e45 drm/i915/bios: Fix parsing backlight BDB data
| * be59b2d3d9 drm/i915/gt: Automate CCS Mode setting during engine resets
| * b0624c032a drm/i915/audio: Fix audio time stamp programming for DP
| * 7b5fd3af4a drm/vmwgfx: Fix invalid reads in fence signaled events
| * e10644f8ad drm/vmwgfx: Fix Legacy Display Unit
| * 306e997778 drm/ttm: Print the memory decryption status just once
| * 4b4cff994a drm/amdkfd: don't allow mapping the MMIO HDP page with large pages
| * 1a88c18da4 Revert "drm/nouveau/firmware: Fix SG_DEBUG error with nvkm_firmware_ctor()"
| * 5e2af67d84 drm/nouveau/firmware: Fix SG_DEBUG error with nvkm_firmware_ctor()
| * 636a47adcf mei: me: add lunar lake point M DID
| * 785c2392c5 clk: sunxi-ng: a64: Set minimum and maximum rate for PLL-MIPI
| * 547263745e clk: sunxi-ng: common: Support minimum and maximum rate
| * ad066c9b06 slimbus: qcom-ngd-ctrl: Add timeout for wait operation
| * a69e1bdd77 dyndbg: fix old BUG_ON in >control parser
| * ca3cb17867 ASoC: ti: davinci-mcasp: Fix race condition during probe
| * f811ed9af9 ASoC: tegra: Fix DSPK 16-bit playback
| * 00d1a1bc1f net: bcmgenet: synchronize UMAC_CMD access
| * 51b72afb0d net: bcmgenet: synchronize use of bcmgenet_set_rx_mode()
| * 8b3845de02 net: bcmgenet: synchronize EXT_RGMII_OOB_CTRL access
| * ef31b4647e xtensa: fix MAKE_PC_FROM_RA second argument
| * ffd4917c1e tipc: fix UAF in error path
| * f8a139656c e1000e: change usleep_range to udelay in PHY mdic access
| * 5d6ad8f8ef kmsan: compiler_types: declare __no_sanitize_or_inline
| * 5eba2638a2 iio: accel: mxc4005: Interrupt handling fixes
| * 762da52556 iio: pressure: Fixes BME280 SPI driver data
| * b79fc18823 iio:imu: adis16475: Fix sync mode setting
| * 3bd0de0bb8 dt-bindings: iio: health: maxim,max30102: fix compatible check
| * c57824d4fe workqueue: Fix selection of wake_cpu in kick_pool()
| * daad878a50 mptcp: only allow set existing scheduler for net.mptcp.scheduler
| * aa0c07c1f2 mptcp: ensure snd_nxt is properly initialized on connect
| * ac6cf3ce9b mm/slab: make __free(kfree) accept error pointers
| * 6c9c7c1e63 maple_tree: fix mas_empty_area_rev() null pointer dereference
| * 6a911b8884 btrfs: set correct ram_bytes when splitting ordered extent
| * e42004fd29 btrfs: add missing mutex_unlock in btrfs_relocate_sys_chunks()
| * 5e651695c3 firewire: ohci: fulfill timestamp for some local asynchronous transaction
| * a34dd17da9 ALSA: hda/realtek: Fix mute led of HP Laptop 15-da3001TU
| * 789326cafb usb: typec: tcpm: Check for port partner validity before consuming it
| * b16abab1fb usb: typec: tcpm: unregister existing source caps before re-registration
| * 24e2f570f2 usb: typec: tcpm: clear pd_event queue in PORT_RESET
| * 000f994455 usb: dwc3: core: Prevent phy suspend during init
| * 2d8466c9a8 usb: xhci-plat: Don't include xhci.h
| * 1a15d6e242 usb: gadget: f_fs: Fix a race condition when processing setup packets.
| * 73c05ad46b usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete
| * 7a54e5052b usb: gadget: uvc: use correct buffer size when parsing configfs lists
| * 2f2886aede usb: gadget: composite: fix OS descriptors w_value logic
| * 63533549ff USB: core: Fix access violation during port device removal
| * 7fce5501d7 usb: ohci: Prevent missed ohci interrupts
| * 480c3abbba usb: Fix regression caused by invalid ep0 maxpacket in virtual SuperSpeed device
| * d5f0c5ea3f usb: typec: ucsi: Fix connector check on init
| * 4184b7d854 usb: typec: ucsi: Check for notifications after init
| * 148ed8b4d6 Reapply "drm/qxl: simplify qxl_fence_wait"
| * 1fe60ee709 firewire: nosy: ensure user_length is taken into account when fetching packet contents
| * 0b76a4f723 btrfs: fix kvcalloc() arguments order in btrfs_ioctl_send()
| * 0c7ed3ed35 drm/amdgpu: once more fix the call oder in amdgpu_ttm_move() v2
| * 52c1af381c drm/amdgpu: Fix comparison in amdgpu_res_cpu_visible
| * 7e30307744 drm/amd/display: Atom Integrated System Info v2_2 for DCN35
| * 883e4bbf06 gpiolib: cdev: fix uninitialised kfifo
| * 309364bc32 gpiolib: cdev: relocate debounce_period_us from struct gpio_desc
| * 95ca7c90ea gpiolib: cdev: Fix use after free in lineinfo_changed_notify
| * 6c83a8f236 dm/amd/pm: Fix problems with reboot/shutdown for some SMU 13.0.4/13.0.11 users
| * 1b9e8de483 drm/connector: Add \n to message about demoting connector force-probes
| * fa2d2e2d8e drm/meson: dw-hdmi: add bandgap setting for g12
| * dbe2cf9f09 drm/meson: dw-hdmi: power up phy on device init
| * 7019a64165 net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family
| * 5c623fe053 net: hns3: fix kernel crash when devlink reload during initialization
| * 5a0298f500 net: hns3: fix port vlan filter not disabled issue
| * f806911c22 net: hns3: use appropriate barrier function after setting a bit value
| * 5d73b414a0 net: hns3: release PTP resources if pf initialization failed
| * 8ed4390670 net: hns3: change type of numa_node_mask as nodemask_t
| * 06ce87195a net: hns3: direct return when receive a unknown mailbox message
| * c9a5a9aa7a net: hns3: using user configure after hardware reset
| * 5df93c029a net/smc: fix neighbour and rtable leak in smc_ib_find_route()
| * e31b25cc20 ipv6: prevent NULL dereference in ip6_output()
| * 4b27116882 ipv6: annotate data-races around cnf.disable_ipv6
| * d183f297cb hsr: Simplify code for announcing HSR nodes timer setup
| * 1c2b0f0823 net-sysfs: convert dev->operstate reads to lockless ones
| * 8745a8d74b ipv6: fib6_rules: avoid possible NULL dereference in fib6_rule_action()
| * f39c49d065 dt-bindings: net: mediatek: remove wrongly added clocks and SerDes
| * 1721afe2ad rxrpc: Only transmit one ACK per jumbo packet received
| * fa6dbe25e2 rxrpc: Fix congestion control algorithm
| * 59881e57a7 rxrpc: Fix the names of the fields in the ACK trailer struct
| * 438d7ceb45 selftests: test_bridge_neigh_suppress.sh: Fix failures due to duplicate MAC
| * 2ee2fc6786 selftests/net: convert test_bridge_neigh_suppress.sh to run it in unique namespace
| * 68c8ba16ab ipv6: Fix potential uninit-value access in __ip6_make_skb()
| * 1ce60741d7 net: bridge: fix corrupted ethernet header on multicast-to-unicast
| * 6900f0ed03 nfc: nci: Fix kcov check in nci_rx_work()
| * ee9e39a6cb phonet: fix rtm_phonet_notify() skb allocation
| * d4c6b1807c hwmon: (corsair-cpro) Protect ccp->wait_input_report with a spinlock
| * d5ad144fd1 hwmon: (corsair-cpro) Use complete_all() instead of complete() in ccp_raw_event()
| * 7d1e7803cb hwmon: (corsair-cpro) Use a separate buffer for sending commands
| * 206003c748 rtnetlink: Correct nested IFLA_VF_VLAN_LIST attribute validation
| * ae87f661f3 net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs
| * 955b5b6c54 Bluetooth: l2cap: fix null-ptr-deref in l2cap_chan_timeout
| * 1f7ebb69c1 Bluetooth: HCI: Fix potential null-ptr-deref
| * a85a60e623 Bluetooth: msft: fix slab-use-after-free in msft_do_close()
| * 012363cb1b Bluetooth: Fix use-after-free bugs caused by sco_sock_timeout
| * 6e48faad92 tcp: Use refcount_inc_not_zero() in tcp_twsk_unique().
| * f47d0d32fa tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets
| * ee0ce7573e ARM: 9381/1: kasan: clear stale stack poison
| * 4a9771c0fb xfrm: Preserve vlan tags for transport mode software GRO
| * db71ca9325 qibfs: fix dentry leak
| * 9b332c7229 SUNRPC: add a missing rpc_stat for TCP TLS
| * 1c172ac7af blk-iocost: do not WARN if iocg was already offlined
| * 8fb7638867 net:usb:qmi_wwan: support Rolling modules
| * aff9dba5e8 drm/radeon: silence UBSAN warning (v3)
| * c06575055e platform/x86: ISST: Add Granite Rapids-D to HPM CPU list
| * 1f4a2c7f4a drm/nouveau/dp: Don't probe eDP ports twice harder
| * ca6b0d99cd gpio: lpc32xx: fix module autoloading
| * 1f9c976e94 fs/9p: drop inodes immediately on non-.L too
| * 427ede2813 clk: Don't hold prepare_lock when calling kref_put()
| * ac259d3fa3 gpio: crystalcove: Use -ENOTSUPP consistently
| * d77f56b649 gpio: wcove: Use -ENOTSUPP consistently
| * 6a451fc5e6 powerpc/crypto/chacha-p10: Fix failure on non Power10
| * 48cf6a9914 9p: explicitly deny setlease attempts
| * d1250e00e1 fs/9p: fix the cache always being enabled on files with qid flags
| * dbf68fd7e3 fs/9p: translate O_TRUNC into OTRUNC
| * e55c601af3 fs/9p: only translate RWX permissions for plain 9P2000
| * 055ea43860 iommu: mtk: fix module autoloading
| * 08bedfbc1b smb3: fix broken reconnect when password changing on the server by allowing password rotation
| * 82f9e213b1 Drivers: hv: vmbus: Don't free ring buffers that couldn't be re-encrypted
| * 6466a0f6d2 uio_hv_generic: Don't free decrypted memory
| * a56fe61132 hv_netvsc: Don't free decrypted memory
| * 8e62341f5c Drivers: hv: vmbus: Track decrypted status in vmbus_gpadl
| * 6123a4e8e2 Drivers: hv: vmbus: Leak pages if set_memory_encrypted() fails
| * dce583c5bd selftests: timers: Fix valid-adjtimex signed left-shift undefined behavior
| * b6f6626528 amd/amdkfd: sync all devices to wait all processes being evicted
| * a624829bba drm/amdgpu: Fix VCN allocation in CPX partition
| * 951a498fa9 drm/amd/display: Skip on writeback when it's not applicable
| * c0beff4e35 drm/amdgpu: implement IRQ_STATE_ENABLE for SDMA v4.4.2
| * 1e2c28e74a drm/amdgpu: Refine IB schedule error logging
| * 037e72e7d7 tools/power/turbostat: Fix uncore frequency file string
| * f91955da81 MIPS: scall: Save thread_info.syscall unconditionally on entry
| * 1061afd581 gpu: host1x: Do not setup DMA for virtual devices
| * ce0e99cae0 blk-iocost: avoid out of bounds shift
| * 2eab8da937 scsi: hisi_sas: Handle the NCQ error returned by D2H frame
| * 2f35afac27 scsi: target: Fix SELinux error when systemd-modules loads the target module
| * 14e731533b memblock tests: fix undefined reference to `BIT'
| * 85907602db memblock tests: fix undefined reference to `panic'
| * 63e58e5aef memblock tests: fix undefined reference to `early_pfn_to_nid'
| * 54403a77c2 btrfs: always clear PERTRANS metadata during commit
| * 570bff14e7 btrfs: make btrfs_clear_delalloc_extent() free delalloc reserve
| * 9678a79d14 tools/power turbostat: Fix warning upon failed /dev/cpu_dma_latency read
| * 8a91872a54 tools/power turbostat: Print ucode revision only if valid
| * 77619a7ace tools/power turbostat: Fix Bzy_MHz documentation typo
| * 52b3541b35 tools/power turbostat: Increase the limit for fd opened
| * 95973a9b64 tools/power turbostat: Fix added raw MSR output
| * 5982887de6 firewire: ohci: mask bus reset interrupts between ISR and bottom half
| * dec0c371b4 ata: sata_gemini: Check clk_enable() result
| * 9872ab5b1e vboxsf: explicitly deny setlease attempts
| * 2f11e24abc net: bcmgenet: Reset RBUF on first open
| * e1d38cde2b block: fix overflow in blk_ioctl_discard()
| * c5d5160d7e ALSA: line6: Zero-initialize message buffers
| * 85bb858019 scsi: ufs: core: Fix MCQ mode dev command timeout
| * 684500f29f scsi: libsas: Align SMP request allocation to ARCH_DMA_MINALIGN
| * cf311e2486 scsi: ufs: core: WLUN suspend dev/link state error recovery
| * 47b5b69f4a regulator: tps65132: Add of_match table
| * de2a108def ASoC: SOF: Intel: hda-dsp: Skip IMR boot on ACE platforms in case of S3 suspend
| * 49ce8b6297 kbuild: Disable KCSAN for autogenerated *.mod.c intermediaries
| * 926e8bc0cf selftests/ftrace: Fix event filter target_func selection
| * 608e13706c bpf: Check bloom filter map value size
| * 41dc679159 drm/amdkfd: range check cp bad op exception interrupts
| * d644962423 drm/amdkfd: Check cgroup when returning DMABuf info
| * 1ea068f5b6 btrfs: return accurate error code on open failure in open_fs_devices()
| * c885ab2320 scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
| * f09318244c scsi: mpi3mr: Avoid memcpy field-spanning write WARNING
| * 845d179992 net: mark racy access on sk->sk_rcvbuf
| * 94f80a8ec1 wifi: iwlwifi: mvm: guard against invalid STA ID on removal
| * b83db8e756 wifi: iwlwifi: read txq->read_ptr under lock
| * 99046794a6 wifi: mac80211: fix prep_connection error path
| * ff9580efb5 wifi: cfg80211: fix rdev_dump_mpp() arguments order
| * 954a654a33 wifi: mac80211: fix ieee80211_bss_*_flags kernel-doc
| * 6eb0d6e6d3 gfs2: Fix invalid metadata access in punch_hole
| * e29758e73e scsi: lpfc: Use a dedicated lock for ras_fwlog state
| * e8bf2c05e8 scsi: lpfc: Release hbalock before calling lpfc_worker_wake_up()
| * 8a1d8deaa4 scsi: lpfc: Replace hbalock with ndlp lock in lpfc_nvme_unregister_port()
| * 4aba3ca53b scsi: lpfc: Update lpfc_ramp_down_queue_handler() logic
| * 5e60791649 scsi: lpfc: Remove IRQF_ONESHOT flag from threaded IRQ handling
| * 76337eb8da scsi: lpfc: Move NPIV's transport unregistration to after resource clean up
| * ff54c87f32 scsi: ufs: core: Fix MCQ MAC configuration
| * 8d6a1c8e3d KVM: arm64: vgic-v2: Check for non-NULL vCPU in vgic_v2_parse_attr()
| * d082321d0d KVM: arm64: vgic-v2: Use cpuid from userspace as vcpu_id
| * f2a6b3ed20 swiotlb: initialise restricted pool list_head when SWIOTLB_DYNAMIC=y
| * 802b13b79a powerpc/pseries/iommu: LPAR panics during boot up with a frozen PE
| * 3b59a75943 powerpc/pseries: make max polling consistent for longer H_CALLs
| * 0b82eb134d clk: sunxi-ng: h6: Reparent CPUX during PLL CPUX rate change
| * a6df6bd304 clk: qcom: smd-rpm: Restore msm8976 num_clk
| * 78b6092d78 net: gro: add flush check in udp_gro_receive_segment
| * af276a5ac8 net: gro: fix udp bad offset in socket lookup by adding {inner_}network_offset to napi_gro_cb
| * 7f7b0ebb37 net: gro: parse ipv6 ext headers without frag0 invalidation
| * 5db08343dd ipv4: Fix uninit-value access in __ip_make_skb()
| * fa695db334 drm/panel: ili9341: Use predefined error codes
| * 1055cdd575 drm/panel: ili9341: Respect deferred probe
| * c6be5383fb drm/panel: ili9341: Correct use of device property APIs
| * e28dd1e1bf s390/qeth: Fix kernel panic after setting hsuid
| * 935bcb52ec vxlan: Pull inner IP header in vxlan_rcv().
| * 614c5a5ae4 tipc: fix a possible memleak in tipc_buf_append
| * 73f81e5a22 rxrpc: Clients must accept conn from any address
| * cfe34d86ef net: core: reject skb_copy(_expand) for fraglist GSO skbs
| * 65fbc7a11d net: bridge: fix multicast-to-unicast with fraglist GSO
| * a30659f157 spi: fix null pointer dereference within spi_sync
| * 4fd8cd4154 drm/amdgpu: fix doorbell regression
| * 6cc5dde9bb net: dsa: mv88e6xxx: Fix number of databases for 88E6141 / 88E6341
| * 6792e5b483 cxgb4: Properly lock TX queue for the selftest.
| * 84b38f4883 s390/cio: Ensure the copied buf is NUL terminated
| * 7db626d273 ALSA: hda: intel-sdw-acpi: fix usage of device_get_named_child_node()
| * 76ae951d94 ASoC: meson: cards: select SND_DYNAMIC_MINORS
| * 8ad705b120 ASoC: meson: axg-tdm-interface: manage formatters in trigger
| * 52a31a05c1 ASoC: meson: axg-card: make links nonatomic
| * d7801bd9c8 ASoC: meson: axg-fifo: use threaded irq to check periods
| * af8e6bbf66 ASoC: meson: axg-fifo: use FIELD helpers
| * 0ba4fd4599 vxlan: Add missing VNI filter counter update in arp_reduce().
| * 8432103009 vxlan: Fix racy device stats updates.
| * a89e4db535 net: qede: use return from qede_parse_actions()
| * 40fbad8885 net: qede: use return from qede_parse_flow_attr() for flow_spec
| * b633de6ae9 net: qede: use return from qede_parse_flow_attr() for flower
| * c1b9c6be47 net: qede: sanitize 'rc' in qede_add_tc_flower_fltr()
| * 32ac5cac5d ALSA: emu10k1: fix E-MU dock initialization
| * 9fc6270642 ALSA: emu10k1: move the whole GPIO event handling to the workqueue
| * d4b9262fb9 ALSA: emu10k1: factor out snd_emu1010_load_dock_firmware()
| * 8db345cfb6 ALSA: emu10k1: fix E-MU card dock presence monitoring
| * c698e48245 Fix a potential infinite loop in extract_user_to_sg()
| * 53163e2adb s390/vdso: Add CFI for RA register to asm macro vdso_func
| * 23e25d2fc7 net l2tp: drop flow hash on forward
| * 696d18bb59 nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment().
| * 0a0285cee1 octeontx2-af: avoid off-by-one read from userspace
| * e194787631 bna: ensure the copied buf is NUL terminated
| * e22e25820f xdp: use flags field to disambiguate broadcast redirect
| * 487c4e9a55 s390/mm: Fix clearing storage keys for huge pages
| * 819c33d775 s390/mm: Fix storage key clearing for guest huge pages
| * 27f69caa62 ASoC: codecs: wsa881x: set clk_stop_mode1 flag
| * 6f85e9b715 ASoC: Intel: avs: Set name of control as in topology
| * 54bfc9ef60 riscv, bpf: Fix incorrect runtime stats
| * a554fef56c bpf, arm64: Fix incorrect runtime stats
| * f75a570655 spi: hisi-kunpeng: Delete the dump interface of data registers in debugfs
| * 9072aab6e8 spi: axi-spi-engine: fix version format string
| * deccbe39b5 spi: axi-spi-engine: use common AXI macros
| * 3915124910 spi: axi-spi-engine: move msg state to new struct
| * 0174c1c438 spi: axi-spi-engine: use devm_spi_alloc_host()
| * 03a7d3cf04 spi: axi-spi-engine: simplify driver data allocation
| * ab7722458e spi: spi-axi-spi-engine: Use helper function devm_clk_get_enabled()
| * fe4bfff1cd bpf: Fix a verifier verbose message
| * 57b736fcbb nvme: fix warn output about shared namespaces without CONFIG_NVME_MULTIPATH
| * 0d34c688b0 ASoC: SOF: Intel: add default firmware library path for LNL
| * 180ffe2293 ASoC: SOF: Introduce generic names for IPC types
| * b5a291e559 regmap: Add regmap_read_bypassed()
| * b397a0ab85 bpf, skmsg: Fix NULL pointer dereference in sk_psock_skb_ingress_enqueue
| * 2166cb2e21 bpf, kconfig: Fix DEBUG_INFO_BTF_MODULES Kconfig definition
| * 79b9afd95e regulator: change devm_regulator_get_enable_optional() stub to return Ok
| * bdeb1b446d regulator: change stubbed devm_regulator_get_enable to return Ok
| * 83fdf050ef regulator: mt6360: De-capitalize devicetree regulator subnodes
| * 026e24cf31 pinctrl: devicetree: fix refcount leak in pinctrl_dt_to_map()
| * 109b9ecdcb power: supply: mt6360_charger: Fix of_match for usb-otg-vbus regulator
| * 48e52633d5 power: rt9455: hide unused rt9455_boost_voltage_values
| * fc8cbe3a58 pinctrl: baytrail: Fix selecting gpio pinctrl state
| * 8a1f89c98d nfs: Handle error of rpc_proc_register() in nfs_net_init().
| * 260333221c nfs: make the rpc_stat per net namespace
| * 53a0365c9f nfs: expose /proc/net/sunrpc/nfs in net namespaces
| * c4d324c414 sunrpc: add a struct rpc_stats arg to rpc_create_args
| * 30287d2018 pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE
| * d025871736 pinctrl: mediatek: paris: Fix PIN_CONFIG_INPUT_SCHMITT_ENABLE readback
| * 558c8039fd pinctrl: core: delete incorrect free in pinctrl_enable()
| * 70b145d68e pinctrl/meson: fix typo in PDM's pin name
| * 4b1357a277 pinctrl: pinctrl-aspeed-g6: Fix register offset for pinconf of GPIOR-T
| * a381ee26d7 Bluetooth: qca: add support for QCA2066
| * 2af84c46b9 eeprom: at24: fix memory corruption race condition
| * 4d5ace7872 eeprom: at24: Probe for DDR3 thermal sensor in the SPD case
| * 00d2715aaa rust: kernel: require `Send` for `Module` implementations
| * 244822c09b wifi: nl80211: don't free NULL coalescing rule
| * a4dec33d27 rust: macros: fix soundness issue in `module!` macro
| * 738ea6d9ca rust: module: place generated init_module() function in .init.text
| * cce311f8bb mtd: limit OTP NVMEM cell parse to non-NAND devices
| * 26e2fe4cab nvmem: add explicit config option to read old syntax fixed OF cells
| * ed56e266d3 dmaengine: Revert "dmaengine: pl330: issue_pending waits until WFP state"
| * 867818dd13 dmaengine: pl330: issue_pending waits until WFP state
* 8e7c3fe984 Merge branch 'android15-6.6' into branch 'android15-6.6-lts'

Change-Id: I22664a37e15da5b33a9dcd7b92672b1bc3104b33
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-08-28 09:01:11 +00:00

3668 lines
92 KiB
C

// SPDX-License-Identifier: GPL-2.0-or-later
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
* interface as the means of communication with the user level.
*
* The User Datagram Protocol (UDP).
*
* Authors: Ross Biro
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
* Arnt Gulbrandsen, <agulbra@nvg.unit.no>
* Alan Cox, <alan@lxorguk.ukuu.org.uk>
* Hirokazu Takahashi, <taka@valinux.co.jp>
*
* Fixes:
* Alan Cox : verify_area() calls
* Alan Cox : stopped close while in use off icmp
* messages. Not a fix but a botch that
* for udp at least is 'valid'.
* Alan Cox : Fixed icmp handling properly
* Alan Cox : Correct error for oversized datagrams
* Alan Cox : Tidied select() semantics.
* Alan Cox : udp_err() fixed properly, also now
* select and read wake correctly on errors
* Alan Cox : udp_send verify_area moved to avoid mem leak
* Alan Cox : UDP can count its memory
* Alan Cox : send to an unknown connection causes
* an ECONNREFUSED off the icmp, but
* does NOT close.
* Alan Cox : Switched to new sk_buff handlers. No more backlog!
* Alan Cox : Using generic datagram code. Even smaller and the PEEK
* bug no longer crashes it.
* Fred Van Kempen : Net2e support for sk->broadcast.
* Alan Cox : Uses skb_free_datagram
* Alan Cox : Added get/set sockopt support.
* Alan Cox : Broadcasting without option set returns EACCES.
* Alan Cox : No wakeup calls. Instead we now use the callbacks.
* Alan Cox : Use ip_tos and ip_ttl
* Alan Cox : SNMP Mibs
* Alan Cox : MSG_DONTROUTE, and 0.0.0.0 support.
* Matt Dillon : UDP length checks.
* Alan Cox : Smarter af_inet used properly.
* Alan Cox : Use new kernel side addressing.
* Alan Cox : Incorrect return on truncated datagram receive.
* Arnt Gulbrandsen : New udp_send and stuff
* Alan Cox : Cache last socket
* Alan Cox : Route cache
* Jon Peatfield : Minor efficiency fix to sendto().
* Mike Shaver : RFC1122 checks.
* Alan Cox : Nonblocking error fix.
* Willy Konynenberg : Transparent proxying support.
* Mike McLagan : Routing by source
* David S. Miller : New socket lookup architecture.
* Last socket cache retained as it
* does have a high hit rate.
* Olaf Kirch : Don't linearise iovec on sendmsg.
* Andi Kleen : Some cleanups, cache destination entry
* for connect.
* Vitaly E. Lavrov : Transparent proxy revived after year coma.
* Melvin Smith : Check msg_name not msg_namelen in sendto(),
* return ENOTCONN for unconnected sockets (POSIX)
* Janos Farkas : don't deliver multi/broadcasts to a different
* bound-to-device socket
* Hirokazu Takahashi : HW checksumming for outgoing UDP
* datagrams.
* Hirokazu Takahashi : sendfile() on UDP works now.
* Arnaldo C. Melo : convert /proc/net/udp to seq_file
* YOSHIFUJI Hideaki @USAGI and: Support IPV6_V6ONLY socket option, which
* Alexey Kuznetsov: allow both IPv4 and IPv6 sockets to bind
* a single port at the same time.
* Derek Atkins <derek@ihtfp.com>: Add Encapulation Support
* James Chapman : Add L2TP encapsulation type.
*/
#define pr_fmt(fmt) "UDP: " fmt
#include <linux/bpf-cgroup.h>
#include <linux/uaccess.h>
#include <asm/ioctls.h>
#include <linux/memblock.h>
#include <linux/highmem.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/module.h>
#include <linux/socket.h>
#include <linux/sockios.h>
#include <linux/igmp.h>
#include <linux/inetdevice.h>
#include <linux/in.h>
#include <linux/errno.h>
#include <linux/timer.h>
#include <linux/mm.h>
#include <linux/inet.h>
#include <linux/netdevice.h>
#include <linux/slab.h>
#include <net/tcp_states.h>
#include <linux/skbuff.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <net/net_namespace.h>
#include <net/icmp.h>
#include <net/inet_hashtables.h>
#include <net/ip_tunnels.h>
#include <net/route.h>
#include <net/checksum.h>
#include <net/gso.h>
#include <net/xfrm.h>
#include <trace/events/udp.h>
#include <linux/static_key.h>
#include <linux/btf_ids.h>
#include <trace/events/skb.h>
#include <net/busy_poll.h>
#include "udp_impl.h"
#include <net/sock_reuseport.h>
#include <net/addrconf.h>
#include <net/udp_tunnel.h>
#include <net/gro.h>
#if IS_ENABLED(CONFIG_IPV6)
#include <net/ipv6_stubs.h>
#endif
#include <trace/hooks/net.h>
struct udp_table udp_table __read_mostly;
EXPORT_SYMBOL(udp_table);
long sysctl_udp_mem[3] __read_mostly;
EXPORT_SYMBOL(sysctl_udp_mem);
atomic_long_t udp_memory_allocated ____cacheline_aligned_in_smp;
EXPORT_SYMBOL(udp_memory_allocated);
DEFINE_PER_CPU(int, udp_memory_per_cpu_fw_alloc);
EXPORT_PER_CPU_SYMBOL_GPL(udp_memory_per_cpu_fw_alloc);
#define MAX_UDP_PORTS 65536
#define PORTS_PER_CHAIN (MAX_UDP_PORTS / UDP_HTABLE_SIZE_MIN_PERNET)
static struct udp_table *udp_get_table_prot(struct sock *sk)
{
return sk->sk_prot->h.udp_table ? : sock_net(sk)->ipv4.udp_table;
}
static int udp_lib_lport_inuse(struct net *net, __u16 num,
const struct udp_hslot *hslot,
unsigned long *bitmap,
struct sock *sk, unsigned int log)
{
struct sock *sk2;
kuid_t uid = sock_i_uid(sk);
sk_for_each(sk2, &hslot->head) {
if (net_eq(sock_net(sk2), net) &&
sk2 != sk &&
(bitmap || udp_sk(sk2)->udp_port_hash == num) &&
(!sk2->sk_reuse || !sk->sk_reuse) &&
(!sk2->sk_bound_dev_if || !sk->sk_bound_dev_if ||
sk2->sk_bound_dev_if == sk->sk_bound_dev_if) &&
inet_rcv_saddr_equal(sk, sk2, true)) {
if (sk2->sk_reuseport && sk->sk_reuseport &&
!rcu_access_pointer(sk->sk_reuseport_cb) &&
uid_eq(uid, sock_i_uid(sk2))) {
if (!bitmap)
return 0;
} else {
if (!bitmap)
return 1;
__set_bit(udp_sk(sk2)->udp_port_hash >> log,
bitmap);
}
}
}
return 0;
}
/*
* Note: we still hold spinlock of primary hash chain, so no other writer
* can insert/delete a socket with local_port == num
*/
static int udp_lib_lport_inuse2(struct net *net, __u16 num,
struct udp_hslot *hslot2,
struct sock *sk)
{
struct sock *sk2;
kuid_t uid = sock_i_uid(sk);
int res = 0;
spin_lock(&hslot2->lock);
udp_portaddr_for_each_entry(sk2, &hslot2->head) {
if (net_eq(sock_net(sk2), net) &&
sk2 != sk &&
(udp_sk(sk2)->udp_port_hash == num) &&
(!sk2->sk_reuse || !sk->sk_reuse) &&
(!sk2->sk_bound_dev_if || !sk->sk_bound_dev_if ||
sk2->sk_bound_dev_if == sk->sk_bound_dev_if) &&
inet_rcv_saddr_equal(sk, sk2, true)) {
if (sk2->sk_reuseport && sk->sk_reuseport &&
!rcu_access_pointer(sk->sk_reuseport_cb) &&
uid_eq(uid, sock_i_uid(sk2))) {
res = 0;
} else {
res = 1;
}
break;
}
}
spin_unlock(&hslot2->lock);
return res;
}
static int udp_reuseport_add_sock(struct sock *sk, struct udp_hslot *hslot)
{
struct net *net = sock_net(sk);
kuid_t uid = sock_i_uid(sk);
struct sock *sk2;
sk_for_each(sk2, &hslot->head) {
if (net_eq(sock_net(sk2), net) &&
sk2 != sk &&
sk2->sk_family == sk->sk_family &&
ipv6_only_sock(sk2) == ipv6_only_sock(sk) &&
(udp_sk(sk2)->udp_port_hash == udp_sk(sk)->udp_port_hash) &&
(sk2->sk_bound_dev_if == sk->sk_bound_dev_if) &&
sk2->sk_reuseport && uid_eq(uid, sock_i_uid(sk2)) &&
inet_rcv_saddr_equal(sk, sk2, false)) {
return reuseport_add_sock(sk, sk2,
inet_rcv_saddr_any(sk));
}
}
return reuseport_alloc(sk, inet_rcv_saddr_any(sk));
}
/**
* udp_lib_get_port - UDP/-Lite port lookup for IPv4 and IPv6
*
* @sk: socket struct in question
* @snum: port number to look up
* @hash2_nulladdr: AF-dependent hash value in secondary hash chains,
* with NULL address
*/
int udp_lib_get_port(struct sock *sk, unsigned short snum,
unsigned int hash2_nulladdr)
{
struct udp_table *udptable = udp_get_table_prot(sk);
struct udp_hslot *hslot, *hslot2;
struct net *net = sock_net(sk);
int error = -EADDRINUSE;
if (!snum) {
DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
unsigned short first, last;
int low, high, remaining;
unsigned int rand;
inet_sk_get_local_port_range(sk, &low, &high);
remaining = (high - low) + 1;
rand = get_random_u32();
first = reciprocal_scale(rand, remaining) + low;
/*
* force rand to be an odd multiple of UDP_HTABLE_SIZE
*/
rand = (rand | 1) * (udptable->mask + 1);
last = first + udptable->mask + 1;
do {
hslot = udp_hashslot(udptable, net, first);
bitmap_zero(bitmap, PORTS_PER_CHAIN);
spin_lock_bh(&hslot->lock);
udp_lib_lport_inuse(net, snum, hslot, bitmap, sk,
udptable->log);
snum = first;
/*
* Iterate on all possible values of snum for this hash.
* Using steps of an odd multiple of UDP_HTABLE_SIZE
* give us randomization and full range coverage.
*/
do {
if (low <= snum && snum <= high &&
!test_bit(snum >> udptable->log, bitmap) &&
!inet_is_local_reserved_port(net, snum))
goto found;
snum += rand;
} while (snum != first);
spin_unlock_bh(&hslot->lock);
cond_resched();
} while (++first != last);
goto fail;
} else {
hslot = udp_hashslot(udptable, net, snum);
spin_lock_bh(&hslot->lock);
if (hslot->count > 10) {
int exist;
unsigned int slot2 = udp_sk(sk)->udp_portaddr_hash ^ snum;
slot2 &= udptable->mask;
hash2_nulladdr &= udptable->mask;
hslot2 = udp_hashslot2(udptable, slot2);
if (hslot->count < hslot2->count)
goto scan_primary_hash;
exist = udp_lib_lport_inuse2(net, snum, hslot2, sk);
if (!exist && (hash2_nulladdr != slot2)) {
hslot2 = udp_hashslot2(udptable, hash2_nulladdr);
exist = udp_lib_lport_inuse2(net, snum, hslot2,
sk);
}
if (exist)
goto fail_unlock;
else
goto found;
}
scan_primary_hash:
if (udp_lib_lport_inuse(net, snum, hslot, NULL, sk, 0))
goto fail_unlock;
}
found:
inet_sk(sk)->inet_num = snum;
udp_sk(sk)->udp_port_hash = snum;
udp_sk(sk)->udp_portaddr_hash ^= snum;
if (sk_unhashed(sk)) {
if (sk->sk_reuseport &&
udp_reuseport_add_sock(sk, hslot)) {
inet_sk(sk)->inet_num = 0;
udp_sk(sk)->udp_port_hash = 0;
udp_sk(sk)->udp_portaddr_hash ^= snum;
goto fail_unlock;
}
sock_set_flag(sk, SOCK_RCU_FREE);
sk_add_node_rcu(sk, &hslot->head);
hslot->count++;
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
hslot2 = udp_hashslot2(udptable, udp_sk(sk)->udp_portaddr_hash);
spin_lock(&hslot2->lock);
if (IS_ENABLED(CONFIG_IPV6) && sk->sk_reuseport &&
sk->sk_family == AF_INET6)
hlist_add_tail_rcu(&udp_sk(sk)->udp_portaddr_node,
&hslot2->head);
else
hlist_add_head_rcu(&udp_sk(sk)->udp_portaddr_node,
&hslot2->head);
hslot2->count++;
spin_unlock(&hslot2->lock);
}
error = 0;
fail_unlock:
spin_unlock_bh(&hslot->lock);
fail:
return error;
}
EXPORT_SYMBOL(udp_lib_get_port);
int udp_v4_get_port(struct sock *sk, unsigned short snum)
{
unsigned int hash2_nulladdr =
ipv4_portaddr_hash(sock_net(sk), htonl(INADDR_ANY), snum);
unsigned int hash2_partial =
ipv4_portaddr_hash(sock_net(sk), inet_sk(sk)->inet_rcv_saddr, 0);
/* precompute partial secondary hash */
udp_sk(sk)->udp_portaddr_hash = hash2_partial;
return udp_lib_get_port(sk, snum, hash2_nulladdr);
}
static int compute_score(struct sock *sk, struct net *net,
__be32 saddr, __be16 sport,
__be32 daddr, unsigned short hnum,
int dif, int sdif)
{
int score;
struct inet_sock *inet;
bool dev_match;
if (!net_eq(sock_net(sk), net) ||
udp_sk(sk)->udp_port_hash != hnum ||
ipv6_only_sock(sk))
return -1;
if (sk->sk_rcv_saddr != daddr)
return -1;
score = (sk->sk_family == PF_INET) ? 2 : 1;
inet = inet_sk(sk);
if (inet->inet_daddr) {
if (inet->inet_daddr != saddr)
return -1;
score += 4;
}
if (inet->inet_dport) {
if (inet->inet_dport != sport)
return -1;
score += 4;
}
dev_match = udp_sk_bound_dev_eq(net, sk->sk_bound_dev_if,
dif, sdif);
if (!dev_match)
return -1;
if (sk->sk_bound_dev_if)
score += 4;
if (READ_ONCE(sk->sk_incoming_cpu) == raw_smp_processor_id())
score++;
return score;
}
INDIRECT_CALLABLE_SCOPE
u32 udp_ehashfn(const struct net *net, const __be32 laddr, const __u16 lport,
const __be32 faddr, const __be16 fport)
{
static u32 udp_ehash_secret __read_mostly;
net_get_random_once(&udp_ehash_secret, sizeof(udp_ehash_secret));
return __inet_ehashfn(laddr, lport, faddr, fport,
udp_ehash_secret + net_hash_mix(net));
}
/* called with rcu_read_lock() */
static struct sock *udp4_lib_lookup2(struct net *net,
__be32 saddr, __be16 sport,
__be32 daddr, unsigned int hnum,
int dif, int sdif,
struct udp_hslot *hslot2,
struct sk_buff *skb)
{
struct sock *sk, *result;
int score, badness;
bool need_rescore;
result = NULL;
badness = 0;
udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
need_rescore = false;
rescore:
score = compute_score(need_rescore ? result : sk, net, saddr,
sport, daddr, hnum, dif, sdif);
if (score > badness) {
badness = score;
if (need_rescore)
continue;
if (sk->sk_state == TCP_ESTABLISHED) {
result = sk;
continue;
}
result = inet_lookup_reuseport(net, sk, skb, sizeof(struct udphdr),
saddr, sport, daddr, hnum, udp_ehashfn);
if (!result) {
result = sk;
continue;
}
/* Fall back to scoring if group has connections */
if (!reuseport_has_conns(sk))
return result;
/* Reuseport logic returned an error, keep original score. */
if (IS_ERR(result))
continue;
/* compute_score is too long of a function to be
* inlined, and calling it again here yields
* measureable overhead for some
* workloads. Work around it by jumping
* backwards to rescore 'result'.
*/
need_rescore = true;
goto rescore;
}
}
return result;
}
/* UDP is nearly always wildcards out the wazoo, it makes no sense to try
* harder than this. -DaveM
*/
struct sock *__udp4_lib_lookup(struct net *net, __be32 saddr,
__be16 sport, __be32 daddr, __be16 dport, int dif,
int sdif, struct udp_table *udptable, struct sk_buff *skb)
{
unsigned short hnum = ntohs(dport);
unsigned int hash2, slot2;
struct udp_hslot *hslot2;
struct sock *result, *sk;
hash2 = ipv4_portaddr_hash(net, daddr, hnum);
slot2 = hash2 & udptable->mask;
hslot2 = &udptable->hash2[slot2];
/* Lookup connected or non-wildcard socket */
result = udp4_lib_lookup2(net, saddr, sport,
daddr, hnum, dif, sdif,
hslot2, skb);
if (!IS_ERR_OR_NULL(result) && result->sk_state == TCP_ESTABLISHED)
goto done;
/* Lookup redirect from BPF */
if (static_branch_unlikely(&bpf_sk_lookup_enabled) &&
udptable == net->ipv4.udp_table) {
sk = inet_lookup_run_sk_lookup(net, IPPROTO_UDP, skb, sizeof(struct udphdr),
saddr, sport, daddr, hnum, dif,
udp_ehashfn);
if (sk) {
result = sk;
goto done;
}
}
/* Got non-wildcard socket or error on first lookup */
if (result)
goto done;
/* Lookup wildcard sockets */
hash2 = ipv4_portaddr_hash(net, htonl(INADDR_ANY), hnum);
slot2 = hash2 & udptable->mask;
hslot2 = &udptable->hash2[slot2];
result = udp4_lib_lookup2(net, saddr, sport,
htonl(INADDR_ANY), hnum, dif, sdif,
hslot2, skb);
done:
if (IS_ERR(result))
return NULL;
return result;
}
EXPORT_SYMBOL_GPL(__udp4_lib_lookup);
static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb,
__be16 sport, __be16 dport,
struct udp_table *udptable)
{
const struct iphdr *iph = ip_hdr(skb);
return __udp4_lib_lookup(dev_net(skb->dev), iph->saddr, sport,
iph->daddr, dport, inet_iif(skb),
inet_sdif(skb), udptable, skb);
}
struct sock *udp4_lib_lookup_skb(const struct sk_buff *skb,
__be16 sport, __be16 dport)
{
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
const struct iphdr *iph = (struct iphdr *)(skb->data + offset);
struct net *net = dev_net(skb->dev);
int iif, sdif;
inet_get_iif_sdif(skb, &iif, &sdif);
return __udp4_lib_lookup(net, iph->saddr, sport,
iph->daddr, dport, iif,
sdif, net->ipv4.udp_table, NULL);
}
/* Must be called under rcu_read_lock().
* Does increment socket refcount.
*/
#if IS_ENABLED(CONFIG_NF_TPROXY_IPV4) || IS_ENABLED(CONFIG_NF_SOCKET_IPV4)
struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
__be32 daddr, __be16 dport, int dif)
{
struct sock *sk;
sk = __udp4_lib_lookup(net, saddr, sport, daddr, dport,
dif, 0, net->ipv4.udp_table, NULL);
if (sk && !refcount_inc_not_zero(&sk->sk_refcnt))
sk = NULL;
return sk;
}
EXPORT_SYMBOL_GPL(udp4_lib_lookup);
#endif
static inline bool __udp_is_mcast_sock(struct net *net, const struct sock *sk,
__be16 loc_port, __be32 loc_addr,
__be16 rmt_port, __be32 rmt_addr,
int dif, int sdif, unsigned short hnum)
{
const struct inet_sock *inet = inet_sk(sk);
if (!net_eq(sock_net(sk), net) ||
udp_sk(sk)->udp_port_hash != hnum ||
(inet->inet_daddr && inet->inet_daddr != rmt_addr) ||
(inet->inet_dport != rmt_port && inet->inet_dport) ||
(inet->inet_rcv_saddr && inet->inet_rcv_saddr != loc_addr) ||
ipv6_only_sock(sk) ||
!udp_sk_bound_dev_eq(net, sk->sk_bound_dev_if, dif, sdif))
return false;
if (!ip_mc_sf_allow(sk, loc_addr, rmt_addr, dif, sdif))
return false;
return true;
}
DEFINE_STATIC_KEY_FALSE(udp_encap_needed_key);
EXPORT_SYMBOL(udp_encap_needed_key);
#if IS_ENABLED(CONFIG_IPV6)
DEFINE_STATIC_KEY_FALSE(udpv6_encap_needed_key);
EXPORT_SYMBOL(udpv6_encap_needed_key);
#endif
void udp_encap_enable(void)
{
static_branch_inc(&udp_encap_needed_key);
}
EXPORT_SYMBOL(udp_encap_enable);
void udp_encap_disable(void)
{
static_branch_dec(&udp_encap_needed_key);
}
EXPORT_SYMBOL(udp_encap_disable);
/* Handler for tunnels with arbitrary destination ports: no socket lookup, go
* through error handlers in encapsulations looking for a match.
*/
static int __udp4_lib_err_encap_no_sk(struct sk_buff *skb, u32 info)
{
int i;
for (i = 0; i < MAX_IPTUN_ENCAP_OPS; i++) {
int (*handler)(struct sk_buff *skb, u32 info);
const struct ip_tunnel_encap_ops *encap;
encap = rcu_dereference(iptun_encaps[i]);
if (!encap)
continue;
handler = encap->err_handler;
if (handler && !handler(skb, info))
return 0;
}
return -ENOENT;
}
/* Try to match ICMP errors to UDP tunnels by looking up a socket without
* reversing source and destination port: this will match tunnels that force the
* same destination port on both endpoints (e.g. VXLAN, GENEVE). Note that
* lwtunnels might actually break this assumption by being configured with
* different destination ports on endpoints, in this case we won't be able to
* trace ICMP messages back to them.
*
* If this doesn't match any socket, probe tunnels with arbitrary destination
* ports (e.g. FoU, GUE): there, the receiving socket is useless, as the port
* we've sent packets to won't necessarily match the local destination port.
*
* Then ask the tunnel implementation to match the error against a valid
* association.
*
* Return an error if we can't find a match, the socket if we need further
* processing, zero otherwise.
*/
static struct sock *__udp4_lib_err_encap(struct net *net,
const struct iphdr *iph,
struct udphdr *uh,
struct udp_table *udptable,
struct sock *sk,
struct sk_buff *skb, u32 info)
{
int (*lookup)(struct sock *sk, struct sk_buff *skb);
int network_offset, transport_offset;
struct udp_sock *up;
network_offset = skb_network_offset(skb);
transport_offset = skb_transport_offset(skb);
/* Network header needs to point to the outer IPv4 header inside ICMP */
skb_reset_network_header(skb);
/* Transport header needs to point to the UDP header */
skb_set_transport_header(skb, iph->ihl << 2);
if (sk) {
up = udp_sk(sk);
lookup = READ_ONCE(up->encap_err_lookup);
if (lookup && lookup(sk, skb))
sk = NULL;
goto out;
}
sk = __udp4_lib_lookup(net, iph->daddr, uh->source,
iph->saddr, uh->dest, skb->dev->ifindex, 0,
udptable, NULL);
if (sk) {
up = udp_sk(sk);
lookup = READ_ONCE(up->encap_err_lookup);
if (!lookup || lookup(sk, skb))
sk = NULL;
}
out:
if (!sk)
sk = ERR_PTR(__udp4_lib_err_encap_no_sk(skb, info));
skb_set_transport_header(skb, transport_offset);
skb_set_network_header(skb, network_offset);
return sk;
}
/*
* This routine is called by the ICMP module when it gets some
* sort of error condition. If err < 0 then the socket should
* be closed and the error returned to the user. If err > 0
* it's just the icmp type << 8 | icmp code.
* Header points to the ip header of the error packet. We move
* on past this. Then (as it used to claim before adjustment)
* header points to the first 8 bytes of the udp header. We need
* to find the appropriate port.
*/
int __udp4_lib_err(struct sk_buff *skb, u32 info, struct udp_table *udptable)
{
struct inet_sock *inet;
const struct iphdr *iph = (const struct iphdr *)skb->data;
struct udphdr *uh = (struct udphdr *)(skb->data+(iph->ihl<<2));
const int type = icmp_hdr(skb)->type;
const int code = icmp_hdr(skb)->code;
bool tunnel = false;
struct sock *sk;
int harderr;
int err;
struct net *net = dev_net(skb->dev);
sk = __udp4_lib_lookup(net, iph->daddr, uh->dest,
iph->saddr, uh->source, skb->dev->ifindex,
inet_sdif(skb), udptable, NULL);
if (!sk || READ_ONCE(udp_sk(sk)->encap_type)) {
/* No socket for error: try tunnels before discarding */
if (static_branch_unlikely(&udp_encap_needed_key)) {
sk = __udp4_lib_err_encap(net, iph, uh, udptable, sk, skb,
info);
if (!sk)
return 0;
} else
sk = ERR_PTR(-ENOENT);
if (IS_ERR(sk)) {
__ICMP_INC_STATS(net, ICMP_MIB_INERRORS);
return PTR_ERR(sk);
}
tunnel = true;
}
err = 0;
harderr = 0;
inet = inet_sk(sk);
switch (type) {
default:
case ICMP_TIME_EXCEEDED:
err = EHOSTUNREACH;
break;
case ICMP_SOURCE_QUENCH:
goto out;
case ICMP_PARAMETERPROB:
err = EPROTO;
harderr = 1;
break;
case ICMP_DEST_UNREACH:
if (code == ICMP_FRAG_NEEDED) { /* Path MTU discovery */
ipv4_sk_update_pmtu(skb, sk, info);
if (inet->pmtudisc != IP_PMTUDISC_DONT) {
err = EMSGSIZE;
harderr = 1;
break;
}
goto out;
}
err = EHOSTUNREACH;
if (code <= NR_ICMP_UNREACH) {
harderr = icmp_err_convert[code].fatal;
err = icmp_err_convert[code].errno;
}
break;
case ICMP_REDIRECT:
ipv4_sk_redirect(skb, sk);
goto out;
}
/*
* RFC1122: OK. Passes ICMP errors back to application, as per
* 4.1.3.3.
*/
if (tunnel) {
/* ...not for tunnels though: we don't have a sending socket */
if (udp_sk(sk)->encap_err_rcv)
udp_sk(sk)->encap_err_rcv(sk, skb, err, uh->dest, info,
(u8 *)(uh+1));
goto out;
}
if (!inet_test_bit(RECVERR, sk)) {
if (!harderr || sk->sk_state != TCP_ESTABLISHED)
goto out;
} else
ip_icmp_error(sk, skb, err, uh->dest, info, (u8 *)(uh+1));
sk->sk_err = err;
sk_error_report(sk);
out:
return 0;
}
int udp_err(struct sk_buff *skb, u32 info)
{
return __udp4_lib_err(skb, info, dev_net(skb->dev)->ipv4.udp_table);
}
/*
* Throw away all pending data and cancel the corking. Socket is locked.
*/
void udp_flush_pending_frames(struct sock *sk)
{
struct udp_sock *up = udp_sk(sk);
if (up->pending) {
up->len = 0;
WRITE_ONCE(up->pending, 0);
ip_flush_pending_frames(sk);
}
}
EXPORT_SYMBOL(udp_flush_pending_frames);
/**
* udp4_hwcsum - handle outgoing HW checksumming
* @skb: sk_buff containing the filled-in UDP header
* (checksum field must be zeroed out)
* @src: source IP address
* @dst: destination IP address
*/
void udp4_hwcsum(struct sk_buff *skb, __be32 src, __be32 dst)
{
struct udphdr *uh = udp_hdr(skb);
int offset = skb_transport_offset(skb);
int len = skb->len - offset;
int hlen = len;
__wsum csum = 0;
if (!skb_has_frag_list(skb)) {
/*
* Only one fragment on the socket.
*/
skb->csum_start = skb_transport_header(skb) - skb->head;
skb->csum_offset = offsetof(struct udphdr, check);
uh->check = ~csum_tcpudp_magic(src, dst, len,
IPPROTO_UDP, 0);
} else {
struct sk_buff *frags;
/*
* HW-checksum won't work as there are two or more
* fragments on the socket so that all csums of sk_buffs
* should be together
*/
skb_walk_frags(skb, frags) {
csum = csum_add(csum, frags->csum);
hlen -= frags->len;
}
csum = skb_checksum(skb, offset, hlen, csum);
skb->ip_summed = CHECKSUM_NONE;
uh->check = csum_tcpudp_magic(src, dst, len, IPPROTO_UDP, csum);
if (uh->check == 0)
uh->check = CSUM_MANGLED_0;
}
}
EXPORT_SYMBOL_GPL(udp4_hwcsum);
/* Function to set UDP checksum for an IPv4 UDP packet. This is intended
* for the simple case like when setting the checksum for a UDP tunnel.
*/
void udp_set_csum(bool nocheck, struct sk_buff *skb,
__be32 saddr, __be32 daddr, int len)
{
struct udphdr *uh = udp_hdr(skb);
if (nocheck) {
uh->check = 0;
} else if (skb_is_gso(skb)) {
uh->check = ~udp_v4_check(len, saddr, daddr, 0);
} else if (skb->ip_summed == CHECKSUM_PARTIAL) {
uh->check = 0;
uh->check = udp_v4_check(len, saddr, daddr, lco_csum(skb));
if (uh->check == 0)
uh->check = CSUM_MANGLED_0;
} else {
skb->ip_summed = CHECKSUM_PARTIAL;
skb->csum_start = skb_transport_header(skb) - skb->head;
skb->csum_offset = offsetof(struct udphdr, check);
uh->check = ~udp_v4_check(len, saddr, daddr, 0);
}
}
EXPORT_SYMBOL(udp_set_csum);
static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4,
struct inet_cork *cork)
{
struct sock *sk = skb->sk;
struct inet_sock *inet = inet_sk(sk);
struct udphdr *uh;
int err;
int is_udplite = IS_UDPLITE(sk);
int offset = skb_transport_offset(skb);
int len = skb->len - offset;
int datalen = len - sizeof(*uh);
__wsum csum = 0;
/*
* Create a UDP header
*/
uh = udp_hdr(skb);
uh->source = inet->inet_sport;
uh->dest = fl4->fl4_dport;
uh->len = htons(len);
uh->check = 0;
if (cork->gso_size) {
const int hlen = skb_network_header_len(skb) +
sizeof(struct udphdr);
if (hlen + cork->gso_size > cork->fragsize) {
kfree_skb(skb);
return -EINVAL;
}
if (datalen > cork->gso_size * UDP_MAX_SEGMENTS) {
kfree_skb(skb);
return -EINVAL;
}
if (sk->sk_no_check_tx) {
kfree_skb(skb);
return -EINVAL;
}
if (skb->ip_summed != CHECKSUM_PARTIAL || is_udplite ||
dst_xfrm(skb_dst(skb))) {
kfree_skb(skb);
return -EIO;
}
if (datalen > cork->gso_size) {
skb_shinfo(skb)->gso_size = cork->gso_size;
skb_shinfo(skb)->gso_type = SKB_GSO_UDP_L4;
skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(datalen,
cork->gso_size);
}
goto csum_partial;
}
if (is_udplite) /* UDP-Lite */
csum = udplite_csum(skb);
else if (sk->sk_no_check_tx) { /* UDP csum off */
skb->ip_summed = CHECKSUM_NONE;
goto send;
} else if (skb->ip_summed == CHECKSUM_PARTIAL) { /* UDP hardware csum */
csum_partial:
udp4_hwcsum(skb, fl4->saddr, fl4->daddr);
goto send;
} else
csum = udp_csum(skb);
/* add protocol-dependent pseudo-header */
uh->check = csum_tcpudp_magic(fl4->saddr, fl4->daddr, len,
sk->sk_protocol, csum);
if (uh->check == 0)
uh->check = CSUM_MANGLED_0;
send:
err = ip_send_skb(sock_net(sk), skb);
if (err) {
if (err == -ENOBUFS &&
!inet_test_bit(RECVERR, sk)) {
UDP_INC_STATS(sock_net(sk),
UDP_MIB_SNDBUFERRORS, is_udplite);
err = 0;
}
} else
UDP_INC_STATS(sock_net(sk),
UDP_MIB_OUTDATAGRAMS, is_udplite);
return err;
}
/*
* Push out all pending data as one UDP datagram. Socket is locked.
*/
int udp_push_pending_frames(struct sock *sk)
{
struct udp_sock *up = udp_sk(sk);
struct inet_sock *inet = inet_sk(sk);
struct flowi4 *fl4 = &inet->cork.fl.u.ip4;
struct sk_buff *skb;
int err = 0;
skb = ip_finish_skb(sk, fl4);
if (!skb)
goto out;
err = udp_send_skb(skb, fl4, &inet->cork.base);
out:
up->len = 0;
WRITE_ONCE(up->pending, 0);
return err;
}
EXPORT_SYMBOL(udp_push_pending_frames);
static int __udp_cmsg_send(struct cmsghdr *cmsg, u16 *gso_size)
{
switch (cmsg->cmsg_type) {
case UDP_SEGMENT:
if (cmsg->cmsg_len != CMSG_LEN(sizeof(__u16)))
return -EINVAL;
*gso_size = *(__u16 *)CMSG_DATA(cmsg);
return 0;
default:
return -EINVAL;
}
}
int udp_cmsg_send(struct sock *sk, struct msghdr *msg, u16 *gso_size)
{
struct cmsghdr *cmsg;
bool need_ip = false;
int err;
for_each_cmsghdr(cmsg, msg) {
if (!CMSG_OK(msg, cmsg))
return -EINVAL;
if (cmsg->cmsg_level != SOL_UDP) {
need_ip = true;
continue;
}
err = __udp_cmsg_send(cmsg, gso_size);
if (err)
return err;
}
return need_ip;
}
EXPORT_SYMBOL_GPL(udp_cmsg_send);
int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
{
struct inet_sock *inet = inet_sk(sk);
struct udp_sock *up = udp_sk(sk);
DECLARE_SOCKADDR(struct sockaddr_in *, usin, msg->msg_name);
struct flowi4 fl4_stack;
struct flowi4 *fl4;
int ulen = len;
struct ipcm_cookie ipc;
struct rtable *rt = NULL;
int free = 0;
int connected = 0;
__be32 daddr, faddr, saddr;
u8 tos, scope;
__be16 dport;
int err, is_udplite = IS_UDPLITE(sk);
int corkreq = udp_test_bit(CORK, sk) || msg->msg_flags & MSG_MORE;
int (*getfrag)(void *, char *, int, int, int, struct sk_buff *);
struct sk_buff *skb;
struct ip_options_data opt_copy;
trace_android_rvh_udp_sendmsg(sk, msg, len);
if (len > 0xFFFF)
return -EMSGSIZE;
/*
* Check the flags.
*/
if (msg->msg_flags & MSG_OOB) /* Mirror BSD error message compatibility */
return -EOPNOTSUPP;
trace_android_vh_uplink_send_msg(sk);
getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag;
fl4 = &inet->cork.fl.u.ip4;
if (READ_ONCE(up->pending)) {
/*
* There are pending frames.
* The socket lock must be held while it's corked.
*/
lock_sock(sk);
if (likely(up->pending)) {
if (unlikely(up->pending != AF_INET)) {
release_sock(sk);
return -EINVAL;
}
goto do_append_data;
}
release_sock(sk);
}
ulen += sizeof(struct udphdr);
/*
* Get and verify the address.
*/
if (usin) {
if (msg->msg_namelen < sizeof(*usin))
return -EINVAL;
if (usin->sin_family != AF_INET) {
if (usin->sin_family != AF_UNSPEC)
return -EAFNOSUPPORT;
}
daddr = usin->sin_addr.s_addr;
dport = usin->sin_port;
if (dport == 0)
return -EINVAL;
} else {
if (sk->sk_state != TCP_ESTABLISHED)
return -EDESTADDRREQ;
daddr = inet->inet_daddr;
dport = inet->inet_dport;
/* Open fast path for connected socket.
Route will not be used, if at least one option is set.
*/
connected = 1;
}
trace_android_vh_udp_v4_connect(sk, daddr, dport, AF_INET);
ipcm_init_sk(&ipc, inet);
ipc.gso_size = READ_ONCE(up->gso_size);
if (msg->msg_controllen) {
err = udp_cmsg_send(sk, msg, &ipc.gso_size);
if (err > 0) {
err = ip_cmsg_send(sk, msg, &ipc,
sk->sk_family == AF_INET6);
connected = 0;
}
if (unlikely(err < 0)) {
kfree(ipc.opt);
return err;
}
if (ipc.opt)
free = 1;
}
if (!ipc.opt) {
struct ip_options_rcu *inet_opt;
rcu_read_lock();
inet_opt = rcu_dereference(inet->inet_opt);
if (inet_opt) {
memcpy(&opt_copy, inet_opt,
sizeof(*inet_opt) + inet_opt->opt.optlen);
ipc.opt = &opt_copy.opt;
}
rcu_read_unlock();
}
if (cgroup_bpf_enabled(CGROUP_UDP4_SENDMSG) && !connected) {
err = BPF_CGROUP_RUN_PROG_UDP4_SENDMSG_LOCK(sk,
(struct sockaddr *)usin,
&msg->msg_namelen,
&ipc.addr);
if (err)
goto out_free;
if (usin) {
if (usin->sin_port == 0) {
/* BPF program set invalid port. Reject it. */
err = -EINVAL;
goto out_free;
}
daddr = usin->sin_addr.s_addr;
dport = usin->sin_port;
}
}
saddr = ipc.addr;
ipc.addr = faddr = daddr;
if (ipc.opt && ipc.opt->opt.srr) {
if (!daddr) {
err = -EINVAL;
goto out_free;
}
faddr = ipc.opt->opt.faddr;
connected = 0;
}
tos = get_rttos(&ipc, inet);
scope = ip_sendmsg_scope(inet, &ipc, msg);
if (scope == RT_SCOPE_LINK)
connected = 0;
if (ipv4_is_multicast(daddr)) {
if (!ipc.oif || netif_index_is_l3_master(sock_net(sk), ipc.oif))
ipc.oif = inet->mc_index;
if (!saddr)
saddr = inet->mc_addr;
connected = 0;
} else if (!ipc.oif) {
ipc.oif = inet->uc_index;
} else if (ipv4_is_lbcast(daddr) && inet->uc_index) {
/* oif is set, packet is to local broadcast and
* uc_index is set. oif is most likely set
* by sk_bound_dev_if. If uc_index != oif check if the
* oif is an L3 master and uc_index is an L3 slave.
* If so, we want to allow the send using the uc_index.
*/
if (ipc.oif != inet->uc_index &&
ipc.oif == l3mdev_master_ifindex_by_index(sock_net(sk),
inet->uc_index)) {
ipc.oif = inet->uc_index;
}
}
if (connected)
rt = (struct rtable *)sk_dst_check(sk, 0);
if (!rt) {
struct net *net = sock_net(sk);
__u8 flow_flags = inet_sk_flowi_flags(sk);
fl4 = &fl4_stack;
flowi4_init_output(fl4, ipc.oif, ipc.sockc.mark, tos, scope,
sk->sk_protocol, flow_flags, faddr, saddr,
dport, inet->inet_sport, sk->sk_uid);
security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4));
rt = ip_route_output_flow(net, fl4, sk);
if (IS_ERR(rt)) {
err = PTR_ERR(rt);
rt = NULL;
if (err == -ENETUNREACH)
IP_INC_STATS(net, IPSTATS_MIB_OUTNOROUTES);
goto out;
}
err = -EACCES;
if ((rt->rt_flags & RTCF_BROADCAST) &&
!sock_flag(sk, SOCK_BROADCAST))
goto out;
if (connected)
sk_dst_set(sk, dst_clone(&rt->dst));
}
if (msg->msg_flags&MSG_CONFIRM)
goto do_confirm;
back_from_confirm:
saddr = fl4->saddr;
if (!ipc.addr)
daddr = ipc.addr = fl4->daddr;
/* Lockless fast path for the non-corking case. */
if (!corkreq) {
struct inet_cork cork;
skb = ip_make_skb(sk, fl4, getfrag, msg, ulen,
sizeof(struct udphdr), &ipc, &rt,
&cork, msg->msg_flags);
err = PTR_ERR(skb);
if (!IS_ERR_OR_NULL(skb))
err = udp_send_skb(skb, fl4, &cork);
goto out;
}
lock_sock(sk);
if (unlikely(up->pending)) {
/* The socket is already corked while preparing it. */
/* ... which is an evident application bug. --ANK */
release_sock(sk);
net_dbg_ratelimited("socket already corked\n");
err = -EINVAL;
goto out;
}
/*
* Now cork the socket to pend data.
*/
fl4 = &inet->cork.fl.u.ip4;
fl4->daddr = daddr;
fl4->saddr = saddr;
fl4->fl4_dport = dport;
fl4->fl4_sport = inet->inet_sport;
WRITE_ONCE(up->pending, AF_INET);
do_append_data:
up->len += ulen;
err = ip_append_data(sk, fl4, getfrag, msg, ulen,
sizeof(struct udphdr), &ipc, &rt,
corkreq ? msg->msg_flags|MSG_MORE : msg->msg_flags);
if (err)
udp_flush_pending_frames(sk);
else if (!corkreq)
err = udp_push_pending_frames(sk);
else if (unlikely(skb_queue_empty(&sk->sk_write_queue)))
WRITE_ONCE(up->pending, 0);
release_sock(sk);
out:
ip_rt_put(rt);
out_free:
if (free)
kfree(ipc.opt);
if (!err)
return len;
/*
* ENOBUFS = no kernel mem, SOCK_NOSPACE = no sndbuf space. Reporting
* ENOBUFS might not be good (it's not tunable per se), but otherwise
* we don't have a good statistic (IpOutDiscards but it can be too many
* things). We could add another new stat but at least for now that
* seems like overkill.
*/
if (err == -ENOBUFS || test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
UDP_INC_STATS(sock_net(sk),
UDP_MIB_SNDBUFERRORS, is_udplite);
}
return err;
do_confirm:
if (msg->msg_flags & MSG_PROBE)
dst_confirm_neigh(&rt->dst, &fl4->daddr);
if (!(msg->msg_flags&MSG_PROBE) || len)
goto back_from_confirm;
err = 0;
goto out;
}
EXPORT_SYMBOL(udp_sendmsg);
void udp_splice_eof(struct socket *sock)
{
struct sock *sk = sock->sk;
struct udp_sock *up = udp_sk(sk);
if (!READ_ONCE(up->pending) || udp_test_bit(CORK, sk))
return;
lock_sock(sk);
if (up->pending && !udp_test_bit(CORK, sk))
udp_push_pending_frames(sk);
release_sock(sk);
}
EXPORT_SYMBOL_GPL(udp_splice_eof);
#define UDP_SKB_IS_STATELESS 0x80000000
/* all head states (dst, sk, nf conntrack) except skb extensions are
* cleared by udp_rcv().
*
* We need to preserve secpath, if present, to eventually process
* IP_CMSG_PASSSEC at recvmsg() time.
*
* Other extensions can be cleared.
*/
static bool udp_try_make_stateless(struct sk_buff *skb)
{
if (!skb_has_extensions(skb))
return true;
if (!secpath_exists(skb)) {
skb_ext_reset(skb);
return true;
}
return false;
}
static void udp_set_dev_scratch(struct sk_buff *skb)
{
struct udp_dev_scratch *scratch = udp_skb_scratch(skb);
BUILD_BUG_ON(sizeof(struct udp_dev_scratch) > sizeof(long));
scratch->_tsize_state = skb->truesize;
#if BITS_PER_LONG == 64
scratch->len = skb->len;
scratch->csum_unnecessary = !!skb_csum_unnecessary(skb);
scratch->is_linear = !skb_is_nonlinear(skb);
#endif
if (udp_try_make_stateless(skb))
scratch->_tsize_state |= UDP_SKB_IS_STATELESS;
}
static void udp_skb_csum_unnecessary_set(struct sk_buff *skb)
{
/* We come here after udp_lib_checksum_complete() returned 0.
* This means that __skb_checksum_complete() might have
* set skb->csum_valid to 1.
* On 64bit platforms, we can set csum_unnecessary
* to true, but only if the skb is not shared.
*/
#if BITS_PER_LONG == 64
if (!skb_shared(skb))
udp_skb_scratch(skb)->csum_unnecessary = true;
#endif
}
static int udp_skb_truesize(struct sk_buff *skb)
{
return udp_skb_scratch(skb)->_tsize_state & ~UDP_SKB_IS_STATELESS;
}
static bool udp_skb_has_head_state(struct sk_buff *skb)
{
return !(udp_skb_scratch(skb)->_tsize_state & UDP_SKB_IS_STATELESS);
}
/* fully reclaim rmem/fwd memory allocated for skb */
static void udp_rmem_release(struct sock *sk, int size, int partial,
bool rx_queue_lock_held)
{
struct udp_sock *up = udp_sk(sk);
struct sk_buff_head *sk_queue;
int amt;
if (likely(partial)) {
up->forward_deficit += size;
size = up->forward_deficit;
if (size < READ_ONCE(up->forward_threshold) &&
!skb_queue_empty(&up->reader_queue))
return;
} else {
size += up->forward_deficit;
}
up->forward_deficit = 0;
/* acquire the sk_receive_queue for fwd allocated memory scheduling,
* if the called don't held it already
*/
sk_queue = &sk->sk_receive_queue;
if (!rx_queue_lock_held)
spin_lock(&sk_queue->lock);
sk_forward_alloc_add(sk, size);
amt = (sk->sk_forward_alloc - partial) & ~(PAGE_SIZE - 1);
sk_forward_alloc_add(sk, -amt);
if (amt)
__sk_mem_reduce_allocated(sk, amt >> PAGE_SHIFT);
atomic_sub(size, &sk->sk_rmem_alloc);
/* this can save us from acquiring the rx queue lock on next receive */
skb_queue_splice_tail_init(sk_queue, &up->reader_queue);
if (!rx_queue_lock_held)
spin_unlock(&sk_queue->lock);
}
/* Note: called with reader_queue.lock held.
* Instead of using skb->truesize here, find a copy of it in skb->dev_scratch
* This avoids a cache line miss while receive_queue lock is held.
* Look at __udp_enqueue_schedule_skb() to find where this copy is done.
*/
void udp_skb_destructor(struct sock *sk, struct sk_buff *skb)
{
prefetch(&skb->data);
udp_rmem_release(sk, udp_skb_truesize(skb), 1, false);
}
EXPORT_SYMBOL(udp_skb_destructor);
/* as above, but the caller held the rx queue lock, too */
static void udp_skb_dtor_locked(struct sock *sk, struct sk_buff *skb)
{
prefetch(&skb->data);
udp_rmem_release(sk, udp_skb_truesize(skb), 1, true);
}
/* Idea of busylocks is to let producers grab an extra spinlock
* to relieve pressure on the receive_queue spinlock shared by consumer.
* Under flood, this means that only one producer can be in line
* trying to acquire the receive_queue spinlock.
* These busylock can be allocated on a per cpu manner, instead of a
* per socket one (that would consume a cache line per socket)
*/
static int udp_busylocks_log __read_mostly;
static spinlock_t *udp_busylocks __read_mostly;
static spinlock_t *busylock_acquire(void *ptr)
{
spinlock_t *busy;
busy = udp_busylocks + hash_ptr(ptr, udp_busylocks_log);
spin_lock(busy);
return busy;
}
static void busylock_release(spinlock_t *busy)
{
if (busy)
spin_unlock(busy);
}
static int udp_rmem_schedule(struct sock *sk, int size)
{
int delta;
delta = size - sk->sk_forward_alloc;
if (delta > 0 && !__sk_mem_schedule(sk, delta, SK_MEM_RECV))
return -ENOBUFS;
return 0;
}
int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb)
{
struct sk_buff_head *list = &sk->sk_receive_queue;
int rmem, err = -ENOMEM;
spinlock_t *busy = NULL;
int size;
trace_android_vh_udp_enqueue_schedule_skb(sk, skb);
/* try to avoid the costly atomic add/sub pair when the receive
* queue is full; always allow at least a packet
*/
rmem = atomic_read(&sk->sk_rmem_alloc);
if (rmem > sk->sk_rcvbuf)
goto drop;
/* Under mem pressure, it might be helpful to help udp_recvmsg()
* having linear skbs :
* - Reduce memory overhead and thus increase receive queue capacity
* - Less cache line misses at copyout() time
* - Less work at consume_skb() (less alien page frag freeing)
*/
if (rmem > (sk->sk_rcvbuf >> 1)) {
skb_condense(skb);
busy = busylock_acquire(sk);
}
size = skb->truesize;
udp_set_dev_scratch(skb);
/* we drop only if the receive buf is full and the receive
* queue contains some other skb
*/
rmem = atomic_add_return(size, &sk->sk_rmem_alloc);
if (rmem > (size + (unsigned int)sk->sk_rcvbuf))
goto uncharge_drop;
spin_lock(&list->lock);
err = udp_rmem_schedule(sk, size);
if (err) {
spin_unlock(&list->lock);
goto uncharge_drop;
}
sk_forward_alloc_add(sk, -size);
/* no need to setup a destructor, we will explicitly release the
* forward allocated memory on dequeue
*/
sock_skb_set_dropcount(sk, skb);
__skb_queue_tail(list, skb);
spin_unlock(&list->lock);
if (!sock_flag(sk, SOCK_DEAD))
INDIRECT_CALL_1(sk->sk_data_ready, sock_def_readable, sk);
busylock_release(busy);
return 0;
uncharge_drop:
atomic_sub(skb->truesize, &sk->sk_rmem_alloc);
drop:
atomic_inc(&sk->sk_drops);
busylock_release(busy);
return err;
}
EXPORT_SYMBOL_GPL(__udp_enqueue_schedule_skb);
void udp_destruct_common(struct sock *sk)
{
/* reclaim completely the forward allocated memory */
struct udp_sock *up = udp_sk(sk);
unsigned int total = 0;
struct sk_buff *skb;
skb_queue_splice_tail_init(&sk->sk_receive_queue, &up->reader_queue);
while ((skb = __skb_dequeue(&up->reader_queue)) != NULL) {
total += skb->truesize;
kfree_skb(skb);
}
udp_rmem_release(sk, total, 0, true);
}
EXPORT_SYMBOL_GPL(udp_destruct_common);
static void udp_destruct_sock(struct sock *sk)
{
udp_destruct_common(sk);
inet_sock_destruct(sk);
}
int udp_init_sock(struct sock *sk)
{
udp_lib_init_sock(sk);
sk->sk_destruct = udp_destruct_sock;
set_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags);
return 0;
}
void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len)
{
if (unlikely(READ_ONCE(sk->sk_peek_off) >= 0)) {
bool slow = lock_sock_fast(sk);
sk_peek_offset_bwd(sk, len);
unlock_sock_fast(sk, slow);
}
if (!skb_unref(skb))
return;
/* In the more common cases we cleared the head states previously,
* see __udp_queue_rcv_skb().
*/
if (unlikely(udp_skb_has_head_state(skb)))
skb_release_head_state(skb);
__consume_stateless_skb(skb);
}
EXPORT_SYMBOL_GPL(skb_consume_udp);
static struct sk_buff *__first_packet_length(struct sock *sk,
struct sk_buff_head *rcvq,
int *total)
{
struct sk_buff *skb;
while ((skb = skb_peek(rcvq)) != NULL) {
if (udp_lib_checksum_complete(skb)) {
__UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS,
IS_UDPLITE(sk));
__UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS,
IS_UDPLITE(sk));
atomic_inc(&sk->sk_drops);
__skb_unlink(skb, rcvq);
*total += skb->truesize;
kfree_skb(skb);
} else {
udp_skb_csum_unnecessary_set(skb);
break;
}
}
return skb;
}
/**
* first_packet_length - return length of first packet in receive queue
* @sk: socket
*
* Drops all bad checksum frames, until a valid one is found.
* Returns the length of found skb, or -1 if none is found.
*/
static int first_packet_length(struct sock *sk)
{
struct sk_buff_head *rcvq = &udp_sk(sk)->reader_queue;
struct sk_buff_head *sk_queue = &sk->sk_receive_queue;
struct sk_buff *skb;
int total = 0;
int res;
spin_lock_bh(&rcvq->lock);
skb = __first_packet_length(sk, rcvq, &total);
if (!skb && !skb_queue_empty_lockless(sk_queue)) {
spin_lock(&sk_queue->lock);
skb_queue_splice_tail_init(sk_queue, rcvq);
spin_unlock(&sk_queue->lock);
skb = __first_packet_length(sk, rcvq, &total);
}
res = skb ? skb->len : -1;
if (total)
udp_rmem_release(sk, total, 1, false);
spin_unlock_bh(&rcvq->lock);
return res;
}
/*
* IOCTL requests applicable to the UDP protocol
*/
int udp_ioctl(struct sock *sk, int cmd, int *karg)
{
switch (cmd) {
case SIOCOUTQ:
{
*karg = sk_wmem_alloc_get(sk);
return 0;
}
case SIOCINQ:
{
*karg = max_t(int, 0, first_packet_length(sk));
return 0;
}
default:
return -ENOIOCTLCMD;
}
return 0;
}
EXPORT_SYMBOL(udp_ioctl);
struct sk_buff *__skb_recv_udp(struct sock *sk, unsigned int flags,
int *off, int *err)
{
struct sk_buff_head *sk_queue = &sk->sk_receive_queue;
struct sk_buff_head *queue;
struct sk_buff *last;
long timeo;
int error;
queue = &udp_sk(sk)->reader_queue;
timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
do {
struct sk_buff *skb;
error = sock_error(sk);
if (error)
break;
error = -EAGAIN;
do {
spin_lock_bh(&queue->lock);
skb = __skb_try_recv_from_queue(sk, queue, flags, off,
err, &last);
if (skb) {
if (!(flags & MSG_PEEK))
udp_skb_destructor(sk, skb);
spin_unlock_bh(&queue->lock);
return skb;
}
if (skb_queue_empty_lockless(sk_queue)) {
spin_unlock_bh(&queue->lock);
goto busy_check;
}
/* refill the reader queue and walk it again
* keep both queues locked to avoid re-acquiring
* the sk_receive_queue lock if fwd memory scheduling
* is needed.
*/
spin_lock(&sk_queue->lock);
skb_queue_splice_tail_init(sk_queue, queue);
skb = __skb_try_recv_from_queue(sk, queue, flags, off,
err, &last);
if (skb && !(flags & MSG_PEEK))
udp_skb_dtor_locked(sk, skb);
spin_unlock(&sk_queue->lock);
spin_unlock_bh(&queue->lock);
if (skb)
return skb;
busy_check:
if (!sk_can_busy_loop(sk))
break;
sk_busy_loop(sk, flags & MSG_DONTWAIT);
} while (!skb_queue_empty_lockless(sk_queue));
/* sk_queue is empty, reader_queue may contain peeked packets */
} while (timeo &&
!__skb_wait_for_more_packets(sk, &sk->sk_receive_queue,
&error, &timeo,
(struct sk_buff *)sk_queue));
*err = error;
return NULL;
}
EXPORT_SYMBOL(__skb_recv_udp);
int udp_read_skb(struct sock *sk, skb_read_actor_t recv_actor)
{
struct sk_buff *skb;
int err;
try_again:
skb = skb_recv_udp(sk, MSG_DONTWAIT, &err);
if (!skb)
return err;
if (udp_lib_checksum_complete(skb)) {
int is_udplite = IS_UDPLITE(sk);
struct net *net = sock_net(sk);
__UDP_INC_STATS(net, UDP_MIB_CSUMERRORS, is_udplite);
__UDP_INC_STATS(net, UDP_MIB_INERRORS, is_udplite);
atomic_inc(&sk->sk_drops);
kfree_skb(skb);
goto try_again;
}
WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk));
return recv_actor(sk, skb);
}
EXPORT_SYMBOL(udp_read_skb);
/*
* This should be easy, if there is something there we
* return it, otherwise we block.
*/
int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int flags,
int *addr_len)
{
struct inet_sock *inet = inet_sk(sk);
DECLARE_SOCKADDR(struct sockaddr_in *, sin, msg->msg_name);
struct sk_buff *skb;
unsigned int ulen, copied;
int off, err, peeking = flags & MSG_PEEK;
int is_udplite = IS_UDPLITE(sk);
bool checksum_valid = false;
if (flags & MSG_ERRQUEUE)
return ip_recv_error(sk, msg, len, addr_len);
try_again:
off = sk_peek_offset(sk, flags);
skb = __skb_recv_udp(sk, flags, &off, &err);
if (!skb)
return err;
ulen = udp_skb_len(skb);
copied = len;
if (copied > ulen - off)
copied = ulen - off;
else if (copied < ulen)
msg->msg_flags |= MSG_TRUNC;
/*
* If checksum is needed at all, try to do it while copying the
* data. If the data is truncated, or if we only want a partial
* coverage checksum (UDP-Lite), do it before the copy.
*/
if (copied < ulen || peeking ||
(is_udplite && UDP_SKB_CB(skb)->partial_cov)) {
checksum_valid = udp_skb_csum_unnecessary(skb) ||
!__udp_lib_checksum_complete(skb);
if (!checksum_valid)
goto csum_copy_err;
}
if (checksum_valid || udp_skb_csum_unnecessary(skb)) {
if (udp_skb_is_linear(skb))
err = copy_linear_skb(skb, copied, off, &msg->msg_iter);
else
err = skb_copy_datagram_msg(skb, off, msg, copied);
} else {
err = skb_copy_and_csum_datagram_msg(skb, off, msg);
if (err == -EINVAL)
goto csum_copy_err;
}
if (unlikely(err)) {
if (!peeking) {
atomic_inc(&sk->sk_drops);
UDP_INC_STATS(sock_net(sk),
UDP_MIB_INERRORS, is_udplite);
}
kfree_skb(skb);
return err;
}
if (!peeking)
UDP_INC_STATS(sock_net(sk),
UDP_MIB_INDATAGRAMS, is_udplite);
sock_recv_cmsgs(msg, sk, skb);
/* Copy the address. */
if (sin) {
sin->sin_family = AF_INET;
sin->sin_port = udp_hdr(skb)->source;
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
*addr_len = sizeof(*sin);
BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK(sk,
(struct sockaddr *)sin,
addr_len);
}
if (udp_test_bit(GRO_ENABLED, sk))
udp_cmsg_recv(msg, sk, skb);
if (inet_cmsg_flags(inet))
ip_cmsg_recv_offset(msg, sk, skb, sizeof(struct udphdr), off);
err = copied;
if (flags & MSG_TRUNC)
err = ulen;
trace_android_rvh_udp_recvmsg(sk, msg, len, flags, addr_len);
skb_consume_udp(sk, skb, peeking ? -err : err);
return err;
csum_copy_err:
if (!__sk_queue_drop_skb(sk, &udp_sk(sk)->reader_queue, skb, flags,
udp_skb_destructor)) {
UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
}
kfree_skb(skb);
/* starting over for a new packet, but check if we need to yield */
cond_resched();
msg->msg_flags &= ~MSG_TRUNC;
goto try_again;
}
int udp_pre_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
{
/* This check is replicated from __ip4_datagram_connect() and
* intended to prevent BPF program called below from accessing bytes
* that are out of the bound specified by user in addr_len.
*/
if (addr_len < sizeof(struct sockaddr_in))
return -EINVAL;
return BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK(sk, uaddr, &addr_len);
}
EXPORT_SYMBOL(udp_pre_connect);
int __udp_disconnect(struct sock *sk, int flags)
{
struct inet_sock *inet = inet_sk(sk);
/*
* 1003.1g - break association.
*/
sk->sk_state = TCP_CLOSE;
inet->inet_daddr = 0;
inet->inet_dport = 0;
sock_rps_reset_rxhash(sk);
sk->sk_bound_dev_if = 0;
if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) {
inet_reset_saddr(sk);
if (sk->sk_prot->rehash &&
(sk->sk_userlocks & SOCK_BINDPORT_LOCK))
sk->sk_prot->rehash(sk);
}
if (!(sk->sk_userlocks & SOCK_BINDPORT_LOCK)) {
sk->sk_prot->unhash(sk);
inet->inet_sport = 0;
}
sk_dst_reset(sk);
return 0;
}
EXPORT_SYMBOL(__udp_disconnect);
int udp_disconnect(struct sock *sk, int flags)
{
lock_sock(sk);
__udp_disconnect(sk, flags);
release_sock(sk);
return 0;
}
EXPORT_SYMBOL(udp_disconnect);
void udp_lib_unhash(struct sock *sk)
{
if (sk_hashed(sk)) {
struct udp_table *udptable = udp_get_table_prot(sk);
struct udp_hslot *hslot, *hslot2;
hslot = udp_hashslot(udptable, sock_net(sk),
udp_sk(sk)->udp_port_hash);
hslot2 = udp_hashslot2(udptable, udp_sk(sk)->udp_portaddr_hash);
spin_lock_bh(&hslot->lock);
if (rcu_access_pointer(sk->sk_reuseport_cb))
reuseport_detach_sock(sk);
if (sk_del_node_init_rcu(sk)) {
hslot->count--;
inet_sk(sk)->inet_num = 0;
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
spin_lock(&hslot2->lock);
hlist_del_init_rcu(&udp_sk(sk)->udp_portaddr_node);
hslot2->count--;
spin_unlock(&hslot2->lock);
}
spin_unlock_bh(&hslot->lock);
}
}
EXPORT_SYMBOL(udp_lib_unhash);
/*
* inet_rcv_saddr was changed, we must rehash secondary hash
*/
void udp_lib_rehash(struct sock *sk, u16 newhash)
{
if (sk_hashed(sk)) {
struct udp_table *udptable = udp_get_table_prot(sk);
struct udp_hslot *hslot, *hslot2, *nhslot2;
hslot2 = udp_hashslot2(udptable, udp_sk(sk)->udp_portaddr_hash);
nhslot2 = udp_hashslot2(udptable, newhash);
udp_sk(sk)->udp_portaddr_hash = newhash;
if (hslot2 != nhslot2 ||
rcu_access_pointer(sk->sk_reuseport_cb)) {
hslot = udp_hashslot(udptable, sock_net(sk),
udp_sk(sk)->udp_port_hash);
/* we must lock primary chain too */
spin_lock_bh(&hslot->lock);
if (rcu_access_pointer(sk->sk_reuseport_cb))
reuseport_detach_sock(sk);
if (hslot2 != nhslot2) {
spin_lock(&hslot2->lock);
hlist_del_init_rcu(&udp_sk(sk)->udp_portaddr_node);
hslot2->count--;
spin_unlock(&hslot2->lock);
spin_lock(&nhslot2->lock);
hlist_add_head_rcu(&udp_sk(sk)->udp_portaddr_node,
&nhslot2->head);
nhslot2->count++;
spin_unlock(&nhslot2->lock);
}
spin_unlock_bh(&hslot->lock);
}
}
}
EXPORT_SYMBOL(udp_lib_rehash);
void udp_v4_rehash(struct sock *sk)
{
u16 new_hash = ipv4_portaddr_hash(sock_net(sk),
inet_sk(sk)->inet_rcv_saddr,
inet_sk(sk)->inet_num);
udp_lib_rehash(sk, new_hash);
}
static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
{
int rc;
if (inet_sk(sk)->inet_daddr) {
sock_rps_save_rxhash(sk, skb);
sk_mark_napi_id(sk, skb);
sk_incoming_cpu_update(sk);
} else {
sk_mark_napi_id_once(sk, skb);
}
rc = __udp_enqueue_schedule_skb(sk, skb);
if (rc < 0) {
int is_udplite = IS_UDPLITE(sk);
int drop_reason;
/* Note that an ENOMEM error is charged twice */
if (rc == -ENOMEM) {
UDP_INC_STATS(sock_net(sk), UDP_MIB_RCVBUFERRORS,
is_udplite);
drop_reason = SKB_DROP_REASON_SOCKET_RCVBUFF;
} else {
UDP_INC_STATS(sock_net(sk), UDP_MIB_MEMERRORS,
is_udplite);
drop_reason = SKB_DROP_REASON_PROTO_MEM;
}
UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
kfree_skb_reason(skb, drop_reason);
trace_udp_fail_queue_rcv_skb(rc, sk);
return -1;
}
return 0;
}
/* returns:
* -1: error
* 0: success
* >0: "udp encap" protocol resubmission
*
* Note that in the success and error cases, the skb is assumed to
* have either been requeued or freed.
*/
static int udp_queue_rcv_one_skb(struct sock *sk, struct sk_buff *skb)
{
int drop_reason = SKB_DROP_REASON_NOT_SPECIFIED;
struct udp_sock *up = udp_sk(sk);
int is_udplite = IS_UDPLITE(sk);
/*
* Charge it to the socket, dropping if the queue is full.
*/
if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
drop_reason = SKB_DROP_REASON_XFRM_POLICY;
goto drop;
}
nf_reset_ct(skb);
if (static_branch_unlikely(&udp_encap_needed_key) &&
READ_ONCE(up->encap_type)) {
int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
/*
* This is an encapsulation socket so pass the skb to
* the socket's udp_encap_rcv() hook. Otherwise, just
* fall through and pass this up the UDP socket.
* up->encap_rcv() returns the following value:
* =0 if skb was successfully passed to the encap
* handler or was discarded by it.
* >0 if skb should be passed on to UDP.
* <0 if skb should be resubmitted as proto -N
*/
/* if we're overly short, let UDP handle it */
encap_rcv = READ_ONCE(up->encap_rcv);
if (encap_rcv) {
int ret;
/* Verify checksum before giving to encap */
if (udp_lib_checksum_complete(skb))
goto csum_error;
ret = encap_rcv(sk, skb);
if (ret <= 0) {
__UDP_INC_STATS(sock_net(sk),
UDP_MIB_INDATAGRAMS,
is_udplite);
return -ret;
}
}
/* FALLTHROUGH -- it's a UDP Packet */
}
/*
* UDP-Lite specific tests, ignored on UDP sockets
*/
if (udp_test_bit(UDPLITE_RECV_CC, sk) && UDP_SKB_CB(skb)->partial_cov) {
u16 pcrlen = READ_ONCE(up->pcrlen);
/*
* MIB statistics other than incrementing the error count are
* disabled for the following two types of errors: these depend
* on the application settings, not on the functioning of the
* protocol stack as such.
*
* RFC 3828 here recommends (sec 3.3): "There should also be a
* way ... to ... at least let the receiving application block
* delivery of packets with coverage values less than a value
* provided by the application."
*/
if (pcrlen == 0) { /* full coverage was set */
net_dbg_ratelimited("UDPLite: partial coverage %d while full coverage %d requested\n",
UDP_SKB_CB(skb)->cscov, skb->len);
goto drop;
}
/* The next case involves violating the min. coverage requested
* by the receiver. This is subtle: if receiver wants x and x is
* greater than the buffersize/MTU then receiver will complain
* that it wants x while sender emits packets of smaller size y.
* Therefore the above ...()->partial_cov statement is essential.
*/
if (UDP_SKB_CB(skb)->cscov < pcrlen) {
net_dbg_ratelimited("UDPLite: coverage %d too small, need min %d\n",
UDP_SKB_CB(skb)->cscov, pcrlen);
goto drop;
}
}
prefetch(&sk->sk_rmem_alloc);
if (rcu_access_pointer(sk->sk_filter) &&
udp_lib_checksum_complete(skb))
goto csum_error;
if (sk_filter_trim_cap(sk, skb, sizeof(struct udphdr))) {
drop_reason = SKB_DROP_REASON_SOCKET_FILTER;
goto drop;
}
udp_csum_pull_header(skb);
ipv4_pktinfo_prepare(sk, skb, true);
return __udp_queue_rcv_skb(sk, skb);
csum_error:
drop_reason = SKB_DROP_REASON_UDP_CSUM;
__UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
drop:
__UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
atomic_inc(&sk->sk_drops);
kfree_skb_reason(skb, drop_reason);
return -1;
}
static int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
{
struct sk_buff *next, *segs;
int ret;
if (likely(!udp_unexpected_gso(sk, skb)))
return udp_queue_rcv_one_skb(sk, skb);
BUILD_BUG_ON(sizeof(struct udp_skb_cb) > SKB_GSO_CB_OFFSET);
__skb_push(skb, -skb_mac_offset(skb));
segs = udp_rcv_segment(sk, skb, true);
skb_list_walk_safe(segs, skb, next) {
__skb_pull(skb, skb_transport_offset(skb));
udp_post_segment_fix_csum(skb);
ret = udp_queue_rcv_one_skb(sk, skb);
if (ret > 0)
ip_protocol_deliver_rcu(dev_net(skb->dev), skb, ret);
}
return 0;
}
/* For TCP sockets, sk_rx_dst is protected by socket lock
* For UDP, we use xchg() to guard against concurrent changes.
*/
bool udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst)
{
struct dst_entry *old;
if (dst_hold_safe(dst)) {
old = xchg((__force struct dst_entry **)&sk->sk_rx_dst, dst);
dst_release(old);
return old != dst;
}
return false;
}
EXPORT_SYMBOL(udp_sk_rx_dst_set);
/*
* Multicasts and broadcasts go to each listener.
*
* Note: called only from the BH handler context.
*/
static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
struct udphdr *uh,
__be32 saddr, __be32 daddr,
struct udp_table *udptable,
int proto)
{
struct sock *sk, *first = NULL;
unsigned short hnum = ntohs(uh->dest);
struct udp_hslot *hslot = udp_hashslot(udptable, net, hnum);
unsigned int hash2 = 0, hash2_any = 0, use_hash2 = (hslot->count > 10);
unsigned int offset = offsetof(typeof(*sk), sk_node);
int dif = skb->dev->ifindex;
int sdif = inet_sdif(skb);
struct hlist_node *node;
struct sk_buff *nskb;
if (use_hash2) {
hash2_any = ipv4_portaddr_hash(net, htonl(INADDR_ANY), hnum) &
udptable->mask;
hash2 = ipv4_portaddr_hash(net, daddr, hnum) & udptable->mask;
start_lookup:
hslot = &udptable->hash2[hash2];
offset = offsetof(typeof(*sk), __sk_common.skc_portaddr_node);
}
sk_for_each_entry_offset_rcu(sk, node, &hslot->head, offset) {
if (!__udp_is_mcast_sock(net, sk, uh->dest, daddr,
uh->source, saddr, dif, sdif, hnum))
continue;
if (!first) {
first = sk;
continue;
}
nskb = skb_clone(skb, GFP_ATOMIC);
if (unlikely(!nskb)) {
atomic_inc(&sk->sk_drops);
__UDP_INC_STATS(net, UDP_MIB_RCVBUFERRORS,
IS_UDPLITE(sk));
__UDP_INC_STATS(net, UDP_MIB_INERRORS,
IS_UDPLITE(sk));
continue;
}
if (udp_queue_rcv_skb(sk, nskb) > 0)
consume_skb(nskb);
}
/* Also lookup *:port if we are using hash2 and haven't done so yet. */
if (use_hash2 && hash2 != hash2_any) {
hash2 = hash2_any;
goto start_lookup;
}
if (first) {
if (udp_queue_rcv_skb(first, skb) > 0)
consume_skb(skb);
} else {
kfree_skb(skb);
__UDP_INC_STATS(net, UDP_MIB_IGNOREDMULTI,
proto == IPPROTO_UDPLITE);
}
return 0;
}
/* Initialize UDP checksum. If exited with zero value (success),
* CHECKSUM_UNNECESSARY means, that no more checks are required.
* Otherwise, csum completion requires checksumming packet body,
* including udp header and folding it to skb->csum.
*/
static inline int udp4_csum_init(struct sk_buff *skb, struct udphdr *uh,
int proto)
{
int err;
UDP_SKB_CB(skb)->partial_cov = 0;
UDP_SKB_CB(skb)->cscov = skb->len;
if (proto == IPPROTO_UDPLITE) {
err = udplite_checksum_init(skb, uh);
if (err)
return err;
if (UDP_SKB_CB(skb)->partial_cov) {
skb->csum = inet_compute_pseudo(skb, proto);
return 0;
}
}
/* Note, we are only interested in != 0 or == 0, thus the
* force to int.
*/
err = (__force int)skb_checksum_init_zero_check(skb, proto, uh->check,
inet_compute_pseudo);
if (err)
return err;
if (skb->ip_summed == CHECKSUM_COMPLETE && !skb->csum_valid) {
/* If SW calculated the value, we know it's bad */
if (skb->csum_complete_sw)
return 1;
/* HW says the value is bad. Let's validate that.
* skb->csum is no longer the full packet checksum,
* so don't treat it as such.
*/
skb_checksum_complete_unset(skb);
}
return 0;
}
/* wrapper for udp_queue_rcv_skb tacking care of csum conversion and
* return code conversion for ip layer consumption
*/
static int udp_unicast_rcv_skb(struct sock *sk, struct sk_buff *skb,
struct udphdr *uh)
{
int ret;
if (inet_get_convert_csum(sk) && uh->check && !IS_UDPLITE(sk))
skb_checksum_try_convert(skb, IPPROTO_UDP, inet_compute_pseudo);
ret = udp_queue_rcv_skb(sk, skb);
/* a return value > 0 means to resubmit the input, but
* it wants the return to be -protocol, or 0
*/
if (ret > 0)
return -ret;
return 0;
}
/*
* All we need to do is get the socket, and then do a checksum.
*/
int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
int proto)
{
struct sock *sk;
struct udphdr *uh;
unsigned short ulen;
struct rtable *rt = skb_rtable(skb);
__be32 saddr, daddr;
struct net *net = dev_net(skb->dev);
bool refcounted;
int drop_reason;
drop_reason = SKB_DROP_REASON_NOT_SPECIFIED;
/*
* Validate the packet.
*/
if (!pskb_may_pull(skb, sizeof(struct udphdr)))
goto drop; /* No space for header. */
uh = udp_hdr(skb);
ulen = ntohs(uh->len);
saddr = ip_hdr(skb)->saddr;
daddr = ip_hdr(skb)->daddr;
if (ulen > skb->len)
goto short_packet;
if (proto == IPPROTO_UDP) {
/* UDP validates ulen. */
if (ulen < sizeof(*uh) || pskb_trim_rcsum(skb, ulen))
goto short_packet;
uh = udp_hdr(skb);
}
if (udp4_csum_init(skb, uh, proto))
goto csum_error;
sk = inet_steal_sock(net, skb, sizeof(struct udphdr), saddr, uh->source, daddr, uh->dest,
&refcounted, udp_ehashfn);
if (IS_ERR(sk))
goto no_sk;
if (sk) {
struct dst_entry *dst = skb_dst(skb);
int ret;
if (unlikely(rcu_dereference(sk->sk_rx_dst) != dst))
udp_sk_rx_dst_set(sk, dst);
ret = udp_unicast_rcv_skb(sk, skb, uh);
if (refcounted)
sock_put(sk);
return ret;
}
if (rt->rt_flags & (RTCF_BROADCAST|RTCF_MULTICAST))
return __udp4_lib_mcast_deliver(net, skb, uh,
saddr, daddr, udptable, proto);
sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
if (sk)
return udp_unicast_rcv_skb(sk, skb, uh);
no_sk:
if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb))
goto drop;
nf_reset_ct(skb);
/* No socket. Drop packet silently, if checksum is wrong */
if (udp_lib_checksum_complete(skb))
goto csum_error;
drop_reason = SKB_DROP_REASON_NO_SOCKET;
__UDP_INC_STATS(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
/*
* Hmm. We got an UDP packet to a port to which we
* don't wanna listen. Ignore it.
*/
kfree_skb_reason(skb, drop_reason);
return 0;
short_packet:
drop_reason = SKB_DROP_REASON_PKT_TOO_SMALL;
net_dbg_ratelimited("UDP%s: short packet: From %pI4:%u %d/%d to %pI4:%u\n",
proto == IPPROTO_UDPLITE ? "Lite" : "",
&saddr, ntohs(uh->source),
ulen, skb->len,
&daddr, ntohs(uh->dest));
goto drop;
csum_error:
/*
* RFC1122: OK. Discards the bad packet silently (as far as
* the network is concerned, anyway) as per 4.1.3.4 (MUST).
*/
drop_reason = SKB_DROP_REASON_UDP_CSUM;
net_dbg_ratelimited("UDP%s: bad checksum. From %pI4:%u to %pI4:%u ulen %d\n",
proto == IPPROTO_UDPLITE ? "Lite" : "",
&saddr, ntohs(uh->source), &daddr, ntohs(uh->dest),
ulen);
__UDP_INC_STATS(net, UDP_MIB_CSUMERRORS, proto == IPPROTO_UDPLITE);
drop:
__UDP_INC_STATS(net, UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE);
kfree_skb_reason(skb, drop_reason);
return 0;
}
/* We can only early demux multicast if there is a single matching socket.
* If more than one socket found returns NULL
*/
static struct sock *__udp4_lib_mcast_demux_lookup(struct net *net,
__be16 loc_port, __be32 loc_addr,
__be16 rmt_port, __be32 rmt_addr,
int dif, int sdif)
{
struct udp_table *udptable = net->ipv4.udp_table;
unsigned short hnum = ntohs(loc_port);
struct sock *sk, *result;
struct udp_hslot *hslot;
unsigned int slot;
slot = udp_hashfn(net, hnum, udptable->mask);
hslot = &udptable->hash[slot];
/* Do not bother scanning a too big list */
if (hslot->count > 10)
return NULL;
result = NULL;
sk_for_each_rcu(sk, &hslot->head) {
if (__udp_is_mcast_sock(net, sk, loc_port, loc_addr,
rmt_port, rmt_addr, dif, sdif, hnum)) {
if (result)
return NULL;
result = sk;
}
}
return result;
}
/* For unicast we should only early demux connected sockets or we can
* break forwarding setups. The chains here can be long so only check
* if the first socket is an exact match and if not move on.
*/
static struct sock *__udp4_lib_demux_lookup(struct net *net,
__be16 loc_port, __be32 loc_addr,
__be16 rmt_port, __be32 rmt_addr,
int dif, int sdif)
{
struct udp_table *udptable = net->ipv4.udp_table;
INET_ADDR_COOKIE(acookie, rmt_addr, loc_addr);
unsigned short hnum = ntohs(loc_port);
unsigned int hash2, slot2;
struct udp_hslot *hslot2;
__portpair ports;
struct sock *sk;
hash2 = ipv4_portaddr_hash(net, loc_addr, hnum);
slot2 = hash2 & udptable->mask;
hslot2 = &udptable->hash2[slot2];
ports = INET_COMBINED_PORTS(rmt_port, hnum);
udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
if (inet_match(net, sk, acookie, ports, dif, sdif))
return sk;
/* Only check first socket in chain */
break;
}
return NULL;
}
int udp_v4_early_demux(struct sk_buff *skb)
{
struct net *net = dev_net(skb->dev);
struct in_device *in_dev = NULL;
const struct iphdr *iph;
const struct udphdr *uh;
struct sock *sk = NULL;
struct dst_entry *dst;
int dif = skb->dev->ifindex;
int sdif = inet_sdif(skb);
int ours;
/* validate the packet */
if (!pskb_may_pull(skb, skb_transport_offset(skb) + sizeof(struct udphdr)))
return 0;
iph = ip_hdr(skb);
uh = udp_hdr(skb);
if (skb->pkt_type == PACKET_MULTICAST) {
in_dev = __in_dev_get_rcu(skb->dev);
if (!in_dev)
return 0;
ours = ip_check_mc_rcu(in_dev, iph->daddr, iph->saddr,
iph->protocol);
if (!ours)
return 0;
sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr,
uh->source, iph->saddr,
dif, sdif);
} else if (skb->pkt_type == PACKET_HOST) {
sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
uh->source, iph->saddr, dif, sdif);
}
if (!sk || !refcount_inc_not_zero(&sk->sk_refcnt))
return 0;
skb->sk = sk;
skb->destructor = sock_efree;
dst = rcu_dereference(sk->sk_rx_dst);
if (dst)
dst = dst_check(dst, 0);
if (dst) {
u32 itag = 0;
/* set noref for now.
* any place which wants to hold dst has to call
* dst_hold_safe()
*/
skb_dst_set_noref(skb, dst);
/* for unconnected multicast sockets we need to validate
* the source on each packet
*/
if (!inet_sk(sk)->inet_daddr && in_dev)
return ip_mc_validate_source(skb, iph->daddr,
iph->saddr,
iph->tos & IPTOS_RT_MASK,
skb->dev, in_dev, &itag);
}
return 0;
}
int udp_rcv(struct sk_buff *skb)
{
return __udp4_lib_rcv(skb, dev_net(skb->dev)->ipv4.udp_table, IPPROTO_UDP);
}
void udp_destroy_sock(struct sock *sk)
{
struct udp_sock *up = udp_sk(sk);
bool slow = lock_sock_fast(sk);
/* protects from races with udp_abort() */
sock_set_flag(sk, SOCK_DEAD);
udp_flush_pending_frames(sk);
unlock_sock_fast(sk, slow);
if (static_branch_unlikely(&udp_encap_needed_key)) {
if (up->encap_type) {
void (*encap_destroy)(struct sock *sk);
encap_destroy = READ_ONCE(up->encap_destroy);
if (encap_destroy)
encap_destroy(sk);
}
if (udp_test_bit(ENCAP_ENABLED, sk))
static_branch_dec(&udp_encap_needed_key);
}
}
/*
* Socket option code for UDP
*/
int udp_lib_setsockopt(struct sock *sk, int level, int optname,
sockptr_t optval, unsigned int optlen,
int (*push_pending_frames)(struct sock *))
{
struct udp_sock *up = udp_sk(sk);
int val, valbool;
int err = 0;
int is_udplite = IS_UDPLITE(sk);
if (level == SOL_SOCKET) {
err = sk_setsockopt(sk, level, optname, optval, optlen);
if (optname == SO_RCVBUF || optname == SO_RCVBUFFORCE) {
sockopt_lock_sock(sk);
/* paired with READ_ONCE in udp_rmem_release() */
WRITE_ONCE(up->forward_threshold, sk->sk_rcvbuf >> 2);
sockopt_release_sock(sk);
}
return err;
}
if (optlen < sizeof(int))
return -EINVAL;
if (copy_from_sockptr(&val, optval, sizeof(val)))
return -EFAULT;
valbool = val ? 1 : 0;
switch (optname) {
case UDP_CORK:
if (val != 0) {
udp_set_bit(CORK, sk);
} else {
udp_clear_bit(CORK, sk);
lock_sock(sk);
push_pending_frames(sk);
release_sock(sk);
}
break;
case UDP_ENCAP:
switch (val) {
case 0:
#ifdef CONFIG_XFRM
case UDP_ENCAP_ESPINUDP:
case UDP_ENCAP_ESPINUDP_NON_IKE:
#if IS_ENABLED(CONFIG_IPV6)
if (sk->sk_family == AF_INET6)
WRITE_ONCE(up->encap_rcv,
ipv6_stub->xfrm6_udp_encap_rcv);
else
#endif
WRITE_ONCE(up->encap_rcv,
xfrm4_udp_encap_rcv);
#endif
fallthrough;
case UDP_ENCAP_L2TPINUDP:
WRITE_ONCE(up->encap_type, val);
udp_tunnel_encap_enable(sk);
break;
default:
err = -ENOPROTOOPT;
break;
}
break;
case UDP_NO_CHECK6_TX:
udp_set_no_check6_tx(sk, valbool);
break;
case UDP_NO_CHECK6_RX:
udp_set_no_check6_rx(sk, valbool);
break;
case UDP_SEGMENT:
if (val < 0 || val > USHRT_MAX)
return -EINVAL;
WRITE_ONCE(up->gso_size, val);
break;
case UDP_GRO:
/* when enabling GRO, accept the related GSO packet type */
if (valbool)
udp_tunnel_encap_enable(sk);
udp_assign_bit(GRO_ENABLED, sk, valbool);
udp_assign_bit(ACCEPT_L4, sk, valbool);
break;
/*
* UDP-Lite's partial checksum coverage (RFC 3828).
*/
/* The sender sets actual checksum coverage length via this option.
* The case coverage > packet length is handled by send module. */
case UDPLITE_SEND_CSCOV:
if (!is_udplite) /* Disable the option on UDP sockets */
return -ENOPROTOOPT;
if (val != 0 && val < 8) /* Illegal coverage: use default (8) */
val = 8;
else if (val > USHRT_MAX)
val = USHRT_MAX;
WRITE_ONCE(up->pcslen, val);
udp_set_bit(UDPLITE_SEND_CC, sk);
break;
/* The receiver specifies a minimum checksum coverage value. To make
* sense, this should be set to at least 8 (as done below). If zero is
* used, this again means full checksum coverage. */
case UDPLITE_RECV_CSCOV:
if (!is_udplite) /* Disable the option on UDP sockets */
return -ENOPROTOOPT;
if (val != 0 && val < 8) /* Avoid silly minimal values. */
val = 8;
else if (val > USHRT_MAX)
val = USHRT_MAX;
WRITE_ONCE(up->pcrlen, val);
udp_set_bit(UDPLITE_RECV_CC, sk);
break;
default:
err = -ENOPROTOOPT;
break;
}
return err;
}
EXPORT_SYMBOL(udp_lib_setsockopt);
int udp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval,
unsigned int optlen)
{
if (level == SOL_UDP || level == SOL_UDPLITE || level == SOL_SOCKET)
return udp_lib_setsockopt(sk, level, optname,
optval, optlen,
udp_push_pending_frames);
return ip_setsockopt(sk, level, optname, optval, optlen);
}
int udp_lib_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen)
{
struct udp_sock *up = udp_sk(sk);
int val, len;
if (get_user(len, optlen))
return -EFAULT;
if (len < 0)
return -EINVAL;
len = min_t(unsigned int, len, sizeof(int));
switch (optname) {
case UDP_CORK:
val = udp_test_bit(CORK, sk);
break;
case UDP_ENCAP:
val = READ_ONCE(up->encap_type);
break;
case UDP_NO_CHECK6_TX:
val = udp_get_no_check6_tx(sk);
break;
case UDP_NO_CHECK6_RX:
val = udp_get_no_check6_rx(sk);
break;
case UDP_SEGMENT:
val = READ_ONCE(up->gso_size);
break;
case UDP_GRO:
val = udp_test_bit(GRO_ENABLED, sk);
break;
/* The following two cannot be changed on UDP sockets, the return is
* always 0 (which corresponds to the full checksum coverage of UDP). */
case UDPLITE_SEND_CSCOV:
val = READ_ONCE(up->pcslen);
break;
case UDPLITE_RECV_CSCOV:
val = READ_ONCE(up->pcrlen);
break;
default:
return -ENOPROTOOPT;
}
if (put_user(len, optlen))
return -EFAULT;
if (copy_to_user(optval, &val, len))
return -EFAULT;
return 0;
}
EXPORT_SYMBOL(udp_lib_getsockopt);
int udp_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen)
{
if (level == SOL_UDP || level == SOL_UDPLITE)
return udp_lib_getsockopt(sk, level, optname, optval, optlen);
return ip_getsockopt(sk, level, optname, optval, optlen);
}
/**
* udp_poll - wait for a UDP event.
* @file: - file struct
* @sock: - socket
* @wait: - poll table
*
* This is same as datagram poll, except for the special case of
* blocking sockets. If application is using a blocking fd
* and a packet with checksum error is in the queue;
* then it could get return from select indicating data available
* but then block when reading it. Add special case code
* to work around these arguably broken applications.
*/
__poll_t udp_poll(struct file *file, struct socket *sock, poll_table *wait)
{
__poll_t mask = datagram_poll(file, sock, wait);
struct sock *sk = sock->sk;
if (!skb_queue_empty_lockless(&udp_sk(sk)->reader_queue))
mask |= EPOLLIN | EPOLLRDNORM;
/* Check for false positives due to checksum errors */
if ((mask & EPOLLRDNORM) && !(file->f_flags & O_NONBLOCK) &&
!(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1)
mask &= ~(EPOLLIN | EPOLLRDNORM);
/* psock ingress_msg queue should not contain any bad checksum frames */
if (sk_is_readable(sk))
mask |= EPOLLIN | EPOLLRDNORM;
return mask;
}
EXPORT_SYMBOL(udp_poll);
int udp_abort(struct sock *sk, int err)
{
if (!has_current_bpf_ctx())
lock_sock(sk);
/* udp{v6}_destroy_sock() sets it under the sk lock, avoid racing
* with close()
*/
if (sock_flag(sk, SOCK_DEAD))
goto out;
sk->sk_err = err;
sk_error_report(sk);
__udp_disconnect(sk, 0);
out:
if (!has_current_bpf_ctx())
release_sock(sk);
return 0;
}
EXPORT_SYMBOL_GPL(udp_abort);
struct proto udp_prot = {
.name = "UDP",
.owner = THIS_MODULE,
.close = udp_lib_close,
.pre_connect = udp_pre_connect,
.connect = ip4_datagram_connect,
.disconnect = udp_disconnect,
.ioctl = udp_ioctl,
.init = udp_init_sock,
.destroy = udp_destroy_sock,
.setsockopt = udp_setsockopt,
.getsockopt = udp_getsockopt,
.sendmsg = udp_sendmsg,
.recvmsg = udp_recvmsg,
.splice_eof = udp_splice_eof,
.release_cb = ip4_datagram_release_cb,
.hash = udp_lib_hash,
.unhash = udp_lib_unhash,
.rehash = udp_v4_rehash,
.get_port = udp_v4_get_port,
.put_port = udp_lib_unhash,
#ifdef CONFIG_BPF_SYSCALL
.psock_update_sk_prot = udp_bpf_update_proto,
#endif
.memory_allocated = &udp_memory_allocated,
.per_cpu_fw_alloc = &udp_memory_per_cpu_fw_alloc,
.sysctl_mem = sysctl_udp_mem,
.sysctl_wmem_offset = offsetof(struct net, ipv4.sysctl_udp_wmem_min),
.sysctl_rmem_offset = offsetof(struct net, ipv4.sysctl_udp_rmem_min),
.obj_size = sizeof(struct udp_sock),
.h.udp_table = NULL,
.diag_destroy = udp_abort,
};
EXPORT_SYMBOL(udp_prot);
/* ------------------------------------------------------------------------ */
#ifdef CONFIG_PROC_FS
static unsigned short seq_file_family(const struct seq_file *seq);
static bool seq_sk_match(struct seq_file *seq, const struct sock *sk)
{
unsigned short family = seq_file_family(seq);
/* AF_UNSPEC is used as a match all */
return ((family == AF_UNSPEC || family == sk->sk_family) &&
net_eq(sock_net(sk), seq_file_net(seq)));
}
#ifdef CONFIG_BPF_SYSCALL
static const struct seq_operations bpf_iter_udp_seq_ops;
#endif
static struct udp_table *udp_get_table_seq(struct seq_file *seq,
struct net *net)
{
const struct udp_seq_afinfo *afinfo;
#ifdef CONFIG_BPF_SYSCALL
if (seq->op == &bpf_iter_udp_seq_ops)
return net->ipv4.udp_table;
#endif
afinfo = pde_data(file_inode(seq->file));
return afinfo->udp_table ? : net->ipv4.udp_table;
}
static struct sock *udp_get_first(struct seq_file *seq, int start)
{
struct udp_iter_state *state = seq->private;
struct net *net = seq_file_net(seq);
struct udp_table *udptable;
struct sock *sk;
udptable = udp_get_table_seq(seq, net);
for (state->bucket = start; state->bucket <= udptable->mask;
++state->bucket) {
struct udp_hslot *hslot = &udptable->hash[state->bucket];
if (hlist_empty(&hslot->head))
continue;
spin_lock_bh(&hslot->lock);
sk_for_each(sk, &hslot->head) {
if (seq_sk_match(seq, sk))
goto found;
}
spin_unlock_bh(&hslot->lock);
}
sk = NULL;
found:
return sk;
}
static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
{
struct udp_iter_state *state = seq->private;
struct net *net = seq_file_net(seq);
struct udp_table *udptable;
do {
sk = sk_next(sk);
} while (sk && !seq_sk_match(seq, sk));
if (!sk) {
udptable = udp_get_table_seq(seq, net);
if (state->bucket <= udptable->mask)
spin_unlock_bh(&udptable->hash[state->bucket].lock);
return udp_get_first(seq, state->bucket + 1);
}
return sk;
}
static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
{
struct sock *sk = udp_get_first(seq, 0);
if (sk)
while (pos && (sk = udp_get_next(seq, sk)) != NULL)
--pos;
return pos ? NULL : sk;
}
void *udp_seq_start(struct seq_file *seq, loff_t *pos)
{
struct udp_iter_state *state = seq->private;
state->bucket = MAX_UDP_PORTS;
return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN;
}
EXPORT_SYMBOL(udp_seq_start);
void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
struct sock *sk;
if (v == SEQ_START_TOKEN)
sk = udp_get_idx(seq, 0);
else
sk = udp_get_next(seq, v);
++*pos;
return sk;
}
EXPORT_SYMBOL(udp_seq_next);
void udp_seq_stop(struct seq_file *seq, void *v)
{
struct udp_iter_state *state = seq->private;
struct udp_table *udptable;
udptable = udp_get_table_seq(seq, seq_file_net(seq));
if (state->bucket <= udptable->mask)
spin_unlock_bh(&udptable->hash[state->bucket].lock);
}
EXPORT_SYMBOL(udp_seq_stop);
/* ------------------------------------------------------------------------ */
static void udp4_format_sock(struct sock *sp, struct seq_file *f,
int bucket)
{
struct inet_sock *inet = inet_sk(sp);
__be32 dest = inet->inet_daddr;
__be32 src = inet->inet_rcv_saddr;
__u16 destp = ntohs(inet->inet_dport);
__u16 srcp = ntohs(inet->inet_sport);
seq_printf(f, "%5d: %08X:%04X %08X:%04X"
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %u",
bucket, src, srcp, dest, destp, sp->sk_state,
sk_wmem_alloc_get(sp),
udp_rqueue_get(sp),
0, 0L, 0,
from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
0, sock_i_ino(sp),
refcount_read(&sp->sk_refcnt), sp,
atomic_read(&sp->sk_drops));
}
int udp4_seq_show(struct seq_file *seq, void *v)
{
seq_setwidth(seq, 127);
if (v == SEQ_START_TOKEN)
seq_puts(seq, " sl local_address rem_address st tx_queue "
"rx_queue tr tm->when retrnsmt uid timeout "
"inode ref pointer drops");
else {
struct udp_iter_state *state = seq->private;
udp4_format_sock(v, seq, state->bucket);
}
seq_pad(seq, '\n');
return 0;
}
#ifdef CONFIG_BPF_SYSCALL
struct bpf_iter__udp {
__bpf_md_ptr(struct bpf_iter_meta *, meta);
__bpf_md_ptr(struct udp_sock *, udp_sk);
uid_t uid __aligned(8);
int bucket __aligned(8);
};
struct bpf_udp_iter_state {
struct udp_iter_state state;
unsigned int cur_sk;
unsigned int end_sk;
unsigned int max_sk;
int offset;
struct sock **batch;
bool st_bucket_done;
};
static int bpf_iter_udp_realloc_batch(struct bpf_udp_iter_state *iter,
unsigned int new_batch_sz);
static struct sock *bpf_iter_udp_batch(struct seq_file *seq)
{
struct bpf_udp_iter_state *iter = seq->private;
struct udp_iter_state *state = &iter->state;
struct net *net = seq_file_net(seq);
int resume_bucket, resume_offset;
struct udp_table *udptable;
unsigned int batch_sks = 0;
bool resized = false;
struct sock *sk;
resume_bucket = state->bucket;
resume_offset = iter->offset;
/* The current batch is done, so advance the bucket. */
if (iter->st_bucket_done)
state->bucket++;
udptable = udp_get_table_seq(seq, net);
again:
/* New batch for the next bucket.
* Iterate over the hash table to find a bucket with sockets matching
* the iterator attributes, and return the first matching socket from
* the bucket. The remaining matched sockets from the bucket are batched
* before releasing the bucket lock. This allows BPF programs that are
* called in seq_show to acquire the bucket lock if needed.
*/
iter->cur_sk = 0;
iter->end_sk = 0;
iter->st_bucket_done = false;
batch_sks = 0;
for (; state->bucket <= udptable->mask; state->bucket++) {
struct udp_hslot *hslot2 = &udptable->hash2[state->bucket];
if (hlist_empty(&hslot2->head))
continue;
iter->offset = 0;
spin_lock_bh(&hslot2->lock);
udp_portaddr_for_each_entry(sk, &hslot2->head) {
if (seq_sk_match(seq, sk)) {
/* Resume from the last iterated socket at the
* offset in the bucket before iterator was stopped.
*/
if (state->bucket == resume_bucket &&
iter->offset < resume_offset) {
++iter->offset;
continue;
}
if (iter->end_sk < iter->max_sk) {
sock_hold(sk);
iter->batch[iter->end_sk++] = sk;
}
batch_sks++;
}
}
spin_unlock_bh(&hslot2->lock);
if (iter->end_sk)
break;
}
/* All done: no batch made. */
if (!iter->end_sk)
return NULL;
if (iter->end_sk == batch_sks) {
/* Batching is done for the current bucket; return the first
* socket to be iterated from the batch.
*/
iter->st_bucket_done = true;
goto done;
}
if (!resized && !bpf_iter_udp_realloc_batch(iter, batch_sks * 3 / 2)) {
resized = true;
/* After allocating a larger batch, retry one more time to grab
* the whole bucket.
*/
goto again;
}
done:
return iter->batch[0];
}
static void *bpf_iter_udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
struct bpf_udp_iter_state *iter = seq->private;
struct sock *sk;
/* Whenever seq_next() is called, the iter->cur_sk is
* done with seq_show(), so unref the iter->cur_sk.
*/
if (iter->cur_sk < iter->end_sk) {
sock_put(iter->batch[iter->cur_sk++]);
++iter->offset;
}
/* After updating iter->cur_sk, check if there are more sockets
* available in the current bucket batch.
*/
if (iter->cur_sk < iter->end_sk)
sk = iter->batch[iter->cur_sk];
else
/* Prepare a new batch. */
sk = bpf_iter_udp_batch(seq);
++*pos;
return sk;
}
static void *bpf_iter_udp_seq_start(struct seq_file *seq, loff_t *pos)
{
/* bpf iter does not support lseek, so it always
* continue from where it was stop()-ped.
*/
if (*pos)
return bpf_iter_udp_batch(seq);
return SEQ_START_TOKEN;
}
static int udp_prog_seq_show(struct bpf_prog *prog, struct bpf_iter_meta *meta,
struct udp_sock *udp_sk, uid_t uid, int bucket)
{
struct bpf_iter__udp ctx;
meta->seq_num--; /* skip SEQ_START_TOKEN */
ctx.meta = meta;
ctx.udp_sk = udp_sk;
ctx.uid = uid;
ctx.bucket = bucket;
return bpf_iter_run_prog(prog, &ctx);
}
static int bpf_iter_udp_seq_show(struct seq_file *seq, void *v)
{
struct udp_iter_state *state = seq->private;
struct bpf_iter_meta meta;
struct bpf_prog *prog;
struct sock *sk = v;
uid_t uid;
int ret;
if (v == SEQ_START_TOKEN)
return 0;
lock_sock(sk);
if (unlikely(sk_unhashed(sk))) {
ret = SEQ_SKIP;
goto unlock;
}
uid = from_kuid_munged(seq_user_ns(seq), sock_i_uid(sk));
meta.seq = seq;
prog = bpf_iter_get_info(&meta, false);
ret = udp_prog_seq_show(prog, &meta, v, uid, state->bucket);
unlock:
release_sock(sk);
return ret;
}
static void bpf_iter_udp_put_batch(struct bpf_udp_iter_state *iter)
{
while (iter->cur_sk < iter->end_sk)
sock_put(iter->batch[iter->cur_sk++]);
}
static void bpf_iter_udp_seq_stop(struct seq_file *seq, void *v)
{
struct bpf_udp_iter_state *iter = seq->private;
struct bpf_iter_meta meta;
struct bpf_prog *prog;
if (!v) {
meta.seq = seq;
prog = bpf_iter_get_info(&meta, true);
if (prog)
(void)udp_prog_seq_show(prog, &meta, v, 0, 0);
}
if (iter->cur_sk < iter->end_sk) {
bpf_iter_udp_put_batch(iter);
iter->st_bucket_done = false;
}
}
static const struct seq_operations bpf_iter_udp_seq_ops = {
.start = bpf_iter_udp_seq_start,
.next = bpf_iter_udp_seq_next,
.stop = bpf_iter_udp_seq_stop,
.show = bpf_iter_udp_seq_show,
};
#endif
static unsigned short seq_file_family(const struct seq_file *seq)
{
const struct udp_seq_afinfo *afinfo;
#ifdef CONFIG_BPF_SYSCALL
/* BPF iterator: bpf programs to filter sockets. */
if (seq->op == &bpf_iter_udp_seq_ops)
return AF_UNSPEC;
#endif
/* Proc fs iterator */
afinfo = pde_data(file_inode(seq->file));
return afinfo->family;
}
const struct seq_operations udp_seq_ops = {
.start = udp_seq_start,
.next = udp_seq_next,
.stop = udp_seq_stop,
.show = udp4_seq_show,
};
EXPORT_SYMBOL(udp_seq_ops);
static struct udp_seq_afinfo udp4_seq_afinfo = {
.family = AF_INET,
.udp_table = NULL,
};
static int __net_init udp4_proc_init_net(struct net *net)
{
if (!proc_create_net_data("udp", 0444, net->proc_net, &udp_seq_ops,
sizeof(struct udp_iter_state), &udp4_seq_afinfo))
return -ENOMEM;
return 0;
}
static void __net_exit udp4_proc_exit_net(struct net *net)
{
remove_proc_entry("udp", net->proc_net);
}
static struct pernet_operations udp4_net_ops = {
.init = udp4_proc_init_net,
.exit = udp4_proc_exit_net,
};
int __init udp4_proc_init(void)
{
return register_pernet_subsys(&udp4_net_ops);
}
void udp4_proc_exit(void)
{
unregister_pernet_subsys(&udp4_net_ops);
}
#endif /* CONFIG_PROC_FS */
static __initdata unsigned long uhash_entries;
static int __init set_uhash_entries(char *str)
{
ssize_t ret;
if (!str)
return 0;
ret = kstrtoul(str, 0, &uhash_entries);
if (ret)
return 0;
if (uhash_entries && uhash_entries < UDP_HTABLE_SIZE_MIN)
uhash_entries = UDP_HTABLE_SIZE_MIN;
return 1;
}
__setup("uhash_entries=", set_uhash_entries);
void __init udp_table_init(struct udp_table *table, const char *name)
{
unsigned int i;
table->hash = alloc_large_system_hash(name,
2 * sizeof(struct udp_hslot),
uhash_entries,
21, /* one slot per 2 MB */
0,
&table->log,
&table->mask,
UDP_HTABLE_SIZE_MIN,
UDP_HTABLE_SIZE_MAX);
table->hash2 = table->hash + (table->mask + 1);
for (i = 0; i <= table->mask; i++) {
INIT_HLIST_HEAD(&table->hash[i].head);
table->hash[i].count = 0;
spin_lock_init(&table->hash[i].lock);
}
for (i = 0; i <= table->mask; i++) {
INIT_HLIST_HEAD(&table->hash2[i].head);
table->hash2[i].count = 0;
spin_lock_init(&table->hash2[i].lock);
}
}
u32 udp_flow_hashrnd(void)
{
static u32 hashrnd __read_mostly;
net_get_random_once(&hashrnd, sizeof(hashrnd));
return hashrnd;
}
EXPORT_SYMBOL(udp_flow_hashrnd);
static void __net_init udp_sysctl_init(struct net *net)
{
net->ipv4.sysctl_udp_rmem_min = PAGE_SIZE;
net->ipv4.sysctl_udp_wmem_min = PAGE_SIZE;
#ifdef CONFIG_NET_L3_MASTER_DEV
net->ipv4.sysctl_udp_l3mdev_accept = 0;
#endif
}
static struct udp_table __net_init *udp_pernet_table_alloc(unsigned int hash_entries)
{
struct udp_table *udptable;
int i;
udptable = kmalloc(sizeof(*udptable), GFP_KERNEL);
if (!udptable)
goto out;
udptable->hash = vmalloc_huge(hash_entries * 2 * sizeof(struct udp_hslot),
GFP_KERNEL_ACCOUNT);
if (!udptable->hash)
goto free_table;
udptable->hash2 = udptable->hash + hash_entries;
udptable->mask = hash_entries - 1;
udptable->log = ilog2(hash_entries);
for (i = 0; i < hash_entries; i++) {
INIT_HLIST_HEAD(&udptable->hash[i].head);
udptable->hash[i].count = 0;
spin_lock_init(&udptable->hash[i].lock);
INIT_HLIST_HEAD(&udptable->hash2[i].head);
udptable->hash2[i].count = 0;
spin_lock_init(&udptable->hash2[i].lock);
}
return udptable;
free_table:
kfree(udptable);
out:
return NULL;
}
static void __net_exit udp_pernet_table_free(struct net *net)
{
struct udp_table *udptable = net->ipv4.udp_table;
if (udptable == &udp_table)
return;
kvfree(udptable->hash);
kfree(udptable);
}
static void __net_init udp_set_table(struct net *net)
{
struct udp_table *udptable;
unsigned int hash_entries;
struct net *old_net;
if (net_eq(net, &init_net))
goto fallback;
old_net = current->nsproxy->net_ns;
hash_entries = READ_ONCE(old_net->ipv4.sysctl_udp_child_hash_entries);
if (!hash_entries)
goto fallback;
/* Set min to keep the bitmap on stack in udp_lib_get_port() */
if (hash_entries < UDP_HTABLE_SIZE_MIN_PERNET)
hash_entries = UDP_HTABLE_SIZE_MIN_PERNET;
else
hash_entries = roundup_pow_of_two(hash_entries);
udptable = udp_pernet_table_alloc(hash_entries);
if (udptable) {
net->ipv4.udp_table = udptable;
} else {
pr_warn("Failed to allocate UDP hash table (entries: %u) "
"for a netns, fallback to the global one\n",
hash_entries);
fallback:
net->ipv4.udp_table = &udp_table;
}
}
static int __net_init udp_pernet_init(struct net *net)
{
udp_sysctl_init(net);
udp_set_table(net);
return 0;
}
static void __net_exit udp_pernet_exit(struct net *net)
{
udp_pernet_table_free(net);
}
static struct pernet_operations __net_initdata udp_sysctl_ops = {
.init = udp_pernet_init,
.exit = udp_pernet_exit,
};
#if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS)
DEFINE_BPF_ITER_FUNC(udp, struct bpf_iter_meta *meta,
struct udp_sock *udp_sk, uid_t uid, int bucket)
static int bpf_iter_udp_realloc_batch(struct bpf_udp_iter_state *iter,
unsigned int new_batch_sz)
{
struct sock **new_batch;
new_batch = kvmalloc_array(new_batch_sz, sizeof(*new_batch),
GFP_USER | __GFP_NOWARN);
if (!new_batch)
return -ENOMEM;
bpf_iter_udp_put_batch(iter);
kvfree(iter->batch);
iter->batch = new_batch;
iter->max_sk = new_batch_sz;
return 0;
}
#define INIT_BATCH_SZ 16
static int bpf_iter_init_udp(void *priv_data, struct bpf_iter_aux_info *aux)
{
struct bpf_udp_iter_state *iter = priv_data;
int ret;
ret = bpf_iter_init_seq_net(priv_data, aux);
if (ret)
return ret;
ret = bpf_iter_udp_realloc_batch(iter, INIT_BATCH_SZ);
if (ret)
bpf_iter_fini_seq_net(priv_data);
return ret;
}
static void bpf_iter_fini_udp(void *priv_data)
{
struct bpf_udp_iter_state *iter = priv_data;
bpf_iter_fini_seq_net(priv_data);
kvfree(iter->batch);
}
static const struct bpf_iter_seq_info udp_seq_info = {
.seq_ops = &bpf_iter_udp_seq_ops,
.init_seq_private = bpf_iter_init_udp,
.fini_seq_private = bpf_iter_fini_udp,
.seq_priv_size = sizeof(struct bpf_udp_iter_state),
};
static struct bpf_iter_reg udp_reg_info = {
.target = "udp",
.ctx_arg_info_size = 1,
.ctx_arg_info = {
{ offsetof(struct bpf_iter__udp, udp_sk),
PTR_TO_BTF_ID_OR_NULL | PTR_TRUSTED },
},
.seq_info = &udp_seq_info,
};
static void __init bpf_iter_register(void)
{
udp_reg_info.ctx_arg_info[0].btf_id = btf_sock_ids[BTF_SOCK_TYPE_UDP];
if (bpf_iter_reg_target(&udp_reg_info))
pr_warn("Warning: could not register bpf iterator udp\n");
}
#endif
void __init udp_init(void)
{
unsigned long limit;
unsigned int i;
udp_table_init(&udp_table, "UDP");
limit = nr_free_buffer_pages() / 8;
limit = max(limit, 128UL);
sysctl_udp_mem[0] = limit / 4 * 3;
sysctl_udp_mem[1] = limit;
sysctl_udp_mem[2] = sysctl_udp_mem[0] * 2;
/* 16 spinlocks per cpu */
udp_busylocks_log = ilog2(nr_cpu_ids) + 4;
udp_busylocks = kmalloc(sizeof(spinlock_t) << udp_busylocks_log,
GFP_KERNEL);
if (!udp_busylocks)
panic("UDP: failed to alloc udp_busylocks\n");
for (i = 0; i < (1U << udp_busylocks_log); i++)
spin_lock_init(udp_busylocks + i);
if (register_pernet_subsys(&udp_sysctl_ops))
panic("UDP: failed to init sysctl parameters.\n");
#if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS)
bpf_iter_register();
#endif
}