Merge 6.1.113 into android14-6.1-lts

Changes in 6.1.113
	EDAC/synopsys: Fix ECC status and IRQ control race condition
	EDAC/synopsys: Fix error injection on Zynq UltraScale+
	wifi: rtw88: always wait for both firmware loading attempts
	crypto: xor - fix template benchmarking
	ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe()
	wifi: ath9k: fix parameter check in ath9k_init_debug()
	wifi: ath9k: Remove error checks when creating debugfs entries
	net: stmmac: dwmac-loongson: Init ref and PTP clocks rate
	wifi: rtw88: remove CPT execution branch never used
	RISC-V: KVM: Fix sbiret init before forwarding to userspace
	fs/namespace: fnic: Switch to use %ptTd
	mount: handle OOM on mnt_warn_timestamp_expiry
	kselftest/arm64: Don't pass headers to the compiler as source
	kselftest/arm64: Verify simultaneous SSVE and ZA context generation
	kselftest/arm64: Fix enumeration of systems without 128 bit SME for SSVE+ZA
	kselftest/arm64: signal: fix/refactor SVE vector length enumeration
	drivers/perf: Fix ali_drw_pmu driver interrupt status clearing
	wifi: mac80211: don't use rate mask for offchannel TX either
	wifi: iwlwifi: mvm: increase the time between ranging measurements
	ACPICA: Implement ACPI_WARNING_ONCE and ACPI_ERROR_ONCE
	ACPICA: executer/exsystem: Don't nag user about every Stall() violating the spec
	padata: Honor the caller's alignment in case of chunk_size 0
	drivers/perf: hisi_pcie: Record hardware counts correctly
	kselftest/arm64: Actually test SME vector length changes via sigreturn
	can: j1939: use correct function name in comment
	ACPI: CPPC: Fix MASK_VAL() usage
	netfilter: nf_tables: elements with timeout below CONFIG_HZ never expire
	netfilter: nf_tables: reject element expiration with no timeout
	netfilter: nf_tables: reject expiration higher than timeout
	netfilter: nf_tables: remove annotation to access set timeout while holding lock
	perf/arm-cmn: Rework DTC counters (again)
	perf/arm-cmn: Improve debugfs pretty-printing for large configs
	perf/arm-cmn: Refactor node ID handling. Again.
	perf/arm-cmn: Ensure dtm_idx is big enough
	cpufreq: ti-cpufreq: Introduce quirks to handle syscon fails appropriately
	x86/sgx: Fix deadlock in SGX NUMA node search
	crypto: hisilicon/hpre - enable sva error interrupt event
	crypto: hisilicon/hpre - mask cluster timeout error
	crypto: hisilicon/qm - fix coding style issues
	crypto: hisilicon/qm - reset device before enabling it
	crypto: hisilicon/qm - inject error before stopping queue
	wifi: cfg80211: fix UBSAN noise in cfg80211_wext_siwscan()
	wifi: mt76: mt7915: fix rx filter setting for bfee functionality
	wifi: cfg80211: fix two more possible UBSAN-detected off-by-one errors
	wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop()
	wifi: wilc1000: fix potential RCU dereference issue in wilc_parse_join_bss_param
	Bluetooth: hci_core: Fix sending MGMT_EV_CONNECT_FAILED
	Bluetooth: hci_sync: Ignore errors from HCI_OP_REMOTE_NAME_REQ_CANCEL
	sock_map: Add a cond_resched() in sock_hash_free()
	can: bcm: Clear bo->bcm_proc_read after remove_proc_entry().
	can: m_can: Remove repeated check for is_peripheral
	can: m_can: enable NAPI before enabling interrupts
	can: m_can: m_can_close(): stop clocks after device has been shut down
	Bluetooth: btusb: Fix not handling ZPL/short-transfer
	bareudp: Pull inner IP header in bareudp_udp_encap_recv().
	bareudp: Pull inner IP header on xmit.
	net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
	r8169: disable ALDPS per default for RTL8125
	net: ipv6: rpl_iptunnel: Fix memory leak in rpl_input
	net: tipc: avoid possible garbage value
	ipv6: avoid possible NULL deref in rt6_uncached_list_flush_dev()
	nbd: fix race between timeout and normal completion
	block, bfq: fix possible UAF for bfqq->bic with merge chain
	block, bfq: choose the last bfqq from merge chain in bfq_setup_cooperator()
	block, bfq: don't break merge chain in bfq_split_bfqq()
	block: print symbolic error name instead of error code
	block: fix potential invalid pointer dereference in blk_add_partition
	spi: ppc4xx: handle irq_of_parse_and_map() errors
	arm64: dts: exynos: exynos7885-jackpotlte: Correct RAM amount to 4GB
	firmware: arm_scmi: Fix double free in OPTEE transport
	spi: ppc4xx: Avoid returning 0 when failed to parse and map IRQ
	regulator: Return actual error in of_regulator_bulk_get_all()
	arm64: dts: renesas: r9a07g043u: Correct GICD and GICR sizes
	arm64: dts: renesas: r9a07g054: Correct GICD and GICR sizes
	arm64: dts: renesas: r9a07g044: Correct GICD and GICR sizes
	ARM: dts: microchip: sam9x60: Fix rtc/rtt clocks
	arm64: dts: ti: k3-j721e-sk: Fix reversed C6x carveout locations
	ARM: dts: microchip: sama7g5: Fix RTT clock
	ARM: dts: imx7d-zii-rmu2: fix Ethernet PHY pinctrl property
	ARM: versatile: fix OF node leak in CPUs prepare
	reset: berlin: fix OF node leak in probe() error path
	reset: k210: fix OF node leak in probe() error path
	clocksource/drivers/qcom: Add missing iounmap() on errors in msm_dt_timer_init()
	ASoC: rt5682s: Return devm_of_clk_add_hw_provider to transfer the error
	ALSA: hda: cs35l41: fix module autoloading
	m68k: Fix kernel_clone_args.flags in m68k_clone()
	hwmon: (max16065) Fix overflows seen when writing limits
	i2c: Add i2c_get_match_data()
	hwmon: (max16065) Remove use of i2c_match_id()
	hwmon: (max16065) Fix alarm attributes
	mtd: slram: insert break after errors in parsing the map
	hwmon: (ntc_thermistor) fix module autoloading
	power: supply: axp20x_battery: Remove design from min and max voltage
	power: supply: max17042_battery: Fix SOC threshold calc w/ no current sense
	fbdev: hpfb: Fix an error handling path in hpfb_dio_probe()
	iommu/amd: Do not set the D bit on AMD v2 table entries
	mtd: powernv: Add check devm_kasprintf() returned value
	rcu/nocb: Fix RT throttling hrtimer armed from offline CPU
	mtd: rawnand: mtk: Use for_each_child_of_node_scoped()
	mtd: rawnand: mtk: Factorize out the logic cleaning mtk chips
	mtd: rawnand: mtk: Fix init error path
	pmdomain: core: Harden inter-column space in debug summary
	drm/stm: Fix an error handling path in stm_drm_platform_probe()
	drm/stm: ltdc: check memory returned by devm_kzalloc()
	drm/amd/display: Add null check for set_output_gamma in dcn30_set_output_transfer_func
	drm/amdgpu: Replace one-element array with flexible-array member
	drm/amdgpu: properly handle vbios fake edid sizing
	drm/radeon: Replace one-element array with flexible-array member
	drm/radeon: properly handle vbios fake edid sizing
	scsi: smartpqi: revert propagate-the-multipath-failure-to-SML-quickly
	scsi: NCR5380: Check for phase match during PDMA fixup
	drm/amd/amdgpu: Properly tune the size of struct
	drm/rockchip: vop: Allow 4096px width scaling
	drm/rockchip: dw_hdmi: Fix reading EDID when using a forced mode
	drm/radeon/evergreen_cs: fix int overflow errors in cs track offsets
	drm/bridge: lontium-lt8912b: Validate mode in drm_bridge_funcs::mode_valid()
	drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get
	scsi: elx: libefc: Fix potential use after free in efc_nport_vport_del()
	jfs: fix out-of-bounds in dbNextAG() and diAlloc()
	drm/mediatek: Fix missing configuration flags in mtk_crtc_ddp_config()
	drm/mediatek: Use spin_lock_irqsave() for CRTC event lock
	powerpc/8xx: Fix initial memory mapping
	powerpc/8xx: Fix kernel vs user address comparison
	drm/msm: Fix incorrect file name output in adreno_request_fw()
	drm/msm/a5xx: disable preemption in submits by default
	drm/msm/a5xx: properly clear preemption records on resume
	drm/msm/a5xx: fix races in preemption evaluation stage
	drm/msm/a5xx: workaround early ring-buffer emptiness check
	ipmi: docs: don't advertise deprecated sysfs entries
	drm/msm: fix %s null argument error
	drivers:drm:exynos_drm_gsc:Fix wrong assignment in gsc_bind()
	xen: use correct end address of kernel for conflict checking
	HID: wacom: Support sequence numbers smaller than 16-bit
	HID: wacom: Do not warn about dropped packets for first packet
	xen/swiotlb: add alignment check for dma buffers
	xen/swiotlb: fix allocated size
	tpm: Clean up TPM space after command failure
	selftests/bpf: Add selftest deny_namespace to s390x deny list
	selftests/bpf: Add tests for _opts variants of bpf_*_get_fd_by_id()
	selftests/bpf: Workaround strict bpf_lsm return value check.
	selftests/bpf: Use pid_t consistently in test_progs.c
	selftests/bpf: Fix compile error from rlim_t in sk_storage_map.c
	selftests/bpf: Fix error compiling bpf_iter_setsockopt.c with musl libc
	selftests/bpf: Fix missing ARRAY_SIZE() definition in bench.c
	selftests/bpf: Fix missing UINT_MAX definitions in benchmarks
	selftests/bpf: Fix missing BUILD_BUG_ON() declaration
	selftests/bpf: Replace CHECK with ASSERT_* in ns_current_pid_tgid test
	selftests/bpf: Refactor out some functions in ns_current_pid_tgid test
	selftests/bpf: Add a cgroup prog bpf_get_ns_current_pid_tgid() test
	selftests/bpf: Fix include of <sys/fcntl.h>
	selftests/bpf: Fix compiling kfree_skb.c with musl-libc
	selftests/bpf: Fix compiling flow_dissector.c with musl-libc
	selftests/bpf: Fix compiling tcp_rtt.c with musl-libc
	selftests/bpf: Fix compiling core_reloc.c with musl-libc
	selftests/bpf: Fix errors compiling cg_storage_multi.h with musl libc
	selftests/bpf: Fix error compiling test_lru_map.c
	selftests/bpf: Fix C++ compile error from missing _Bool type
	selftests/bpf: Replace extract_build_id with read_build_id
	selftests/bpf: Move test_progs helpers to testing_helpers object
	selftests/bpf: Fix compile if backtrace support missing in libc
	bpf: correctly handle malformed BPF_CORE_TYPE_ID_LOCAL relos
	xz: cleanup CRC32 edits from 2018
	kthread: fix task state in kthread worker if being frozen
	ext4: clear EXT4_GROUP_INFO_WAS_TRIMMED_BIT even mount with discard
	smackfs: Use rcu_assign_pointer() to ensure safe assignment in smk_set_cipso
	ext4: avoid buffer_head leak in ext4_mark_inode_used()
	ext4: avoid potential buffer_head leak in __ext4_new_inode()
	ext4: avoid negative min_clusters in find_group_orlov()
	ext4: return error on ext4_find_inline_entry
	ext4: avoid OOB when system.data xattr changes underneath the filesystem
	nilfs2: fix potential null-ptr-deref in nilfs_btree_insert()
	nilfs2: determine empty node blocks as corrupted
	nilfs2: fix potential oob read in nilfs_btree_check_delete()
	bpf: Fix bpf_strtol and bpf_strtoul helpers for 32bit
	bpf: Improve check_raw_mode_ok test for MEM_UNINIT-tagged types
	bpf: Zero former ARG_PTR_TO_{LONG,INT} args in case of error
	perf mem: Free the allocated sort string, fixing a leak
	perf inject: Fix leader sampling inserting additional samples
	perf sched timehist: Fix missing free of session in perf_sched__timehist()
	perf stat: Display iostat headers correctly
	perf sched timehist: Fixed timestamp error when unable to confirm event sched_in time
	perf time-utils: Fix 32-bit nsec parsing
	clk: imx: composite-8m: Less function calls in __imx8m_clk_hw_composite() after error detection
	clk: imx: composite-8m: Enable gate clk with mcore_booted
	clk: imx: composite-7ulp: Check the PCC present bit
	clk: imx: fracn-gppll: support integer pll
	clk: imx: fracn-gppll: fix fractional part of PLL getting lost
	clk: imx: imx8mp: fix clock tree update of TF-A managed clocks
	clk: imx: imx8qxp: Register dc0_bypass0_clk before disp clk
	clk: imx: imx8qxp: Parent should be initialized earlier than the clock
	remoteproc: imx_rproc: Correct ddr alias for i.MX8M
	remoteproc: imx_rproc: Initialize workqueue earlier
	clk: rockchip: Set parent rate for DCLK_VOP clock on RK3228
	Input: ilitek_ts_i2c - avoid wrong input subsystem sync
	Input: ilitek_ts_i2c - add report id message validation
	drivers: media: dvb-frontends/rtl2832: fix an out-of-bounds write error
	drivers: media: dvb-frontends/rtl2830: fix an out-of-bounds write error
	PCI/PM: Increase wait time after resume
	PCI/PM: Drop pci_bridge_wait_for_secondary_bus() timeout parameter
	PCI: Wait for Link before restoring Downstream Buses
	PCI: keystone: Fix if-statement expression in ks_pcie_quirk()
	clk: qcom: dispcc-sm8250: use special function for Lucid 5LPE PLL
	nvdimm: Fix devs leaks in scan_labels()
	PCI: xilinx-nwl: Fix register misspelling
	PCI: xilinx-nwl: Clean up clock on probe failure/removal
	RDMA/iwcm: Fix WARNING:at_kernel/workqueue.c:#check_flush_dependency
	pinctrl: single: fix missing error code in pcs_probe()
	RDMA/rtrs: Reset hb_missed_cnt after receiving other traffic from peer
	RDMA/rtrs-clt: Reset cid to con_num - 1 to stay in bounds
	clk: ti: dra7-atl: Fix leak of of_nodes
	nfsd: remove unneeded EEXIST error check in nfsd_do_file_acquire
	nfsd: fix refcount leak when file is unhashed after being found
	pinctrl: mvebu: Use devm_platform_get_and_ioremap_resource()
	pinctrl: mvebu: Fix devinit_dove_pinctrl_probe function
	IB/core: Fix ib_cache_setup_one error flow cleanup
	PCI: kirin: Fix buffer overflow in kirin_pcie_parse_port()
	RDMA/erdma: Return QP state in erdma_query_qp
	watchdog: imx_sc_wdt: Don't disable WDT in suspend
	RDMA/hns: Don't modify rq next block addr in HIP09 QPC
	RDMA/hns: Fix Use-After-Free of rsv_qp on HIP08
	RDMA/hns: Fix the overflow risk of hem_list_calc_ba_range()
	RDMA/hns: Fix spin_unlock_irqrestore() called with IRQs enabled
	RDMA/hns: Fix VF triggering PF reset in abnormal interrupt handler
	RDMA/hns: Fix 1bit-ECC recovery address in non-4K OS
	RDMA/hns: Optimize hem allocation performance
	riscv: Fix fp alignment bug in perf_callchain_user()
	RDMA/cxgb4: Added NULL check for lookup_atid
	RDMA/irdma: fix error message in irdma_modify_qp_roce()
	ntb: intel: Fix the NULL vs IS_ERR() bug for debugfs_create_dir()
	ntb_perf: Fix printk format
	ntb: Force physically contiguous allocation of rx ring buffers
	nfsd: call cache_put if xdr_reserve_space returns NULL
	nfsd: return -EINVAL when namelen is 0
	f2fs: fix to update i_ctime in __f2fs_setxattr()
	f2fs: remove unneeded check condition in __f2fs_setxattr()
	f2fs: reduce expensive checkpoint trigger frequency
	f2fs: factor the read/write tracing logic into a helper
	f2fs: fix to avoid racing in between read and OPU dio write
	f2fs: fix to wait page writeback before setting gcing flag
	f2fs: atomic: fix to truncate pagecache before on-disk metadata truncation
	f2fs: clean up w/ dotdot_name
	f2fs: get rid of online repaire on corrupted directory
	spi: atmel-quadspi: Undo runtime PM changes at driver exit time
	spi: spi-fsl-lpspi: Undo runtime PM changes at driver exit time
	lib/sbitmap: define swap_lock as raw_spinlock_t
	nvme-multipath: system fails to create generic nvme device
	iio: adc: ad7606: fix oversampling gpio array
	iio: adc: ad7606: fix standby gpio state to match the documentation
	ABI: testing: fix admv8818 attr description
	iio: chemical: bme680: Fix read/write ops to device by adding mutexes
	iio: magnetometer: ak8975: Convert enum->pointer for data in the match tables
	iio: magnetometer: ak8975: drop incorrect AK09116 compatible
	dt-bindings: iio: asahi-kasei,ak8975: drop incorrect AK09116 compatible
	coresight: tmc: sg: Do not leak sg_table
	cxl/pci: Break out range register decoding from cxl_hdm_decode_init()
	cxl/pci: Fix to record only non-zero ranges
	vdpa: Add eventfd for the vdpa callback
	vhost_vdpa: assign irq bypass producer token correctly
	ep93xx: clock: Fix off by one in ep93xx_div_recalc_rate()
	Revert "dm: requeue IO if mapping table not yet available"
	net: xilinx: axienet: Schedule NAPI in two steps
	net: xilinx: axienet: Fix packet counting
	netfilter: nf_reject_ipv6: fix nf_reject_ip6_tcphdr_put()
	net: seeq: Fix use after free vulnerability in ether3 Driver Due to Race Condition
	net: ipv6: select DST_CACHE from IPV6_RPL_LWTUNNEL
	tcp: check skb is non-NULL in tcp_rto_delta_us()
	net: qrtr: Update packets cloning when broadcasting
	bonding: Fix unnecessary warnings and logs from bond_xdp_get_xmit_slave()
	net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled
	netfilter: nf_tables: Keep deleted flowtable hooks until after RCU
	netfilter: ctnetlink: compile ctnetlink_label_size with CONFIG_NF_CONNTRACK_EVENTS
	io_uring/sqpoll: do not allow pinning outside of cpuset
	drm/amd/display: Fix Synaptics Cascaded Panamera DSC Determination
	io_uring/io-wq: do not allow pinning outside of cpuset
	io_uring/io-wq: inherit cpuset of cgroup in io worker
	vfio/pci: fix potential memory leak in vfio_intx_enable()
	selinux,smack: don't bypass permissions check in inode_setsecctx hook
	drm/vmwgfx: Prevent unmapping active read buffers
	io_uring/sqpoll: retain test for whether the CPU is valid
	io_uring/sqpoll: do not put cpumask on stack
	Remove *.orig pattern from .gitignore
	PCI: imx6: Fix missing call to phy_power_off() in error handling
	PCI: xilinx-nwl: Fix off-by-one in INTx IRQ handler
	ASoC: rt5682: Return devm_of_clk_add_hw_provider to transfer the error
	soc: versatile: integrator: fix OF node leak in probe() error path
	Revert "media: tuners: fix error return code of hybrid_tuner_request_state()"
	Input: adp5588-keys - fix check on return code
	Input: i8042 - add TUXEDO Stellaris 16 Gen5 AMD to i8042 quirk table
	Input: i8042 - add TUXEDO Stellaris 15 Slim Gen6 AMD to i8042 quirk table
	Input: i8042 - add another board name for TUXEDO Stellaris Gen5 AMD line
	KVM: x86: Enforce x2APIC's must-be-zero reserved ICR bits
	KVM: x86: Move x2APIC ICR helper above kvm_apic_write_nodecode()
	drm/amd/display: Skip Recompute DSC Params if no Stream on Link
	drm/amd/display: Round calculated vtotal
	drm/amd/display: Validate backlight caps are sane
	KEYS: prevent NULL pointer dereference in find_asymmetric_key()
	fs: Create a generic is_dot_dotdot() utility
	ksmbd: make __dir_empty() compatible with POSIX
	ksmbd: allow write with FILE_APPEND_DATA
	ksmbd: handle caseless file creation
	scsi: sd: Fix off-by-one error in sd_read_block_characteristics()
	scsi: mac_scsi: Revise printk(KERN_DEBUG ...) messages
	scsi: mac_scsi: Refactor polling loop
	scsi: mac_scsi: Disallow bus errors during PDMA send
	usbnet: fix cyclical race on disconnect with work queue
	arm64: dts: mediatek: mt8195-cherry: Mark USB 3.0 on xhci1 as disabled
	USB: appledisplay: close race between probe and completion handler
	USB: misc: cypress_cy7c63: check for short transfer
	USB: class: CDC-ACM: fix race between get_serial and set_serial
	usb: cdnsp: Fix incorrect usb_request status
	usb: dwc2: drd: fix clock gating on USB role switch
	bus: integrator-lm: fix OF node leak in probe()
	bus: mhi: host: pci_generic: Fix the name for the Telit FE990A
	firmware_loader: Block path traversal
	tty: rp2: Fix reset with non forgiving PCIe host bridges
	xhci: Set quirky xHC PCI hosts to D3 _after_ stopping and freeing them.
	crypto: ccp - Properly unregister /dev/sev on sev PLATFORM_STATUS failure
	drbd: Fix atomicity violation in drbd_uuid_set_bm()
	drbd: Add NULL check for net_conf to prevent dereference in state validation
	ACPI: sysfs: validate return type of _STR method
	ACPI: resource: Add another DMI match for the TongFang GMxXGxx
	efistub/tpm: Use ACPI reclaim memory for event log to avoid corruption
	perf/x86/intel/pt: Fix sampling synchronization
	wifi: rtw88: 8822c: Fix reported RX band width
	wifi: mt76: mt7615: check devm_kasprintf() returned value
	debugobjects: Fix conditions in fill_pool()
	f2fs: fix several potential integer overflows in file offsets
	f2fs: prevent possible int overflow in dir_block_index()
	f2fs: avoid potential int overflow in sanity_check_area_boundary()
	f2fs: fix to check atomic_file in f2fs ioctl interfaces
	hwrng: mtk - Use devm_pm_runtime_enable
	hwrng: bcm2835 - Add missing clk_disable_unprepare in bcm2835_rng_init
	hwrng: cctrng - Add missing clk_disable_unprepare in cctrng_resume
	arm64: dts: rockchip: Raise Pinebook Pro's panel backlight PWM frequency
	arm64: dts: rockchip: Correct the Pinebook Pro battery design capacity
	vfs: fix race between evice_inodes() and find_inode()&iput()
	fs: Fix file_set_fowner LSM hook inconsistencies
	nfs: fix memory leak in error path of nfs4_do_reclaim
	EDAC/igen6: Fix conversion of system address to physical memory address
	padata: use integer wrap around to prevent deadlock on seq_nr overflow
	soc: versatile: realview: fix memory leak during device remove
	soc: versatile: realview: fix soc_dev leak during device remove
	powerpc/64: Option to build big-endian with ELFv2 ABI
	powerpc/64: Add support to build with prefixed instructions
	powerpc/atomic: Use YZ constraints for DS-form instructions
	usb: yurex: Replace snprintf() with the safer scnprintf() variant
	USB: misc: yurex: fix race between read and write
	xhci: fix event ring segment table related masks and variables in header
	xhci: remove xhci_test_trb_in_td_math early development check
	xhci: Refactor interrupter code for initial multi interrupter support.
	xhci: Preserve RsvdP bits in ERSTBA register correctly
	xhci: Add a quirk for writing ERST in high-low order
	usb: xhci: fix loss of data on Cadence xHC
	pps: remove usage of the deprecated ida_simple_xx() API
	pps: add an error check in parport_attach
	x86/idtentry: Incorporate definitions/declarations of the FRED entries
	x86/entry: Remove unwanted instrumentation in common_interrupt()
	mm/filemap: return early if failed to allocate memory for split
	lib/xarray: introduce a new helper xas_get_order
	mm/filemap: optimize filemap folio adding
	icmp: Add counters for rate limits
	icmp: change the order of rate limits
	bpf: lsm: Set bpf_lsm_blob_sizes.lbs_task to 0
	lockdep: fix deadlock issue between lockdep and rcu
	mm: only enforce minimum stack gap size if it's sensible
	module: Fix KCOV-ignored file name
	mm/damon/vaddr: protect vma traversal in __damon_va_thre_regions() with rcu read lock
	i2c: aspeed: Update the stop sw state when the bus recovery occurs
	i2c: isch: Add missed 'else'
	usb: yurex: Fix inconsistent locking bug in yurex_read()
	perf/arm-cmn: Fail DTC counter allocation correctly
	iio: magnetometer: ak8975: Fix 'Unexpected device' error
	powerpc: Allow CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2 with ld.lld 15+
	PCI/PM: Mark devices disconnected if upstream PCIe link is down on resume
	x86/tdx: Fix "in-kernel MMIO" check
	wifi: mt76: do not run mt76_unregister_device() on unregistered hw
	static_call: Handle module init failure correctly in static_call_del_module()
	static_call: Replace pointless WARN_ON() in static_call_module_notify()
	jump_label: Simplify and clarify static_key_fast_inc_cpus_locked()
	jump_label: Fix static_key_slow_dec() yet again
	scsi: pm8001: Do not overwrite PCI queue mapping
	mailbox: rockchip: fix a typo in module autoloading
	mailbox: bcm2835: Fix timeout during suspend mode
	ceph: remove the incorrect Fw reference check when dirtying pages
	ieee802154: Fix build error
	net: sparx5: Fix invalid timestamps
	net/mlx5: Fix error path in multi-packet WQE transmit
	net/mlx5: Added cond_resched() to crdump collection
	net/mlx5e: Fix NULL deref in mlx5e_tir_builder_alloc()
	netfilter: uapi: NFTA_FLOWTABLE_HOOK is NLA_NESTED
	net: ieee802154: mcr20a: Use IRQF_NO_AUTOEN flag in request_irq()
	net: wwan: qcom_bam_dmux: Fix missing pm_runtime_disable()
	selftests: netfilter: Fix nft_audit.sh for newer nft binaries
	netfilter: nf_tables: prevent nf_skb_duplicated corruption
	Bluetooth: btmrvl: Use IRQF_NO_AUTOEN flag in request_irq()
	net: ethernet: lantiq_etop: fix memory disclosure
	net: avoid potential underflow in qdisc_pkt_len_init() with UFO
	net: add more sanity checks to qdisc_pkt_len_init()
	net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check
	ipv4: ip_gre: Fix drops of small packets in ipgre_xmit
	ppp: do not assume bh is held in ppp_channel_bridge_input()
	fsdax,xfs: port unshare to fsdax
	iomap: constrain the file range passed to iomap_file_unshare
	sctp: set sk_state back to CLOSED if autobind fails in sctp_listen_start
	i2c: xiic: improve error message when transfer fails to start
	i2c: xiic: Try re-initialization on bus busy timeout
	loop: don't set QUEUE_FLAG_NOMERGES
	Bluetooth: hci_sock: Fix not validating setsockopt user input
	media: usbtv: Remove useless locks in usbtv_video_free()
	ASoC: atmel: mchp-pdmc: Skip ALSA restoration if substream runtime is uninitialized
	ALSA: mixer_oss: Remove some incorrect kfree_const() usages
	ALSA: hda/realtek: Fix the push button function for the ALC257
	ALSA: hda/generic: Unconditionally prefer preferred_dacs pairs
	ASoC: imx-card: Set card.owner to avoid a warning calltrace if SND=m
	ALSA: hda/conexant: Fix conflicting quirk for System76 Pangolin
	f2fs: Require FMODE_WRITE for atomic write ioctls
	wifi: ath9k: fix possible integer overflow in ath9k_get_et_stats()
	wifi: ath9k_htc: Use __skb_set_length() for resetting urb before resubmit
	ice: Adjust over allocation of memory in ice_sched_add_root_node() and ice_sched_add_node()
	wifi: iwlwifi: mvm: Fix a race in scan abort flow
	wifi: cfg80211: Set correct chandef when starting CAC
	net/xen-netback: prevent UAF in xenvif_flush_hash()
	net: hisilicon: hip04: fix OF node leak in probe()
	net: hisilicon: hns_dsaf_mac: fix OF node leak in hns_mac_get_info()
	net: hisilicon: hns_mdio: fix OF node leak in probe()
	ACPI: PAD: fix crash in exit_round_robin()
	ACPICA: Fix memory leak if acpi_ps_get_next_namepath() fails
	ACPICA: Fix memory leak if acpi_ps_get_next_field() fails
	wifi: mt76: mt7915: disable tx worker during tx BA session enable/disable
	net: sched: consistently use rcu_replace_pointer() in taprio_change()
	Bluetooth: btusb: Add Realtek RTL8852C support ID 0x0489:0xe122
	ACPI: video: Add force_vendor quirk for Panasonic Toughbook CF-18
	blk_iocost: fix more out of bound shifts
	nvme-pci: qdepth 1 quirk
	wifi: ath11k: fix array out-of-bound access in SoC stats
	wifi: rtw88: select WANT_DEV_COREDUMP
	ACPI: EC: Do not release locks during operation region accesses
	ACPICA: check null return of ACPI_ALLOCATE_ZEROED() in acpi_db_convert_to_package()
	tipc: guard against string buffer overrun
	net: mvpp2: Increase size of queue_name buffer
	bnxt_en: Extend maximum length of version string by 1 byte
	ipv4: Check !in_dev earlier for ioctl(SIOCSIFADDR).
	wifi: rtw89: correct base HT rate mask for firmware
	ipv4: Mask upper DSCP bits and ECN bits in NETLINK_FIB_LOOKUP family
	net: atlantic: Avoid warning about potential string truncation
	crypto: simd - Do not call crypto_alloc_tfm during registration
	tcp: avoid reusing FIN_WAIT2 when trying to find port in connect() process
	wifi: mac80211: fix RCU list iterations
	ACPICA: iasl: handle empty connection_node
	proc: add config & param to block forcing mem writes
	wifi: mt76: mt7915: hold dev->mt76.mutex while disabling tx worker
	wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_cmd_802_11_scan_ext()
	nfp: Use IRQF_NO_AUTOEN flag in request_irq()
	ALSA: usb-audio: Add input value sanity checks for standard types
	x86/ioapic: Handle allocation failures gracefully
	ALSA: usb-audio: Define macros for quirk table entries
	ALSA: usb-audio: Replace complex quirk lines with macros
	ALSA: usb-audio: Add logitech Audio profile quirk
	ASoC: codecs: wsa883x: Handle reading version failure
	tools/x86/kcpuid: Protect against faulty "max subleaf" values
	x86/kexec: Add EFI config table identity mapping for kexec kernel
	ALSA: asihpi: Fix potential OOB array access
	ALSA: hdsp: Break infinite MIDI input flush loop
	selftests/nolibc: avoid passing NULL to printf("%s")
	x86/syscall: Avoid memcpy() for ia32 syscall_get_arguments()
	fbdev: pxafb: Fix possible use after free in pxafb_task()
	rcuscale: Provide clear error when async specified without primitives
	iommu/arm-smmu-qcom: hide last LPASS SMMU context bank from linux
	power: reset: brcmstb: Do not go into infinite loop if reset fails
	iommu/vt-d: Always reserve a domain ID for identity setup
	iommu/vt-d: Fix potential lockup if qi_submit_sync called with 0 count
	drm/stm: Avoid use-after-free issues with crtc and plane
	drm/amdgpu: disallow multiple BO_HANDLES chunks in one submit
	drm/amd/display: Add null check for top_pipe_to_program in commit_planes_for_stream
	ata: pata_serverworks: Do not use the term blacklist
	ata: sata_sil: Rename sil_blacklist to sil_quirks
	drm/amd/display: Handle null 'stream_status' in 'planes_changed_for_existing_stream'
	drm/amd/display: Check null pointers before using dc->clk_mgr
	drm/amd/display: Add null check for 'afb' in amdgpu_dm_plane_handle_cursor_update (v2)
	jfs: UBSAN: shift-out-of-bounds in dbFindBits
	jfs: Fix uaf in dbFreeBits
	jfs: check if leafidx greater than num leaves per dmap tree
	scsi: smartpqi: correct stream detection
	jfs: Fix uninit-value access of new_ea in ea_buffer
	drm/amdgpu: add raven1 gfxoff quirk
	drm/amdgpu: enable gfxoff quirk on HP 705G4
	drm/amdkfd: Fix resource leak in criu restore queue
	HID: multitouch: Add support for Thinkpad X12 Gen 2 Kbd Portfolio
	platform/x86: touchscreen_dmi: add nanote-next quirk
	drm/stm: ltdc: reset plane transparency after plane disable
	drm/amd/display: Check stream before comparing them
	drm/amd/display: Fix index out of bounds in DCN30 degamma hardware format translation
	drm/amd/display: Fix index out of bounds in degamma hardware format translation
	drm/amd/display: Fix index out of bounds in DCN30 color transformation
	drm/amd/display: Initialize get_bytes_per_element's default to 1
	drm/printer: Allow NULL data in devcoredump printer
	perf,x86: avoid missing caller address in stack traces captured in uprobe
	scsi: aacraid: Rearrange order of struct aac_srb_unit
	scsi: lpfc: Update PRLO handling in direct attached topology
	drm/amdgpu: fix unchecked return value warning for amdgpu_gfx
	scsi: NCR5380: Initialize buffer for MSG IN and STATUS transfers
	drm/radeon/r100: Handle unknown family in r100_cp_init_microcode()
	drm/amd/pm: ensure the fw_info is not null before using it
	of/irq: Refer to actual buffer size in of_irq_parse_one()
	powerpc/pseries: Use correct data types from pseries_hp_errorlog struct
	ext4: ext4_search_dir should return a proper error
	ext4: avoid use-after-free in ext4_ext_show_leaf()
	ext4: fix i_data_sem unlock order in ext4_ind_migrate()
	iomap: handle a post-direct I/O invalidate race in iomap_write_delalloc_release
	blk-integrity: use sysfs_emit
	blk-integrity: convert to struct device_attribute
	blk-integrity: register sysfs attributes on struct device
	spi: spi-imx: Fix pm_runtime_set_suspended() with runtime pm enabled
	spi: s3c64xx: fix timeout counters in flush_fifo
	selftests: breakpoints: use remaining time to check if suspend succeed
	selftests: vDSO: fix vDSO name for powerpc
	selftests: vDSO: fix vdso_config for powerpc
	selftests: vDSO: fix vDSO symbols lookup for powerpc64
	selftests/mm: fix charge_reserved_hugetlb.sh test
	powerpc/vdso: Fix VDSO data access when running in a non-root time namespace
	selftests: vDSO: fix ELF hash table entry size for s390x
	selftests: vDSO: fix vdso_config for s390
	Revert "ALSA: hda: Conditionally use snooping for AMD HDMI"
	platform/x86: ISST: Fix the KASAN report slab-out-of-bounds bug
	i2c: stm32f7: Do not prepare/unprepare clock during runtime suspend/resume
	i2c: qcom-geni: Use IRQF_NO_AUTOEN flag in request_irq()
	i2c: xiic: Wait for TX empty to avoid missed TX NAKs
	media: i2c: ar0521: Use cansleep version of gpiod_set_value()
	firmware: tegra: bpmp: Drop unused mbox_client_to_bpmp()
	spi: bcm63xx: Fix module autoloading
	power: supply: hwmon: Fix missing temp1_max_alarm attribute
	perf/core: Fix small negative period being ignored
	parisc: Fix itlb miss handler for 64-bit programs
	drm: Consistently use struct drm_mode_rect for FB_DAMAGE_CLIPS
	ALSA: core: add isascii() check to card ID generator
	ALSA: usb-audio: Add delay quirk for VIVO USB-C HEADSET
	ALSA: usb-audio: Add native DSD support for Luxman D-08u
	ALSA: line6: add hw monitor volume control to POD HD500X
	ALSA: hda/realtek: Add quirk for Huawei MateBook 13 KLV-WX9
	ALSA: hda/realtek: Add a quirk for HP Pavilion 15z-ec200
	ext4: no need to continue when the number of entries is 1
	ext4: correct encrypted dentry name hash when not casefolded
	ext4: fix slab-use-after-free in ext4_split_extent_at()
	ext4: propagate errors from ext4_find_extent() in ext4_insert_range()
	ext4: fix incorrect tid assumption in ext4_fc_mark_ineligible()
	ext4: dax: fix overflowing extents beyond inode size when partially writing
	ext4: fix incorrect tid assumption in __jbd2_log_wait_for_space()
	ext4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free
	ext4: aovid use-after-free in ext4_ext_insert_extent()
	ext4: fix double brelse() the buffer of the extents path
	ext4: update orig_path in ext4_find_extent()
	ext4: fix incorrect tid assumption in ext4_wait_for_tail_page_commit()
	ext4: fix incorrect tid assumption in jbd2_journal_shrink_checkpoint_list()
	ext4: fix fast commit inode enqueueing during a full journal commit
	ext4: use handle to mark fc as ineligible in __track_dentry_update()
	ext4: mark fc as ineligible using an handle in ext4_xattr_set()
	parisc: Fix 64-bit userspace syscall path
	parisc: Fix stack start for ADDR_NO_RANDOMIZE personality
	drm/rockchip: vop: clear DMA stop bit on RK3066
	of/irq: Support #msi-cells=<0> in of_msi_get_domain
	drm: omapdrm: Add missing check for alloc_ordered_workqueue
	resource: fix region_intersects() vs add_memory_driver_managed()
	jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns error
	jbd2: correctly compare tids with tid_geq function in jbd2_fc_begin_commit
	mm: krealloc: consider spare memory for __GFP_ZERO
	ocfs2: fix the la space leak when unmounting an ocfs2 volume
	ocfs2: fix uninit-value in ocfs2_get_block()
	ocfs2: reserve space for inline xattr before attaching reflink tree
	ocfs2: cancel dqi_sync_work before freeing oinfo
	ocfs2: remove unreasonable unlock in ocfs2_read_blocks
	ocfs2: fix null-ptr-deref when journal load failed.
	ocfs2: fix possible null-ptr-deref in ocfs2_set_buffer_uptodate
	riscv: define ILLEGAL_POINTER_VALUE for 64bit
	exfat: fix memory leak in exfat_load_bitmap()
	perf hist: Update hist symbol when updating maps
	nfsd: fix delegation_blocked() to block correctly for at least 30 seconds
	nfsd: map the EBADMSG to nfserr_io to avoid warning
	NFSD: Fix NFSv4's PUTPUBFH operation
	aoe: fix the potential use-after-free problem in more places
	clk: rockchip: fix error for unknown clocks
	remoteproc: k3-r5: Fix error handling when power-up failed
	clk: qcom: dispcc-sm8250: use CLK_SET_RATE_PARENT for branch clocks
	media: sun4i_csi: Implement link validate for sun4i_csi subdev
	clk: qcom: gcc-sm8450: Do not turn off PCIe GDSCs during gdsc_disable()
	media: uapi/linux/cec.h: cec_msg_set_reply_to: zero flags
	clk: qcom: clk-rpmh: Fix overflow in BCM vote
	clk: qcom: gcc-sm8150: De-register gcc_cpuss_ahb_clk_src
	media: venus: fix use after free bug in venus_remove due to race condition
	clk: qcom: gcc-sm8250: Do not turn off PCIe GDSCs during gdsc_disable()
	media: qcom: camss: Fix ordering of pm_runtime_enable
	clk: qcom: gcc-sc8180x: Fix the sdcc2 and sdcc4 clocks freq table
	clk: qcom: clk-alpha-pll: Fix CAL_L_VAL override for LUCID EVO PLL
	smb: client: use actual path when queryfs
	iio: magnetometer: ak8975: Fix reading for ak099xx sensors
	gso: fix udp gso fraglist segmentation after pull from frag_list
	tomoyo: fallback to realpath if symlink's pathname does not exist
	net: stmmac: Fix zero-division error when disabling tc cbs
	rtc: at91sam9: fix OF node leak in probe() error path
	Input: adp5589-keys - fix NULL pointer dereference
	Input: adp5589-keys - fix adp5589_gpio_get_value()
	cachefiles: fix dentry leak in cachefiles_open_file()
	ACPI: resource: Add Asus Vivobook X1704VAP to irq1_level_low_skip_override[]
	ACPI: resource: Add Asus ExpertBook B2502CVA to irq1_level_low_skip_override[]
	btrfs: fix a NULL pointer dereference when failed to start a new trasacntion
	btrfs: send: fix invalid clone operation for file that got its size decreased
	btrfs: wait for fixup workers before stopping cleaner kthread during umount
	gpio: davinci: fix lazy disable
	Bluetooth: hci_event: Align BR/EDR JUST_WORKS paring with LE
	ceph: fix cap ref leak via netfs init_request
	tracing/hwlat: Fix a race during cpuhp processing
	tracing/timerlat: Fix a race during cpuhp processing
	close_range(): fix the logics in descriptor table trimming
	drm/i915/gem: fix bitwise and logical AND mixup
	drm/sched: Add locking to drm_sched_entity_modify_sched
	drm/amd/display: Fix system hang while resume with TBT monitor
	cpufreq: intel_pstate: Make hwp_notify_lock a raw spinlock
	kconfig: qconf: fix buffer overflow in debug links
	i2c: create debugfs entry per adapter
	i2c: core: Lock address during client device instantiation
	i2c: xiic: Use devm_clk_get_enabled()
	i2c: xiic: Fix pm_runtime_set_suspended() with runtime pm enabled
	dt-bindings: clock: exynos7885: Fix duplicated binding
	spi: bcm63xx: Fix missing pm_runtime_disable()
	arm64: Add Cortex-715 CPU part definition
	arm64: cputype: Add Neoverse-N3 definitions
	arm64: errata: Expand speculative SSBS workaround once more
	io_uring/net: harden multishot termination case for recv
	uprobes: fix kernel info leak via "[uprobes]" vma
	mm: z3fold: deprecate CONFIG_Z3FOLD
	drm/amd/display: Allow backlight to go below `AMDGPU_DM_DEFAULT_MIN_BACKLIGHT`
	build-id: require program headers to be right after ELF header
	lib/buildid: harden build ID parsing logic
	docs/zh_CN: Update the translation of delay-accounting to 6.1-rc8
	delayacct: improve the average delay precision of getdelay tool to microsecond
	sched: psi: fix bogus pressure spikes from aggregation race
	media: i2c: imx335: Enable regulator supplies
	media: imx335: Fix reset-gpio handling
	remoteproc: k3-r5: Acquire mailbox handle during probe routine
	remoteproc: k3-r5: Delay notification of wakeup event
	dt-bindings: clock: qcom: Add missing UFS QREF clocks
	dt-bindings: clock: qcom: Add GPLL9 support on gcc-sc8180x
	clk: samsung: exynos7885: do not define number of clocks in bindings
	clk: samsung: exynos7885: Update CLKS_NR_FSYS after bindings fix
	r8169: Fix spelling mistake: "tx_underun" -> "tx_underrun"
	r8169: add tally counter fields added with RTL8125
	clk: qcom: gcc-sc8180x: Add GPLL9 support
	ACPI: battery: Simplify battery hook locking
	ACPI: battery: Fix possible crash when unregistering a battery hook
	Revert "arm64: dts: qcom: sm8250: switch UFS QMP PHY to new style of bindings"
	erofs: get rid of erofs_inode_datablocks()
	erofs: get rid of z_erofs_do_map_blocks() forward declaration
	erofs: avoid hardcoded blocksize for subpage block support
	erofs: set block size to the on-disk block size
	erofs: fix incorrect symlink detection in fast symlink
	vhost/scsi: null-ptr-dereference in vhost_scsi_get_req()
	perf report: Fix segfault when 'sym' sort key is not used
	fsdax: dax_unshare_iter() should return a valid length
	fsdax: unshare: zero destination if srcmap is HOLE or UNWRITTEN
	unicode: Don't special case ignorable code points
	net: ethernet: cortina: Drop TSO support
	tracing: Remove precision vsnprintf() check from print event
	ALSA: hda/realtek: cs35l41: Fix order and duplicates in quirks table
	ALSA: hda/realtek: cs35l41: Fix device ID / model name
	drm/crtc: fix uninitialized variable use even harder
	tracing: Have saved_cmdlines arrays all in one allocation
	bootconfig: Fix the kerneldoc of _xbc_exit()
	perf lock: Dynamically allocate lockhash_table
	perf sched: Avoid large stack allocations
	perf sched: Move start_work_mutex and work_done_wait_mutex initialization to perf_sched__replay()
	perf sched: Fix memory leak in perf_sched__map()
	perf sched: Move curr_thread initialization to perf_sched__map()
	perf sched: Move curr_pid and cpu_last_switched initialization to perf_sched__{lat|map|replay}()
	libsubcmd: Don't free the usage string
	selftests: net: Remove executable bits from library scripts
	Bluetooth: Fix usage of __hci_cmd_sync_status
	fs/ntfs3: Do not call file_modified if collapse range failed
	fs/ntfs3: Fix sparse warning in ni_fiemap
	fs/ntfs3: Refactor enum_rstbl to suppress static checker
	virtio_console: fix misc probe bugs
	Input: synaptics-rmi4 - fix UAF of IRQ domain on driver removal
	bpf: Check percpu map value size first
	s390/facility: Disable compile time optimization for decompressor code
	s390/mm: Add cond_resched() to cmm_alloc/free_pages()
	bpf, x64: Fix a jit convergence issue
	ext4: don't set SB_RDONLY after filesystem errors
	ext4: nested locking for xattr inode
	s390/cpum_sf: Remove WARN_ON_ONCE statements
	ktest.pl: Avoid false positives with grub2 skip regex
	RDMA/mad: Improve handling of timed out WRs of mad agent
	PCI: Add function 0 DMA alias quirk for Glenfly Arise chip
	RDMA/rtrs-srv: Avoid null pointer deref during path establishment
	clk: bcm: bcm53573: fix OF node leak in init
	PCI: Add ACS quirk for Qualcomm SA8775P
	i2c: i801: Use a different adapter-name for IDF adapters
	PCI: Mark Creative Labs EMU20k2 INTx masking as broken
	RISC-V: Don't have MAX_PHYSMEM_BITS exceed phys_addr_t
	io_uring: check if we need to reschedule during overflow flush
	ntb: ntb_hw_switchtec: Fix use after free vulnerability in switchtec_ntb_remove due to race condition
	RDMA/mlx5: Enforce umem boundaries for explicit ODP page faults
	riscv/kexec_file: Fix relocation type R_RISCV_ADD16 and R_RISCV_SUB16 unknown
	media: videobuf2-core: clear memory related fields in __vb2_plane_dmabuf_put()
	remoteproc: imx_rproc: Use imx specific hook for find_loaded_rsc_table
	clk: imx: Remove CLK_SET_PARENT_GATE for DRAM mux for i.MX7D
	usb: chipidea: udc: enable suspend interrupt after usb reset
	usb: dwc2: Adjust the timing of USB Driver Interrupt Registration in the Crashkernel Scenario
	comedi: ni_routing: tools: Check when the file could not be opened
	LoongArch: Fix memleak in pci_acpi_scan_root()
	netfilter: nf_reject: Fix build warning when CONFIG_BRIDGE_NETFILTER=n
	virtio_pmem: Check device status before requesting flush
	tools/iio: Add memory allocation failure check for trigger_name
	staging: vme_user: added bound check to geoid
	driver core: bus: Return -EIO instead of 0 when show/store invalid bus attribute
	scsi: lpfc: Add ELS_RSP cmd to the list of WQEs to flush in lpfc_els_flush_cmd()
	scsi: lpfc: Ensure DA_ID handling completion before deleting an NPIV instance
	drm/amd/display: Check null pointer before dereferencing se
	fbcon: Fix a NULL pointer dereference issue in fbcon_putcs
	fbdev: sisfb: Fix strbuf array overflow
	drm/rockchip: vop: limit maximum resolution to hardware capabilities
	drm/rockchip: vop: enable VOP_FEATURE_INTERNAL_RGB on RK3066
	NFSD: Mark filecache "down" if init fails
	ice: fix VLAN replay after reset
	SUNRPC: Fix integer overflow in decode_rc_list()
	NFSv4: Prevent NULL-pointer dereference in nfs42_complete_copies()
	net: phy: dp83869: fix memory corruption when enabling fiber
	tcp: fix to allow timestamp undo if no retransmits were sent
	tcp: fix tcp_enter_recovery() to zero retrans_stamp when it's safe
	netfilter: br_netfilter: fix panic with metadata_dst skb
	selftests: net: no_forwarding: fix VID for $swp2 in one_bridge_two_pvids() test
	Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change
	net: phy: bcm84881: Fix some error handling paths
	thermal: int340x: processor_thermal: Set feature mask before proc_thermal_add
	thermal: intel: int340x: processor: Fix warning during module unload
	Revert "net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled"
	net: ethernet: adi: adin1110: Fix some error handling path in adin1110_read_fifo()
	net: dsa: b53: fix jumbo frame mtu check
	net: dsa: b53: fix max MTU for 1g switches
	net: dsa: b53: fix max MTU for BCM5325/BCM5365
	net: dsa: b53: allow lower MTUs on BCM5325/5365
	net: dsa: b53: fix jumbo frames on 10/100 ports
	gpio: aspeed: Add the flush write to ensure the write complete.
	gpio: aspeed: Use devm_clk api to manage clock source
	ice: Fix netif_is_ice() in Safe Mode
	i40e: Fix macvlan leak by synchronizing access to mac_filter_hash
	igb: Do not bring the device up after non-fatal error
	net/sched: accept TCA_STAB only for root qdisc
	net: ibm: emac: mal: fix wrong goto
	btrfs: zoned: fix missing RCU locking in error message when loading zone info
	sctp: ensure sk_state is set to CLOSED if hashing fails in sctp_listen_start
	netfilter: xtables: avoid NFPROTO_UNSPEC where needed
	netfilter: fib: check correct rtable in vrf setups
	net: ibm/emac: allocate dummy net_device dynamically
	net: ibm: emac: mal: add dcr_unmap to _remove
	rtnetlink: Add bulk registration helpers for rtnetlink message handlers.
	vxlan: Handle error of rtnl_register_module().
	mctp: Handle error of rtnl_register_module().
	ppp: fix ppp_async_encode() illegal access
	slip: make slhc_remember() more robust against malicious packets
	rust: macros: provide correct provenance when constructing THIS_MODULE
	HID: multitouch: Add support for lenovo Y9000P Touchpad
	net/mlx5: Always drain health in shutdown callback
	wifi: mac80211: Avoid address calculations via out of bounds array indexing
	hwmon: (tmp513) Add missing dependency on REGMAP_I2C
	hwmon: (adm9240) Add missing dependency on REGMAP_I2C
	hwmon: (adt7470) Add missing dependency on REGMAP_I2C
	Revert "net: ibm/emac: allocate dummy net_device dynamically"
	HID: amd_sfh: Switch to device-managed dmam_alloc_coherent()
	HID: plantronics: Workaround for an unexcepted opposite volume key
	Revert "usb: yurex: Replace snprintf() with the safer scnprintf() variant"
	usb: dwc3: core: Stop processing of pending events if controller is halted
	usb: xhci: Fix problem with xhci resume from suspend
	usb: storage: ignore bogus device raised by JieLi BR21 USB sound chip
	usb: gadget: core: force synchronous registration
	hid: intel-ish-hid: Fix uninitialized variable 'rv' in ish_fw_xfer_direct_dma
	drm/v3d: Stop the active perfmon before being destroyed
	drm/vc4: Stop the active perfmon before being destroyed
	scsi: wd33c93: Don't use stale scsi_pointer value
	mptcp: fallback when MPTCP opts are dropped after 1st data
	ata: libata: avoid superfluous disk spin down + spin up during hibernation
	net: explicitly clear the sk pointer, when pf->create fails
	net: Fix an unsafe loop on the list
	net: dsa: lan9303: ensure chip reset and wait for READY status
	mptcp: handle consistently DSS corruption
	mptcp: pm: do not remove closing subflows
	device-dax: correct pgoff align in dax_set_mapping()
	nouveau/dmem: Fix vulnerability in migrate_to_ram upon copy error
	kthread: unpark only parked kthread
	secretmem: disable memfd_secret() if arch cannot set direct map
	net: ethernet: cortina: Restore TSO support
	perf lock: Don't pass an ERR_PTR() directly to perf_session__delete()
	block, bfq: fix uaf for accessing waker_bfqq after splitting
	Revert "iommu/vt-d: Retrieve IOMMU perfmon capability information"
	Linux 6.1.113

Change-Id: Ibad3f07882dd1e60de8b7af941df9e1d887f588f
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2024-11-09 13:53:25 +00:00
58 changed files with 420 additions and 437 deletions

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 6
PATCHLEVEL = 1
SUBLEVEL = 112
SUBLEVEL = 113
EXTRAVERSION =
NAME = Curry Ramen

View File

@@ -6724,6 +6724,31 @@ static void bfq_prepare_request(struct request *rq)
rq->elv.priv[0] = rq->elv.priv[1] = NULL;
}
static struct bfq_queue *bfq_waker_bfqq(struct bfq_queue *bfqq)
{
struct bfq_queue *new_bfqq = bfqq->new_bfqq;
struct bfq_queue *waker_bfqq = bfqq->waker_bfqq;
if (!waker_bfqq)
return NULL;
while (new_bfqq) {
if (new_bfqq == waker_bfqq) {
/*
* If waker_bfqq is in the merge chain, and current
* is the only procress.
*/
if (bfqq_process_refs(waker_bfqq) == 1)
return NULL;
break;
}
new_bfqq = new_bfqq->new_bfqq;
}
return waker_bfqq;
}
/*
* If needed, init rq, allocate bfq data structures associated with
* rq, and increment reference counters in the destination bfq_queue
@@ -6784,7 +6809,7 @@ static struct bfq_queue *bfq_init_rq(struct request *rq)
/* If the queue was seeky for too long, break it apart. */
if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq) &&
!bic->stably_merged) {
struct bfq_queue *old_bfqq = bfqq;
struct bfq_queue *waker_bfqq = bfq_waker_bfqq(bfqq);
/* Update bic before losing reference to bfqq */
if (bfq_bfqq_in_large_burst(bfqq))
@@ -6803,7 +6828,7 @@ static struct bfq_queue *bfq_init_rq(struct request *rq)
bfqq_already_existing = true;
if (!bfqq_already_existing) {
bfqq->waker_bfqq = old_bfqq->waker_bfqq;
bfqq->waker_bfqq = waker_bfqq;
bfqq->tentative_waker_bfqq = NULL;
/*
@@ -6813,7 +6838,7 @@ static struct bfq_queue *bfq_init_rq(struct request *rq)
* woken_list of the waker. See
* bfq_check_waker for details.
*/
if (bfqq->waker_bfqq)
if (waker_bfqq)
hlist_add_head(&bfqq->woken_list_node,
&bfqq->waker_bfqq->woken_list);
}

View File

@@ -3946,10 +3946,20 @@ static void ata_eh_handle_port_suspend(struct ata_port *ap)
WARN_ON(ap->pflags & ATA_PFLAG_SUSPENDED);
/* Set all devices attached to the port in standby mode */
ata_for_each_link(link, ap, HOST_FIRST) {
ata_for_each_dev(dev, link, ENABLED)
ata_dev_power_set_standby(dev);
/*
* We will reach this point for all of the PM events:
* PM_EVENT_SUSPEND (if runtime pm, PM_EVENT_AUTO will also be set)
* PM_EVENT_FREEZE, and PM_EVENT_HIBERNATE.
*
* We do not want to perform disk spin down for PM_EVENT_FREEZE.
* (Spin down will be performed by the subsequent PM_EVENT_HIBERNATE.)
*/
if (!(ap->pm_mesg.event & PM_EVENT_FREEZE)) {
/* Set all devices attached to the port in standby mode */
ata_for_each_link(link, ap, HOST_FIRST) {
ata_for_each_dev(dev, link, ENABLED)
ata_dev_power_set_standby(dev);
}
}
/*

View File

@@ -86,7 +86,7 @@ static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn,
nr_pages = 1;
pgoff = linear_page_index(vmf->vma,
ALIGN(vmf->address, fault_size));
ALIGN_DOWN(vmf->address, fault_size));
for (i = 0; i < nr_pages; i++) {
struct page *page = pfn_to_page(pfn_t_to_pfn(pfn) + i);

View File

@@ -194,7 +194,7 @@ static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf)
if (!spage || !(src & MIGRATE_PFN_MIGRATE))
goto done;
dpage = alloc_page_vma(GFP_HIGHUSER, vmf->vma, vmf->address);
dpage = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vmf->vma, vmf->address);
if (!dpage)
goto done;

View File

@@ -101,6 +101,11 @@ void v3d_perfmon_open_file(struct v3d_file_priv *v3d_priv)
static int v3d_perfmon_idr_del(int id, void *elem, void *data)
{
struct v3d_perfmon *perfmon = elem;
struct v3d_dev *v3d = (struct v3d_dev *)data;
/* If the active perfmon is being destroyed, stop it first */
if (perfmon == v3d->active_perfmon)
v3d_perfmon_stop(v3d, perfmon, false);
v3d_perfmon_put(perfmon);
@@ -109,8 +114,10 @@ static int v3d_perfmon_idr_del(int id, void *elem, void *data)
void v3d_perfmon_close_file(struct v3d_file_priv *v3d_priv)
{
struct v3d_dev *v3d = v3d_priv->v3d;
mutex_lock(&v3d_priv->perfmon.lock);
idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, NULL);
idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, v3d);
idr_destroy(&v3d_priv->perfmon.idr);
mutex_unlock(&v3d_priv->perfmon.lock);
}

View File

@@ -116,6 +116,11 @@ void vc4_perfmon_open_file(struct vc4_file *vc4file)
static int vc4_perfmon_idr_del(int id, void *elem, void *data)
{
struct vc4_perfmon *perfmon = elem;
struct vc4_dev *vc4 = (struct vc4_dev *)data;
/* If the active perfmon is being destroyed, stop it first */
if (perfmon == vc4->active_perfmon)
vc4_perfmon_stop(vc4, perfmon, false);
vc4_perfmon_put(perfmon);
@@ -130,7 +135,7 @@ void vc4_perfmon_close_file(struct vc4_file *vc4file)
return;
mutex_lock(&vc4file->perfmon.lock);
idr_for_each(&vc4file->perfmon.idr, vc4_perfmon_idr_del, NULL);
idr_for_each(&vc4file->perfmon.idr, vc4_perfmon_idr_del, vc4);
idr_destroy(&vc4file->perfmon.idr);
mutex_unlock(&vc4file->perfmon.lock);
mutex_destroy(&vc4file->perfmon.lock);

View File

@@ -235,9 +235,9 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
cl_data->in_data = in_data;
for (i = 0; i < cl_data->num_hid_devices; i++) {
in_data->sensor_virt_addr[i] = dma_alloc_coherent(dev, sizeof(int) * 8,
&cl_data->sensor_dma_addr[i],
GFP_KERNEL);
in_data->sensor_virt_addr[i] = dmam_alloc_coherent(dev, sizeof(int) * 8,
&cl_data->sensor_dma_addr[i],
GFP_KERNEL);
if (!in_data->sensor_virt_addr[i]) {
rc = -ENOMEM;
goto cleanup;
@@ -334,7 +334,6 @@ cleanup:
int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
{
struct amdtp_cl_data *cl_data = privdata->cl_data;
struct amd_input_data *in_data = cl_data->in_data;
int i, status;
for (i = 0; i < cl_data->num_hid_devices; i++) {
@@ -354,12 +353,5 @@ int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
cancel_delayed_work_sync(&cl_data->work_buffer);
amdtp_hid_remove(cl_data);
for (i = 0; i < cl_data->num_hid_devices; i++) {
if (in_data->sensor_virt_addr[i]) {
dma_free_coherent(&privdata->pdev->dev, 8 * sizeof(int),
in_data->sensor_virt_addr[i],
cl_data->sensor_dma_addr[i]);
}
}
return 0;
}

View File

@@ -506,6 +506,7 @@
#define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100
#define I2C_VENDOR_ID_GOODIX 0x27c6
#define I2C_DEVICE_ID_GOODIX_01E0 0x01e0
#define I2C_DEVICE_ID_GOODIX_01E8 0x01e8
#define I2C_DEVICE_ID_GOODIX_01E9 0x01e9
#define I2C_DEVICE_ID_GOODIX_01F0 0x01f0
@@ -1019,6 +1020,8 @@
#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056
#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057
#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058
#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c
#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e
#define USB_VENDOR_ID_PANASONIC 0x04da
#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044

View File

@@ -1447,7 +1447,8 @@ static __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
{
if (hdev->vendor == I2C_VENDOR_ID_GOODIX &&
(hdev->product == I2C_DEVICE_ID_GOODIX_01E8 ||
hdev->product == I2C_DEVICE_ID_GOODIX_01E9)) {
hdev->product == I2C_DEVICE_ID_GOODIX_01E9 ||
hdev->product == I2C_DEVICE_ID_GOODIX_01E0)) {
if (rdesc[607] == 0x15) {
rdesc[607] = 0x25;
dev_info(
@@ -2068,7 +2069,10 @@ static const struct hid_device_id mt_devices[] = {
I2C_DEVICE_ID_GOODIX_01E8) },
{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
I2C_DEVICE_ID_GOODIX_01E8) },
I2C_DEVICE_ID_GOODIX_01E9) },
{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
I2C_DEVICE_ID_GOODIX_01E0) },
/* GoodTouch panels */
{ .driver_data = MT_CLS_NSMU,

View File

@@ -38,8 +38,10 @@
(usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER)
#define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0)
#define PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS BIT(1)
#define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */
#define PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT 220 /* ms */
struct plt_drv_data {
unsigned long device_type;
@@ -137,6 +139,21 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field,
drv_data->last_volume_key_ts = cur_ts;
}
if (drv_data->quirks & PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS) {
unsigned long prev_ts, cur_ts;
/* Usages are filtered in plantronics_usages. */
if (!value) /* Handle key presses only. */
return 0;
prev_ts = drv_data->last_volume_key_ts;
cur_ts = jiffies;
if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT)
return 1; /* Ignore the followed opposite volume key. */
drv_data->last_volume_key_ts = cur_ts;
}
return 0;
}
@@ -210,6 +227,12 @@ static const struct hid_device_id plantronics_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES),
.driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS },
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES),
.driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS },
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES),
.driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS },
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
{ }
};

View File

@@ -635,7 +635,7 @@ static int ish_fw_xfer_direct_dma(struct ishtp_cl_data *client_data,
const struct firmware *fw,
const struct shim_fw_info fw_info)
{
int rv;
int rv = 0;
void *dma_buf;
dma_addr_t dma_buf_phy;
u32 fragment_offset, fragment_size, payload_max_size;

View File

@@ -166,6 +166,7 @@ config SENSORS_ADM9240
tristate "Analog Devices ADM9240 and compatibles"
depends on I2C
select HWMON_VID
select REGMAP_I2C
help
If you say yes here you get support for Analog Devices ADM9240,
Dallas DS1780, National Semiconductor LM81 sensor chips.
@@ -227,6 +228,7 @@ config SENSORS_ADT7462
config SENSORS_ADT7470
tristate "Analog Devices ADT7470"
depends on I2C
select REGMAP_I2C
help
If you say yes here you get support for the Analog Devices
ADT7470 temperature monitoring chips.
@@ -2101,6 +2103,7 @@ config SENSORS_TMP464
config SENSORS_TMP513
tristate "Texas Instruments TMP513 and compatibles"
depends on I2C
select REGMAP_I2C
help
If you say yes here you get support for Texas Instruments TMP512,
and TMP513 temperature and power supply sensor chips.

View File

@@ -96,15 +96,4 @@ config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
passing intel_iommu=sm_on to the kernel. If not sure, please use
the default value.
config INTEL_IOMMU_PERF_EVENTS
def_bool y
bool "Intel IOMMU performance events"
depends on INTEL_IOMMU && PERF_EVENTS
help
Selecting this option will enable the performance monitoring
infrastructure in the Intel IOMMU. It collects information about
key events occurring during operation of the remapping hardware,
to aid performance tuning and debug. These are available on modern
processors which support Intel VT-d 4.0 and later.
endif # INTEL_IOMMU

View File

@@ -8,4 +8,3 @@ obj-$(CONFIG_INTEL_IOMMU_SVM) += svm.o
ifdef CONFIG_INTEL_IOMMU
obj-$(CONFIG_IRQ_REMAP) += irq_remapping.o
endif
obj-$(CONFIG_INTEL_IOMMU_PERF_EVENTS) += perfmon.o

View File

@@ -34,7 +34,6 @@
#include "../irq_remapping.h"
#include "perf.h"
#include "trace.h"
#include "perfmon.h"
typedef int (*dmar_res_handler_t)(struct acpi_dmar_header *, void *);
struct dmar_res_callback {
@@ -1105,9 +1104,6 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
if (sts & DMA_GSTS_QIES)
iommu->gcmd |= DMA_GCMD_QIE;
if (alloc_iommu_pmu(iommu))
pr_debug("Cannot alloc PMU for iommu (seq_id = %d)\n", iommu->seq_id);
raw_spin_lock_init(&iommu->register_lock);
/*
@@ -1142,7 +1138,6 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
err_sysfs:
iommu_device_sysfs_remove(&iommu->iommu);
err_unmap:
free_iommu_pmu(iommu);
unmap_iommu(iommu);
error_free_seq_id:
ida_free(&dmar_seq_ids, iommu->seq_id);
@@ -1158,8 +1153,6 @@ static void free_iommu(struct intel_iommu *iommu)
iommu_device_sysfs_remove(&iommu->iommu);
}
free_iommu_pmu(iommu);
if (iommu->irq) {
if (iommu->pr_irq) {
free_irq(iommu->pr_irq, iommu);

View File

@@ -125,11 +125,6 @@
#define DMAR_MTRR_PHYSMASK8_REG 0x208
#define DMAR_MTRR_PHYSBASE9_REG 0x210
#define DMAR_MTRR_PHYSMASK9_REG 0x218
#define DMAR_PERFCAP_REG 0x300
#define DMAR_PERFCFGOFF_REG 0x310
#define DMAR_PERFOVFOFF_REG 0x318
#define DMAR_PERFCNTROFF_REG 0x31c
#define DMAR_PERFEVNTCAP_REG 0x380
#define DMAR_VCCAP_REG 0xe30 /* Virtual command capability register */
#define DMAR_VCMD_REG 0xe00 /* Virtual command register */
#define DMAR_VCRSP_REG 0xe10 /* Virtual command response register */
@@ -153,7 +148,6 @@
*/
#define cap_esrtps(c) (((c) >> 63) & 1)
#define cap_esirtps(c) (((c) >> 62) & 1)
#define cap_ecmds(c) (((c) >> 61) & 1)
#define cap_fl5lp_support(c) (((c) >> 60) & 1)
#define cap_pi_support(c) (((c) >> 59) & 1)
#define cap_fl1gp_support(c) (((c) >> 56) & 1)
@@ -185,8 +179,7 @@
* Extended Capability Register
*/
#define ecap_pms(e) (((e) >> 51) & 0x1)
#define ecap_rps(e) (((e) >> 49) & 0x1)
#define ecap_rps(e) (((e) >> 49) & 0x1)
#define ecap_smpwc(e) (((e) >> 48) & 0x1)
#define ecap_flts(e) (((e) >> 47) & 0x1)
#define ecap_slts(e) (((e) >> 46) & 0x1)
@@ -217,22 +210,6 @@
#define ecap_max_handle_mask(e) (((e) >> 20) & 0xf)
#define ecap_sc_support(e) (((e) >> 7) & 0x1) /* Snooping Control */
/*
* Decoding Perf Capability Register
*/
#define pcap_num_cntr(p) ((p) & 0xffff)
#define pcap_cntr_width(p) (((p) >> 16) & 0x7f)
#define pcap_num_event_group(p) (((p) >> 24) & 0x1f)
#define pcap_filters_mask(p) (((p) >> 32) & 0x1f)
#define pcap_interrupt(p) (((p) >> 50) & 0x1)
/* The counter stride is calculated as 2 ^ (x+10) bytes */
#define pcap_cntr_stride(p) (1ULL << ((((p) >> 52) & 0x7) + 10))
/*
* Decoding Perf Event Capability Register
*/
#define pecap_es(p) ((p) & 0xfffffff)
/* Virtual command interface capability */
#define vccap_pasid(v) (((v) & DMA_VCS_PAS)) /* PASID allocation */
@@ -582,22 +559,6 @@ struct dmar_domain {
iommu core */
};
struct iommu_pmu {
struct intel_iommu *iommu;
u32 num_cntr; /* Number of counters */
u32 num_eg; /* Number of event group */
u32 cntr_width; /* Counter width */
u32 cntr_stride; /* Counter Stride */
u32 filter; /* Bitmask of filter support */
void __iomem *base; /* the PerfMon base address */
void __iomem *cfg_reg; /* counter configuration base address */
void __iomem *cntr_reg; /* counter 0 address*/
void __iomem *overflow; /* overflow status register */
u64 *evcap; /* Indicates all supported events */
u32 **cntr_evcap; /* Supported events of each counter. */
};
struct intel_iommu {
void __iomem *reg; /* Pointer to hardware regs, virtual addr */
u64 reg_phys; /* physical address of hw register set */
@@ -645,8 +606,6 @@ struct intel_iommu {
struct dmar_drhd_unit *drhd;
void *perf_statistic;
struct iommu_pmu *pmu;
};
/* PCI domain-device relationship */

View File

@@ -1,172 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Support Intel IOMMU PerfMon
* Copyright(c) 2023 Intel Corporation.
*/
#define pr_fmt(fmt) "DMAR: " fmt
#define dev_fmt(fmt) pr_fmt(fmt)
#include <linux/dmar.h>
#include "iommu.h"
#include "perfmon.h"
static inline void __iomem *
get_perf_reg_address(struct intel_iommu *iommu, u32 offset)
{
u32 off = dmar_readl(iommu->reg + offset);
return iommu->reg + off;
}
int alloc_iommu_pmu(struct intel_iommu *iommu)
{
struct iommu_pmu *iommu_pmu;
int i, j, ret;
u64 perfcap;
u32 cap;
if (!ecap_pms(iommu->ecap))
return 0;
/* The IOMMU PMU requires the ECMD support as well */
if (!cap_ecmds(iommu->cap))
return -ENODEV;
perfcap = dmar_readq(iommu->reg + DMAR_PERFCAP_REG);
/* The performance monitoring is not supported. */
if (!perfcap)
return -ENODEV;
/* Sanity check for the number of the counters and event groups */
if (!pcap_num_cntr(perfcap) || !pcap_num_event_group(perfcap))
return -ENODEV;
/* The interrupt on overflow is required */
if (!pcap_interrupt(perfcap))
return -ENODEV;
iommu_pmu = kzalloc(sizeof(*iommu_pmu), GFP_KERNEL);
if (!iommu_pmu)
return -ENOMEM;
iommu_pmu->num_cntr = pcap_num_cntr(perfcap);
iommu_pmu->cntr_width = pcap_cntr_width(perfcap);
iommu_pmu->filter = pcap_filters_mask(perfcap);
iommu_pmu->cntr_stride = pcap_cntr_stride(perfcap);
iommu_pmu->num_eg = pcap_num_event_group(perfcap);
iommu_pmu->evcap = kcalloc(iommu_pmu->num_eg, sizeof(u64), GFP_KERNEL);
if (!iommu_pmu->evcap) {
ret = -ENOMEM;
goto free_pmu;
}
/* Parse event group capabilities */
for (i = 0; i < iommu_pmu->num_eg; i++) {
u64 pcap;
pcap = dmar_readq(iommu->reg + DMAR_PERFEVNTCAP_REG +
i * IOMMU_PMU_CAP_REGS_STEP);
iommu_pmu->evcap[i] = pecap_es(pcap);
}
iommu_pmu->cntr_evcap = kcalloc(iommu_pmu->num_cntr, sizeof(u32 *), GFP_KERNEL);
if (!iommu_pmu->cntr_evcap) {
ret = -ENOMEM;
goto free_pmu_evcap;
}
for (i = 0; i < iommu_pmu->num_cntr; i++) {
iommu_pmu->cntr_evcap[i] = kcalloc(iommu_pmu->num_eg, sizeof(u32), GFP_KERNEL);
if (!iommu_pmu->cntr_evcap[i]) {
ret = -ENOMEM;
goto free_pmu_cntr_evcap;
}
/*
* Set to the global capabilities, will adjust according
* to per-counter capabilities later.
*/
for (j = 0; j < iommu_pmu->num_eg; j++)
iommu_pmu->cntr_evcap[i][j] = (u32)iommu_pmu->evcap[j];
}
iommu_pmu->cfg_reg = get_perf_reg_address(iommu, DMAR_PERFCFGOFF_REG);
iommu_pmu->cntr_reg = get_perf_reg_address(iommu, DMAR_PERFCNTROFF_REG);
iommu_pmu->overflow = get_perf_reg_address(iommu, DMAR_PERFOVFOFF_REG);
/*
* Check per-counter capabilities. All counters should have the
* same capabilities on Interrupt on Overflow Support and Counter
* Width.
*/
for (i = 0; i < iommu_pmu->num_cntr; i++) {
cap = dmar_readl(iommu_pmu->cfg_reg +
i * IOMMU_PMU_CFG_OFFSET +
IOMMU_PMU_CFG_CNTRCAP_OFFSET);
if (!iommu_cntrcap_pcc(cap))
continue;
/*
* It's possible that some counters have a different
* capability because of e.g., HW bug. Check the corner
* case here and simply drop those counters.
*/
if ((iommu_cntrcap_cw(cap) != iommu_pmu->cntr_width) ||
!iommu_cntrcap_ios(cap)) {
iommu_pmu->num_cntr = i;
pr_warn("PMU counter capability inconsistent, counter number reduced to %d\n",
iommu_pmu->num_cntr);
}
/* Clear the pre-defined events group */
for (j = 0; j < iommu_pmu->num_eg; j++)
iommu_pmu->cntr_evcap[i][j] = 0;
/* Override with per-counter event capabilities */
for (j = 0; j < iommu_cntrcap_egcnt(cap); j++) {
cap = dmar_readl(iommu_pmu->cfg_reg + i * IOMMU_PMU_CFG_OFFSET +
IOMMU_PMU_CFG_CNTREVCAP_OFFSET +
(j * IOMMU_PMU_OFF_REGS_STEP));
iommu_pmu->cntr_evcap[i][iommu_event_group(cap)] = iommu_event_select(cap);
/*
* Some events may only be supported by a specific counter.
* Track them in the evcap as well.
*/
iommu_pmu->evcap[iommu_event_group(cap)] |= iommu_event_select(cap);
}
}
iommu_pmu->iommu = iommu;
iommu->pmu = iommu_pmu;
return 0;
free_pmu_cntr_evcap:
for (i = 0; i < iommu_pmu->num_cntr; i++)
kfree(iommu_pmu->cntr_evcap[i]);
kfree(iommu_pmu->cntr_evcap);
free_pmu_evcap:
kfree(iommu_pmu->evcap);
free_pmu:
kfree(iommu_pmu);
return ret;
}
void free_iommu_pmu(struct intel_iommu *iommu)
{
struct iommu_pmu *iommu_pmu = iommu->pmu;
if (!iommu_pmu)
return;
if (iommu_pmu->evcap) {
int i;
for (i = 0; i < iommu_pmu->num_cntr; i++)
kfree(iommu_pmu->cntr_evcap[i]);
kfree(iommu_pmu->cntr_evcap);
}
kfree(iommu_pmu->evcap);
kfree(iommu_pmu);
iommu->pmu = NULL;
}

View File

@@ -1,40 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* PERFCFGOFF_REG, PERFFRZOFF_REG
* PERFOVFOFF_REG, PERFCNTROFF_REG
*/
#define IOMMU_PMU_NUM_OFF_REGS 4
#define IOMMU_PMU_OFF_REGS_STEP 4
#define IOMMU_PMU_CFG_OFFSET 0x100
#define IOMMU_PMU_CFG_CNTRCAP_OFFSET 0x80
#define IOMMU_PMU_CFG_CNTREVCAP_OFFSET 0x84
#define IOMMU_PMU_CFG_SIZE 0x8
#define IOMMU_PMU_CFG_FILTERS_OFFSET 0x4
#define IOMMU_PMU_CAP_REGS_STEP 8
#define iommu_cntrcap_pcc(p) ((p) & 0x1)
#define iommu_cntrcap_cw(p) (((p) >> 8) & 0xff)
#define iommu_cntrcap_ios(p) (((p) >> 16) & 0x1)
#define iommu_cntrcap_egcnt(p) (((p) >> 28) & 0xf)
#define iommu_event_select(p) ((p) & 0xfffffff)
#define iommu_event_group(p) (((p) >> 28) & 0xf)
#ifdef CONFIG_INTEL_IOMMU_PERF_EVENTS
int alloc_iommu_pmu(struct intel_iommu *iommu);
void free_iommu_pmu(struct intel_iommu *iommu);
#else
static inline int
alloc_iommu_pmu(struct intel_iommu *iommu)
{
return 0;
}
static inline void
free_iommu_pmu(struct intel_iommu *iommu)
{
}
#endif /* CONFIG_INTEL_IOMMU_PERF_EVENTS */

View File

@@ -6,6 +6,7 @@
#include <linux/module.h>
#include <linux/gpio/consumer.h>
#include <linux/regmap.h>
#include <linux/iopoll.h>
#include <linux/mutex.h>
#include <linux/mii.h>
#include <linux/phy.h>
@@ -825,6 +826,8 @@ static void lan9303_handle_reset(struct lan9303 *chip)
if (!chip->reset_gpio)
return;
gpiod_set_value_cansleep(chip->reset_gpio, 1);
if (chip->reset_duration != 0)
msleep(chip->reset_duration);
@@ -850,8 +853,34 @@ static int lan9303_disable_processing(struct lan9303 *chip)
static int lan9303_check_device(struct lan9303 *chip)
{
int ret;
int err;
u32 reg;
/* In I2C-managed configurations this polling loop will clash with
* switch's reading of EEPROM right after reset and this behaviour is
* not configurable. While lan9303_read() already has quite long retry
* timeout, seems not all cases are being detected as arbitration error.
*
* According to datasheet, EEPROM loader has 30ms timeout (in case of
* missing EEPROM).
*
* Loading of the largest supported EEPROM is expected to take at least
* 5.9s.
*/
err = read_poll_timeout(lan9303_read, ret,
!ret && reg & LAN9303_HW_CFG_READY,
20000, 6000000, false,
chip->regmap, LAN9303_HW_CFG, &reg);
if (ret) {
dev_err(chip->dev, "failed to read HW_CFG reg: %pe\n",
ERR_PTR(ret));
return ret;
}
if (err) {
dev_err(chip->dev, "HW_CFG not ready: 0x%08x\n", reg);
return err;
}
ret = lan9303_read(chip->regmap, LAN9303_CHIP_REV, &reg);
if (ret) {
dev_err(chip->dev, "failed to read chip revision register: %d\n",

View File

@@ -79,7 +79,8 @@ MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
#define GMAC0_IRQ4_8 (GMAC0_MIB_INT_BIT | GMAC0_RX_OVERRUN_INT_BIT)
#define GMAC_OFFLOAD_FEATURES (NETIF_F_SG | NETIF_F_IP_CSUM | \
NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM)
NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM | \
NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
/**
* struct gmac_queue_page - page buffer per-page info
@@ -1148,13 +1149,25 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb,
skb_frag_t *skb_frag;
dma_addr_t mapping;
void *buffer;
u16 mss;
int ret;
/* TODO: implement proper TSO using MTU in word3 */
word1 = skb->len;
word3 = SOF_BIT;
if (skb->len >= ETH_FRAME_LEN) {
mss = skb_shinfo(skb)->gso_size;
if (mss) {
/* This means we are dealing with TCP and skb->len is the
* sum total of all the segments. The TSO will deal with
* chopping this up for us.
*/
/* The accelerator needs the full frame size here */
mss += skb_tcp_all_headers(skb);
netdev_dbg(netdev, "segment offloading mss = %04x len=%04x\n",
mss, skb->len);
word1 |= TSS_MTU_ENABLE_BIT;
word3 |= mss;
} else if (skb->len >= ETH_FRAME_LEN) {
/* Hardware offloaded checksumming isn't working on frames
* bigger than 1514 bytes. A hypothesis about this is that the
* checksum buffer is only 1518 bytes, so when the frames get
@@ -1169,7 +1182,9 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb,
return ret;
}
word1 |= TSS_BYPASS_BIT;
} else if (skb->ip_summed == CHECKSUM_PARTIAL) {
}
if (skb->ip_summed == CHECKSUM_PARTIAL) {
int tcp = 0;
/* We do not switch off the checksumming on non TCP/UDP

View File

@@ -603,13 +603,9 @@ static int mal_probe(struct platform_device *ofdev)
INIT_LIST_HEAD(&mal->list);
spin_lock_init(&mal->lock);
mal->dummy_dev = alloc_netdev_dummy(0);
if (!mal->dummy_dev) {
err = -ENOMEM;
goto fail_unmap;
}
init_dummy_netdev(&mal->dummy_dev);
netif_napi_add_weight(mal->dummy_dev, &mal->napi, mal_poll,
netif_napi_add_weight(&mal->dummy_dev, &mal->napi, mal_poll,
CONFIG_IBM_EMAC_POLL_WEIGHT);
/* Load power-on reset defaults */
@@ -639,7 +635,7 @@ static int mal_probe(struct platform_device *ofdev)
GFP_KERNEL);
if (mal->bd_virt == NULL) {
err = -ENOMEM;
goto fail_dummy;
goto fail_unmap;
}
for (i = 0; i < mal->num_tx_chans; ++i)
@@ -705,8 +701,6 @@ static int mal_probe(struct platform_device *ofdev)
free_irq(mal->serr_irq, mal);
fail2:
dma_free_coherent(&ofdev->dev, bd_size, mal->bd_virt, mal->bd_dma);
fail_dummy:
free_netdev(mal->dummy_dev);
fail_unmap:
dcr_unmap(mal->dcr_host, 0x100);
fail:
@@ -738,8 +732,6 @@ static int mal_remove(struct platform_device *ofdev)
mal_reset(mal);
free_netdev(mal->dummy_dev);
dcr_unmap(mal->dcr_host, 0x100);
dma_free_coherent(&ofdev->dev,

View File

@@ -205,7 +205,7 @@ struct mal_instance {
int index;
spinlock_t lock;
struct net_device *dummy_dev;
struct net_device dummy_dev;
unsigned int features;
};

View File

@@ -1950,7 +1950,6 @@ static int mlx5_try_fast_unload(struct mlx5_core_dev *dev)
/* Panic tear down fw command will stop the PCI bus communication
* with the HCA, so the health poll is no longer needed.
*/
mlx5_drain_health_wq(dev);
mlx5_stop_health_poll(dev, false);
ret = mlx5_cmd_fast_teardown_hca(dev);
@@ -1985,6 +1984,7 @@ static void shutdown(struct pci_dev *pdev)
mlx5_core_info(dev, "Shutdown was called\n");
set_bit(MLX5_BREAK_FW_WAIT, &dev->intf_state);
mlx5_drain_health_wq(dev);
err = mlx5_try_fast_unload(dev);
if (err)
mlx5_unload_one(dev, false);

View File

@@ -75,6 +75,7 @@ static void mlx5_sf_dev_shutdown(struct auxiliary_device *adev)
{
struct mlx5_sf_dev *sf_dev = container_of(adev, struct mlx5_sf_dev, adev);
mlx5_drain_health_wq(sf_dev->mdev);
mlx5_unload_one(sf_dev->mdev, false);
}

View File

@@ -550,7 +550,7 @@ ppp_async_encode(struct asyncppp *ap)
* and 7 (code-reject) must be sent as though no options
* had been negotiated.
*/
islcp = proto == PPP_LCP && 1 <= data[2] && data[2] <= 7;
islcp = proto == PPP_LCP && count >= 3 && 1 <= data[2] && data[2] <= 7;
if (i == 0) {
if (islcp)

View File

@@ -643,46 +643,57 @@ bad:
int
slhc_remember(struct slcompress *comp, unsigned char *icp, int isize)
{
struct cstate *cs;
unsigned ihl;
const struct tcphdr *th;
unsigned char index;
struct iphdr *iph;
struct cstate *cs;
unsigned int ihl;
if(isize < 20) {
/* The packet is shorter than a legal IP header */
/* The packet is shorter than a legal IP header.
* Also make sure isize is positive.
*/
if (isize < (int)sizeof(struct iphdr)) {
runt:
comp->sls_i_runt++;
return slhc_toss( comp );
return slhc_toss(comp);
}
iph = (struct iphdr *)icp;
/* Peek at the IP header's IHL field to find its length */
ihl = icp[0] & 0xf;
if(ihl < 20 / 4){
/* The IP header length field is too small */
comp->sls_i_runt++;
return slhc_toss( comp );
}
index = icp[9];
icp[9] = IPPROTO_TCP;
ihl = iph->ihl;
/* The IP header length field is too small,
* or packet is shorter than the IP header followed
* by minimal tcp header.
*/
if (ihl < 5 || isize < ihl * 4 + sizeof(struct tcphdr))
goto runt;
index = iph->protocol;
iph->protocol = IPPROTO_TCP;
if (ip_fast_csum(icp, ihl)) {
/* Bad IP header checksum; discard */
comp->sls_i_badcheck++;
return slhc_toss( comp );
return slhc_toss(comp);
}
if(index > comp->rslot_limit) {
if (index > comp->rslot_limit) {
comp->sls_i_error++;
return slhc_toss(comp);
}
th = (struct tcphdr *)(icp + ihl * 4);
if (th->doff < sizeof(struct tcphdr) / 4)
goto runt;
if (isize < ihl * 4 + th->doff * 4)
goto runt;
/* Update local state */
cs = &comp->rstate[comp->recv_current = index];
comp->flags &=~ SLF_TOSS;
memcpy(&cs->cs_ip,icp,20);
memcpy(&cs->cs_tcp,icp + ihl*4,20);
memcpy(&cs->cs_ip, iph, sizeof(*iph));
memcpy(&cs->cs_tcp, th, sizeof(*th));
if (ihl > 5)
memcpy(cs->cs_ipopt, icp + sizeof(struct iphdr), (ihl - 5) * 4);
if (cs->cs_tcp.doff > 5)
memcpy(cs->cs_tcpopt, icp + ihl*4 + sizeof(struct tcphdr), (cs->cs_tcp.doff - 5) * 4);
cs->cs_hsize = ihl*2 + cs->cs_tcp.doff*2;
memcpy(cs->cs_ipopt, &iph[1], (ihl - 5) * 4);
if (th->doff > 5)
memcpy(cs->cs_tcpopt, &th[1], (th->doff - 5) * 4);
cs->cs_hsize = ihl*2 + th->doff*2;
cs->initialized = true;
/* Put headers back on packet
* Neither header checksum is recalculated

View File

@@ -4803,9 +4803,13 @@ static int __init vxlan_init_module(void)
if (rc)
goto out4;
vxlan_vnifilter_init();
rc = vxlan_vnifilter_init();
if (rc)
goto out5;
return 0;
out5:
rtnl_link_unregister(&vxlan_link_ops);
out4:
unregister_switchdev_notifier(&vxlan_switchdev_notifier_block);
out3:

View File

@@ -134,7 +134,7 @@ int vxlan_vni_in_use(struct net *src_net, struct vxlan_dev *vxlan,
int vxlan_vnigroup_init(struct vxlan_dev *vxlan);
void vxlan_vnigroup_uninit(struct vxlan_dev *vxlan);
void vxlan_vnifilter_init(void);
int vxlan_vnifilter_init(void);
void vxlan_vnifilter_uninit(void);
void vxlan_vnifilter_count(struct vxlan_dev *vxlan, __be32 vni,
struct vxlan_vni_node *vninode,

View File

@@ -992,19 +992,18 @@ static int vxlan_vnifilter_process(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
}
void vxlan_vnifilter_init(void)
static const struct rtnl_msg_handler vxlan_vnifilter_rtnl_msg_handlers[] = {
{THIS_MODULE, PF_BRIDGE, RTM_GETTUNNEL, NULL, vxlan_vnifilter_dump, 0},
{THIS_MODULE, PF_BRIDGE, RTM_NEWTUNNEL, vxlan_vnifilter_process, NULL, 0},
{THIS_MODULE, PF_BRIDGE, RTM_DELTUNNEL, vxlan_vnifilter_process, NULL, 0},
};
int vxlan_vnifilter_init(void)
{
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_GETTUNNEL, NULL,
vxlan_vnifilter_dump, 0);
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_NEWTUNNEL,
vxlan_vnifilter_process, NULL, 0);
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_DELTUNNEL,
vxlan_vnifilter_process, NULL, 0);
return rtnl_register_many(vxlan_vnifilter_rtnl_msg_handlers);
}
void vxlan_vnifilter_uninit(void)
{
rtnl_unregister(PF_BRIDGE, RTM_GETTUNNEL);
rtnl_unregister(PF_BRIDGE, RTM_NEWTUNNEL);
rtnl_unregister(PF_BRIDGE, RTM_DELTUNNEL);
rtnl_unregister_many(vxlan_vnifilter_rtnl_msg_handlers);
}

View File

@@ -831,7 +831,7 @@ wd33c93_intr(struct Scsi_Host *instance)
/* construct an IDENTIFY message with correct disconnect bit */
hostdata->outgoing_msg[0] = IDENTIFY(0, cmd->device->lun);
if (scsi_pointer->phase)
if (WD33C93_scsi_pointer(cmd)->phase)
hostdata->outgoing_msg[0] |= 0x40;
if (hostdata->sync_stat[cmd->device->id] == SS_FIRST) {

View File

@@ -533,6 +533,7 @@ static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned int length)
int dwc3_event_buffers_setup(struct dwc3 *dwc)
{
struct dwc3_event_buffer *evt;
u32 reg;
if (!dwc->ev_buf)
return 0;
@@ -545,8 +546,10 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc)
upper_32_bits(evt->dma));
dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0),
DWC3_GEVNTSIZ_SIZE(evt->length));
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0);
/* Clear any stale event */
reg = dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0));
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), reg);
return 0;
}
@@ -573,7 +576,10 @@ void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(0), 0);
dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0), DWC3_GEVNTSIZ_INTMASK
| DWC3_GEVNTSIZ_SIZE(0));
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0);
/* Clear any stale event */
reg = dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0));
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), reg);
}
static int dwc3_alloc_scratch_buffers(struct dwc3 *dwc)
@@ -2208,7 +2214,11 @@ static int dwc3_runtime_resume(struct device *dev)
switch (dwc->current_dr_role) {
case DWC3_GCTL_PRTCAP_DEVICE:
dwc3_gadget_process_pending_events(dwc);
if (dwc->pending_events) {
pm_runtime_put(dwc->dev);
dwc->pending_events = false;
enable_irq(dwc->irq_gadget);
}
break;
case DWC3_GCTL_PRTCAP_HOST:
default:
@@ -2298,6 +2308,12 @@ static void dwc3_complete(struct device *dev)
static const struct dev_pm_ops dwc3_dev_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(dwc3_suspend, dwc3_resume)
.complete = dwc3_complete,
/*
* Runtime suspend halts the controller on disconnection. It relies on
* platforms with custom connection notification to start the controller
* again.
*/
SET_RUNTIME_PM_OPS(dwc3_runtime_suspend, dwc3_runtime_resume,
dwc3_runtime_idle)
};

View File

@@ -1648,7 +1648,6 @@ static inline void dwc3_otg_host_init(struct dwc3 *dwc)
#if !IS_ENABLED(CONFIG_USB_DWC3_HOST)
int dwc3_gadget_suspend(struct dwc3 *dwc);
int dwc3_gadget_resume(struct dwc3 *dwc);
void dwc3_gadget_process_pending_events(struct dwc3 *dwc);
#else
static inline int dwc3_gadget_suspend(struct dwc3 *dwc)
{
@@ -1660,9 +1659,6 @@ static inline int dwc3_gadget_resume(struct dwc3 *dwc)
return 0;
}
static inline void dwc3_gadget_process_pending_events(struct dwc3 *dwc)
{
}
#endif /* !IS_ENABLED(CONFIG_USB_DWC3_HOST) */
#if IS_ENABLED(CONFIG_USB_DWC3_ULPI)

View File

@@ -4632,14 +4632,3 @@ int dwc3_gadget_resume(struct dwc3 *dwc)
return dwc3_gadget_soft_connect(dwc);
}
void dwc3_gadget_process_pending_events(struct dwc3 *dwc)
{
if (dwc->pending_events) {
dwc3_interrupt(dwc->irq_gadget, dwc->ev_buf);
dwc3_thread_interrupt(dwc->irq_gadget, dwc->ev_buf);
pm_runtime_put(dwc->dev);
dwc->pending_events = false;
enable_irq(dwc->irq_gadget);
}
}

View File

@@ -1664,6 +1664,7 @@ int usb_gadget_register_driver_owner(struct usb_gadget_driver *driver,
driver->driver.bus = &gadget_bus_type;
driver->driver.owner = owner;
driver->driver.mod_name = mod_name;
driver->driver.probe_type = PROBE_FORCE_SYNCHRONOUS;
ret = driver_register(&driver->driver);
if (ret) {
pr_warn("%s: driver registration failed: %d\n",

View File

@@ -73,6 +73,7 @@
#define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142
#define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242
#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142
#define PCI_DEVICE_ID_ASMEDIA_3042_XHCI 0x3042
#define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242
static const char hcd_name[] = "xhci_hcd";
@@ -327,6 +328,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI)
xhci->quirks |= XHCI_ASMEDIA_MODIFY_FLOWCONTROL;
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
pdev->device == PCI_DEVICE_ID_ASMEDIA_3042_XHCI)
xhci->quirks |= XHCI_RESET_ON_RESUME;
if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;

View File

@@ -34,8 +34,6 @@
#define YUREX_BUF_SIZE 8
#define YUREX_WRITE_TIMEOUT (HZ*2)
#define MAX_S64_STRLEN 20 /* {-}922337203685477580{7,8} */
/* table of devices that work with this driver */
static struct usb_device_id yurex_table[] = {
{ USB_DEVICE(YUREX_VENDOR_ID, YUREX_PRODUCT_ID) },
@@ -403,7 +401,8 @@ static ssize_t yurex_read(struct file *file, char __user *buffer, size_t count,
{
struct usb_yurex *dev;
int len = 0;
char in_buffer[MAX_S64_STRLEN];
char in_buffer[20];
unsigned long flags;
dev = file->private_data;
@@ -413,16 +412,14 @@ static ssize_t yurex_read(struct file *file, char __user *buffer, size_t count,
return -ENODEV;
}
if (WARN_ON_ONCE(dev->bbu > S64_MAX || dev->bbu < S64_MIN)) {
mutex_unlock(&dev->io_mutex);
return -EIO;
}
spin_lock_irq(&dev->lock);
scnprintf(in_buffer, MAX_S64_STRLEN, "%lld\n", dev->bbu);
spin_unlock_irq(&dev->lock);
spin_lock_irqsave(&dev->lock, flags);
len = snprintf(in_buffer, 20, "%lld\n", dev->bbu);
spin_unlock_irqrestore(&dev->lock, flags);
mutex_unlock(&dev->io_mutex);
if (WARN_ON_ONCE(len >= sizeof(in_buffer)))
return -EIO;
return simple_read_from_buffer(buffer, count, ppos, in_buffer, len);
}

View File

@@ -2423,6 +2423,17 @@ UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100,
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_NOT_LOCKABLE),
/*
* Reported by Icenowy Zheng <uwu@icenowy.me>
* This is an interface for vendor-specific cryptic commands instead
* of real USB storage device.
*/
UNUSUAL_DEV( 0xe5b7, 0x0811, 0x0100, 0x0100,
"ZhuHai JieLi Technology",
"JieLi BR21",
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_IGNORE_DEVICE),
/* Reported by Andrew Simmons <andrew.simmons@gmail.com> */
UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001,
"DataStor",

View File

@@ -293,7 +293,7 @@ void mctp_neigh_remove_dev(struct mctp_dev *mdev);
int mctp_routes_init(void);
void mctp_routes_exit(void);
void mctp_device_init(void);
int mctp_device_init(void);
void mctp_device_exit(void);
#endif /* __NET_MCTP_H */

View File

@@ -27,6 +27,15 @@ static inline enum rtnl_kinds rtnl_msgtype_kind(int msgtype)
return msgtype & RTNL_KIND_MASK;
}
struct rtnl_msg_handler {
struct module *owner;
int protocol;
int msgtype;
rtnl_doit_func doit;
rtnl_dumpit_func dumpit;
int flags;
};
void rtnl_register(int protocol, int msgtype,
rtnl_doit_func, rtnl_dumpit_func, unsigned int flags);
int rtnl_register_module(struct module *owner, int protocol, int msgtype,
@@ -34,6 +43,14 @@ int rtnl_register_module(struct module *owner, int protocol, int msgtype,
int rtnl_unregister(int protocol, int msgtype);
void rtnl_unregister_all(int protocol);
int __rtnl_register_many(const struct rtnl_msg_handler *handlers, int n);
void __rtnl_unregister_many(const struct rtnl_msg_handler *handlers, int n);
#define rtnl_register_many(handlers) \
__rtnl_register_many(handlers, ARRAY_SIZE(handlers))
#define rtnl_unregister_many(handlers) \
__rtnl_unregister_many(handlers, ARRAY_SIZE(handlers))
static inline int rtnl_msg_family(const struct nlmsghdr *nlh)
{
if (nlmsg_len(nlh) >= sizeof(struct rtgenmsg))

View File

@@ -910,6 +910,8 @@ static inline void sk_add_bind2_node(struct sock *sk, struct hlist_head *list)
hlist_for_each_entry(__sk, list, sk_bind_node)
#define sk_for_each_bound_bhash2(__sk, list) \
hlist_for_each_entry(__sk, list, sk_bind2_node)
#define sk_for_each_bound_safe(__sk, tmp, list) \
hlist_for_each_entry_safe(__sk, tmp, list, sk_bind_node)
/**
* sk_for_each_entry_offset_rcu - iterate over a list at a given struct offset

View File

@@ -634,6 +634,8 @@ void kthread_unpark(struct task_struct *k)
{
struct kthread *kthread = to_kthread(k);
if (!test_bit(KTHREAD_SHOULD_PARK, &kthread->flags))
return;
/*
* Newly created kthread was parked when the CPU was offline.
* The binding was lost and we need to set it again.

View File

@@ -236,7 +236,7 @@ SYSCALL_DEFINE1(memfd_secret, unsigned int, flags)
/* make sure local flags do not confict with global fcntl.h */
BUILD_BUG_ON(SECRETMEM_FLAGS_MASK & O_CLOEXEC);
if (!secretmem_enable)
if (!secretmem_enable || !can_set_direct_map())
return -ENOSYS;
if (flags & ~(SECRETMEM_FLAGS_MASK | O_CLOEXEC))
@@ -278,7 +278,7 @@ static struct file_system_type secretmem_fs = {
static int __init secretmem_init(void)
{
if (!secretmem_enable)
if (!secretmem_enable || !can_set_direct_map())
return 0;
secretmem_mnt = kern_mount(&secretmem_fs);

View File

@@ -385,6 +385,35 @@ void rtnl_unregister_all(int protocol)
}
EXPORT_SYMBOL_GPL(rtnl_unregister_all);
int __rtnl_register_many(const struct rtnl_msg_handler *handlers, int n)
{
const struct rtnl_msg_handler *handler;
int i, err;
for (i = 0, handler = handlers; i < n; i++, handler++) {
err = rtnl_register_internal(handler->owner, handler->protocol,
handler->msgtype, handler->doit,
handler->dumpit, handler->flags);
if (err) {
__rtnl_unregister_many(handlers, i);
break;
}
}
return err;
}
EXPORT_SYMBOL_GPL(__rtnl_register_many);
void __rtnl_unregister_many(const struct rtnl_msg_handler *handlers, int n)
{
const struct rtnl_msg_handler *handler;
int i;
for (i = n - 1, handler = handlers + n - 1; i >= 0; i--, handler--)
rtnl_unregister(handler->protocol, handler->msgtype);
}
EXPORT_SYMBOL_GPL(__rtnl_unregister_many);
static LIST_HEAD(link_ops);
static const struct rtnl_link_ops *rtnl_link_ops_get(const char *kind)

View File

@@ -357,7 +357,8 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_sub_if_data *sdata)
struct cfg80211_scan_request *req;
struct cfg80211_chan_def chandef;
u8 bands_used = 0;
int i, ielen, n_chans;
int i, ielen;
u32 *n_chans;
u32 flags = 0;
req = rcu_dereference_protected(local->scan_req,
@@ -367,34 +368,34 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_sub_if_data *sdata)
return false;
if (ieee80211_hw_check(&local->hw, SINGLE_SCAN_ON_ALL_BANDS)) {
local->hw_scan_req->req.n_channels = req->n_channels;
for (i = 0; i < req->n_channels; i++) {
local->hw_scan_req->req.channels[i] = req->channels[i];
bands_used |= BIT(req->channels[i]->band);
}
n_chans = req->n_channels;
} else {
do {
if (local->hw_scan_band == NUM_NL80211_BANDS)
return false;
n_chans = 0;
n_chans = &local->hw_scan_req->req.n_channels;
*n_chans = 0;
for (i = 0; i < req->n_channels; i++) {
if (req->channels[i]->band !=
local->hw_scan_band)
continue;
local->hw_scan_req->req.channels[n_chans] =
local->hw_scan_req->req.channels[(*n_chans)++] =
req->channels[i];
n_chans++;
bands_used |= BIT(req->channels[i]->band);
}
local->hw_scan_band++;
} while (!n_chans);
} while (!*n_chans);
}
local->hw_scan_req->req.n_channels = n_chans;
ieee80211_prepare_scan_chandef(&chandef, req->scan_width);
if (req->flags & NL80211_SCAN_FLAG_MIN_PREQ_CONTENT)

View File

@@ -677,10 +677,14 @@ static __init int mctp_init(void)
if (rc)
goto err_unreg_routes;
mctp_device_init();
rc = mctp_device_init();
if (rc)
goto err_unreg_neigh;
return 0;
err_unreg_neigh:
mctp_neigh_exit();
err_unreg_routes:
mctp_routes_exit();
err_unreg_proto:

View File

@@ -524,25 +524,31 @@ static struct notifier_block mctp_dev_nb = {
.priority = ADDRCONF_NOTIFY_PRIORITY,
};
void __init mctp_device_init(void)
{
register_netdevice_notifier(&mctp_dev_nb);
static const struct rtnl_msg_handler mctp_device_rtnl_msg_handlers[] = {
{THIS_MODULE, PF_MCTP, RTM_NEWADDR, mctp_rtm_newaddr, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_DELADDR, mctp_rtm_deladdr, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_GETADDR, NULL, mctp_dump_addrinfo, 0},
};
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_GETADDR,
NULL, mctp_dump_addrinfo, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_NEWADDR,
mctp_rtm_newaddr, NULL, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_DELADDR,
mctp_rtm_deladdr, NULL, 0);
int __init mctp_device_init(void)
{
int err;
register_netdevice_notifier(&mctp_dev_nb);
rtnl_af_register(&mctp_af_ops);
err = rtnl_register_many(mctp_device_rtnl_msg_handlers);
if (err) {
rtnl_af_unregister(&mctp_af_ops);
unregister_netdevice_notifier(&mctp_dev_nb);
}
return err;
}
void __exit mctp_device_exit(void)
{
rtnl_unregister_many(mctp_device_rtnl_msg_handlers);
rtnl_af_unregister(&mctp_af_ops);
rtnl_unregister(PF_MCTP, RTM_DELADDR);
rtnl_unregister(PF_MCTP, RTM_NEWADDR);
rtnl_unregister(PF_MCTP, RTM_GETADDR);
unregister_netdevice_notifier(&mctp_dev_nb);
}

View File

@@ -322,22 +322,29 @@ static struct pernet_operations mctp_net_ops = {
.exit = mctp_neigh_net_exit,
};
static const struct rtnl_msg_handler mctp_neigh_rtnl_msg_handlers[] = {
{THIS_MODULE, PF_MCTP, RTM_NEWNEIGH, mctp_rtm_newneigh, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_DELNEIGH, mctp_rtm_delneigh, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_GETNEIGH, NULL, mctp_rtm_getneigh, 0},
};
int __init mctp_neigh_init(void)
{
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_NEWNEIGH,
mctp_rtm_newneigh, NULL, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_DELNEIGH,
mctp_rtm_delneigh, NULL, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_GETNEIGH,
NULL, mctp_rtm_getneigh, 0);
int err;
return register_pernet_subsys(&mctp_net_ops);
err = register_pernet_subsys(&mctp_net_ops);
if (err)
return err;
err = rtnl_register_many(mctp_neigh_rtnl_msg_handlers);
if (err)
unregister_pernet_subsys(&mctp_net_ops);
return err;
}
void __exit mctp_neigh_exit(void)
void mctp_neigh_exit(void)
{
rtnl_unregister_many(mctp_neigh_rtnl_msg_handlers);
unregister_pernet_subsys(&mctp_net_ops);
rtnl_unregister(PF_MCTP, RTM_GETNEIGH);
rtnl_unregister(PF_MCTP, RTM_DELNEIGH);
rtnl_unregister(PF_MCTP, RTM_NEWNEIGH);
}

View File

@@ -1413,26 +1413,39 @@ static struct pernet_operations mctp_net_ops = {
.exit = mctp_routes_net_exit,
};
static const struct rtnl_msg_handler mctp_route_rtnl_msg_handlers[] = {
{THIS_MODULE, PF_MCTP, RTM_NEWROUTE, mctp_newroute, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_DELROUTE, mctp_delroute, NULL, 0},
{THIS_MODULE, PF_MCTP, RTM_GETROUTE, NULL, mctp_dump_rtinfo, 0},
};
int __init mctp_routes_init(void)
{
int err;
dev_add_pack(&mctp_packet_type);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_GETROUTE,
NULL, mctp_dump_rtinfo, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_NEWROUTE,
mctp_newroute, NULL, 0);
rtnl_register_module(THIS_MODULE, PF_MCTP, RTM_DELROUTE,
mctp_delroute, NULL, 0);
err = register_pernet_subsys(&mctp_net_ops);
if (err)
goto err_pernet;
return register_pernet_subsys(&mctp_net_ops);
err = rtnl_register_many(mctp_route_rtnl_msg_handlers);
if (err)
goto err_rtnl;
return 0;
err_rtnl:
unregister_pernet_subsys(&mctp_net_ops);
err_pernet:
dev_remove_pack(&mctp_packet_type);
return err;
}
void mctp_routes_exit(void)
{
rtnl_unregister_many(mctp_route_rtnl_msg_handlers);
unregister_pernet_subsys(&mctp_net_ops);
rtnl_unregister(PF_MCTP, RTM_DELROUTE);
rtnl_unregister(PF_MCTP, RTM_NEWROUTE);
rtnl_unregister(PF_MCTP, RTM_GETROUTE);
dev_remove_pack(&mctp_packet_type);
}

View File

@@ -26,6 +26,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPJoinAckRx", MPTCP_MIB_JOINACKRX),
SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
SNMP_MIB_ITEM("DSSCorruptionFallback", MPTCP_MIB_DSSCORRUPTIONFALLBACK),
SNMP_MIB_ITEM("DSSCorruptionReset", MPTCP_MIB_DSSCORRUPTIONRESET),
SNMP_MIB_ITEM("InfiniteMapTx", MPTCP_MIB_INFINITEMAPTX),
SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),

View File

@@ -19,6 +19,8 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */
MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */
MPTCP_MIB_DSSNOMATCH, /* Received a new mapping that did not match the previous one */
MPTCP_MIB_DSSCORRUPTIONFALLBACK,/* DSS corruption detected, fallback */
MPTCP_MIB_DSSCORRUPTIONRESET, /* DSS corruption detected, MPJ subflow reset */
MPTCP_MIB_INFINITEMAPTX, /* Sent an infinite mapping */
MPTCP_MIB_INFINITEMAPRX, /* Received an infinite mapping */
MPTCP_MIB_DSSTCPMISMATCH, /* DSS-mapping did not map with TCP's sequence numbers */

View File

@@ -864,7 +864,8 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp_sock *msk,
int how = RCV_SHUTDOWN | SEND_SHUTDOWN;
u8 id = subflow_get_local_id(subflow);
if (inet_sk_state_load(ssk) == TCP_CLOSE)
if ((1 << inet_sk_state_load(ssk)) &
(TCPF_FIN_WAIT1 | TCPF_FIN_WAIT2 | TCPF_CLOSING | TCPF_CLOSE))
continue;
if (rm_type == MPTCP_MIB_RMADDR && remote_id != rm_id)
continue;

View File

@@ -630,6 +630,18 @@ static bool mptcp_check_data_fin(struct sock *sk)
return ret;
}
static void mptcp_dss_corruption(struct mptcp_sock *msk, struct sock *ssk)
{
if (READ_ONCE(msk->allow_infinite_fallback)) {
MPTCP_INC_STATS(sock_net(ssk),
MPTCP_MIB_DSSCORRUPTIONFALLBACK);
mptcp_do_fallback(ssk);
} else {
MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSCORRUPTIONRESET);
mptcp_subflow_reset(ssk);
}
}
static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk,
struct sock *ssk,
unsigned int *bytes)
@@ -702,10 +714,16 @@ static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk,
moved += len;
seq += len;
if (WARN_ON_ONCE(map_remaining < len))
break;
if (unlikely(map_remaining < len)) {
DEBUG_NET_WARN_ON_ONCE(1);
mptcp_dss_corruption(msk, ssk);
}
} else {
WARN_ON_ONCE(!fin);
if (unlikely(!fin)) {
DEBUG_NET_WARN_ON_ONCE(1);
mptcp_dss_corruption(msk, ssk);
}
sk_eat_skb(ssk, skb);
done = true;
}

View File

@@ -855,8 +855,10 @@ static bool skb_is_fully_mapped(struct sock *ssk, struct sk_buff *skb)
unsigned int skb_consumed;
skb_consumed = tcp_sk(ssk)->copied_seq - TCP_SKB_CB(skb)->seq;
if (WARN_ON_ONCE(skb_consumed >= skb->len))
if (unlikely(skb_consumed >= skb->len)) {
DEBUG_NET_WARN_ON_ONCE(1);
return true;
}
return skb->len - skb_consumed <= subflow->map_data_len -
mptcp_subflow_get_map_offset(subflow);
@@ -1158,7 +1160,7 @@ static bool subflow_can_fallback(struct mptcp_subflow_context *subflow)
else if (READ_ONCE(msk->csum_enabled))
return !subflow->valid_csum_seen;
else
return !subflow->fully_established;
return READ_ONCE(msk->allow_infinite_fallback);
}
static void mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk)

View File

@@ -2122,8 +2122,9 @@ void __netlink_clear_multicast_users(struct sock *ksk, unsigned int group)
{
struct sock *sk;
struct netlink_table *tbl = &nl_table[ksk->sk_protocol];
struct hlist_node *tmp;
sk_for_each_bound(sk, &tbl->mc_list)
sk_for_each_bound_safe(sk, tmp, &tbl->mc_list)
netlink_update_socket_mc(nlk_sk(sk), group, 0);
}

View File

@@ -1538,8 +1538,13 @@ int __sock_create(struct net *net, int family, int type, int protocol,
rcu_read_unlock();
err = pf->create(net, sock, protocol, kern);
if (err < 0)
if (err < 0) {
/* ->create should release the allocated sock->sk object on error
* but it may leave the dangling pointer
*/
sock->sk = NULL;
goto out_module_put;
}
/*
* Now to bump the refcnt of the [loadable] module that owns this

View File

@@ -183,7 +183,11 @@ pub(crate) fn module(ts: TokenStream) -> TokenStream {
// freed until the module is unloaded.
#[cfg(MODULE)]
static THIS_MODULE: kernel::ThisModule = unsafe {{
kernel::ThisModule::from_ptr(&kernel::bindings::__this_module as *const _ as *mut _)
extern \"C\" {{
static __this_module: core::cell::UnsafeCell<kernel::bindings::module>;
}}
kernel::ThisModule::from_ptr(__this_module.get())
}};
#[cfg(not(MODULE))]
static THIS_MODULE: kernel::ThisModule = unsafe {{

View File

@@ -1660,6 +1660,7 @@ static int __cmd_contention(int argc, const char **argv)
if (IS_ERR(session)) {
pr_err("Initializing perf session failed\n");
err = PTR_ERR(session);
session = NULL;
goto out_delete;
}