Commit Graph

308 Commits

Author SHA1 Message Date
Greg Kroah-Hartman 036a0d8df2 Merge 6.12.34 into android16-6.12-lts
GKI (arm64) relevant 105 out of 506 changes, affecting 145 files +1290/-523
  623074162b sched: Fix trace_sched_switch(.prev_state) [1 file, +4/-2]
  781bbc8252 perf/core: Fix broken throttling when max_samples_per_tick=1 [1 file, +8/-8]
  451a18d71b sched/core: Tweak wait_task_inactive() to force dequeue sched_delayed tasks [1 file, +6/-0]
  5b814cde62 brd: fix aligned_sector from brd_do_discard() [1 file, +1/-1]
  48e11bcee9 brd: fix discard end sector [1 file, +6/-3]
  9cfca45aec erofs: fix file handle encoding for 64-bit NIDs [1 file, +36/-8]
  65115472f7 erofs: avoid using multiple devices with different type [1 file, +4/-1]
  58beaa1aee rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture [3 files, +10/-6]
  5ed92ad1b7 crypto: xts - Only add ecb if it is not already there [1 file, +2/-2]
  e9ecaeaf41 kunit: Fix wrong parameter to kunit_deactivate_static_stub() [1 file, +1/-1]
  9c094deb6b crypto: api - Redo lookup on EEXIST [1 file, +11/-2]
  81d72f9241 PM: EM: Fix potential division-by-zero error in em_compute_costs() [1 file, +4/-0]
  0426e92970 PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks() [1 file, +3/-0]
  77d45ba1be PM: sleep: Print PM debug messages during hibernation [3 files, +11/-1]
  45844a9403 ALSA: core: fix up bus match const issues. [4 files, +8/-8]
  fa65c89f3f arm64/fpsimd: Avoid RES0 bits in the SME trap handler [2 files, +9/-7]
  6103f9ba51 arm64/fpsimd: Discard stale CPU state when handling SME traps [1 file, +2/-0]
  945d247d1c arm64/fpsimd: Don't corrupt FPMR when streaming mode changes [1 file, +3/-3]
  55d52af498 arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP [1 file, +1/-1]
  2756dac036 arm64/fpsimd: Reset FPMR upon exec() [1 file, +3/-0]
  f5ffc750db arm64/fpsimd: Fix merging of FPSIMD state during signal return [1 file, +1/-1]
  0860d48b70 firmware: psci: Fix refcount leak in psci_dt_init [1 file, +3/-1]
  64a9ee6e11 arm64/fpsimd: Avoid warning when sve_to_fpsimd() is unused [1 file, +2/-2]
  b3cfc1f9f5 arm64/fpsimd: Do not discard modified SVE state [3 files, +47/-17]
  e55f46a11b overflow: Fix direct struct member initialization in _DEFINE_FLEX() [1 file, +3/-3]
  671dd1fb87 bpf: Check link_create.flags parameter for multi_kprobe [1 file, +3/-0]
  3a8e680f7d bpf, sockmap: fix duplicated data transmission [1 file, +9/-5]
  3d25fa2d7f bpf, sockmap: Fix panic when calling skb_linearize [1 file, +16/-15]
  44a51592ac f2fs: zone: fix to avoid inconsistence in between SIT and SSA [1 file, +3/-0]
  4f51fb0d25 page_pool: Track DMA-mapped pages and unmap them when destroying the pool [5 files, +147/-18]
  88f65bb66d iommu: Protect against overflow in iommu_pgsize() [1 file, +3/-1]
  04daca6012 f2fs: clean up w/ fscrypt_is_bounce_page() [1 file, +1/-1]
  4248ba53e4 f2fs: fix to detect gcing page in f2fs_is_cp_guaranteed() [1 file, +1/-1]
  c1f418cc27 bpf: Allow XDP dev-bound programs to perform XDP_REDIRECT into maps [1 file, +16/-11]
  e53a8dcd36 tracing: Move histogram trigger variables from stack to per CPU structure [1 file, +105/-15]
  69a995644a efi/libstub: Describe missing 'out' parameter in efi_load_initrd [1 file, +1/-0]
  709412b92a tracing: Fix error handling in event_trigger_parse() [1 file, +2/-2]
  c98cdf6795 bpf: Fix WARN() in get_bpf_raw_tp_regs [1 file, +1/-1]
  e0657136ae scsi: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort() [1 file, +0/-6]
  6bfb154f95 kernfs: Relax constraint in draining guard [2 files, +5/-3]
  df00f9147e Bluetooth: ISO: Fix not using SID from adv report [5 files, +75/-14]
  1d249cc92d bpf: Revert "bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic" [1 file, +2/-0]
  1750c3f1d9 Bluetooth: MGMT: iterate over mesh commands in mgmt_mesh_foreach() [1 file, +1/-1]
  15c0250dae bpf, sockmap: Avoid using sk_socket after free when sending [1 file, +8/-0]
  30a9e834c7 net: usb: aqc111: fix error handling of usbnet read calls [1 file, +8/-2]
  7893a41dea vsock/virtio: fix `rx_bytes` accounting for stream sockets [2 files, +17/-10]
  2bc6dffb4b bpf: Avoid __bpf_prog_ret0_warn when jit fails [1 file, +1/-1]
  ddc654e89a net: phy: clear phydev->devlink when the link is deleted [1 file, +3/-1]
  f15ed37dd3 net: phy: fix up const issues in to_mdio_device() and to_phy_device() [2 files, +2/-8]
  532601e783 f2fs: use d_inode(dentry) cleanup dentry->d_inode [2 files, +6/-6]
  0befc3005d f2fs: fix to correct check conditions in f2fs_cross_rename [1 file, +1/-1]
  2eeb181e76 dm: don't change md if dm_table_set_restrictions() fails [1 file, +12/-10]
  48e0b54be4 dm: free table mempools if not used in __bind [1 file, +4/-4]
  17e4b0fcd2 PCI: Print the actual delay time in pci_bridge_wait_for_secondary_bus() [1 file, +1/-1]
  0a3e2ec508 PCI: endpoint: Retain fixed-size BAR size as well as aligned size [2 files, +18/-7]
  9f40ae8310 USB: gadget: udc: fix const issue in gadget_match_driver() [1 file, +1/-1]
  4bd30962f3 USB: typec: fix const issue in typec_match() [1 file, +1/-1]
  3091d4c0d0 loop: add file_start_write() and file_end_write() [1 file, +6/-2]
  90891eadb8 Fix sock_exceed_buf_limit not being triggered in __sk_mem_raise_allocated [1 file, +4/-4]
  e869a85acc page_pool: Fix use-after-free in page_pool_recycle_in_ring [1 file, +14/-13]
  c762fc79d7 net: tipc: fix refcount warning in tipc_aead_encrypt [1 file, +5/-1]
  b788cebf72 Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION [1 file, +2/-1]
  4399f59a94 net: fix udp gso skb_segment after pull from frag_list [1 file, +5/-0]
  0cffc6e40d PM: sleep: Fix power.is_suspended cleanup for direct-complete devices [1 file, +2/-1]
  f34dc858e6 netfilter: nf_nat: also check reverse tuple to obtain clashing entry [1 file, +9/-3]
  4f0fcdb835 wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements [4 files, +83/-32]
  933466fc50 wireguard: device: enable threaded NAPI [1 file, +1/-0]
  1be1f3b848 iov_iter: use iov_offset for length calculation in iov_iter_aligned_bvec [1 file, +1/-1]
  1d79230719 path_overmount(): avoid false negatives [1 file, +13/-6]
  e1d02fe504 fix propagation graph breakage by MOVE_MOUNT_SET_GROUP move_mount(2) [1 file, +1/-1]
  9c1ddfeb66 do_change_type(): refuse to operate on unmounted/not ours mounts [1 file, +4/-0]
  80f7c5be4f pmdomain: core: Introduce dev_pm_genpd_rpm_always_on() [2 files, +42/-0]
  3464a707d1 scsi: core: ufs: Fix a hang in the error handler [1 file, +6/-1]
  99e3d69853 Bluetooth: hci_core: fix list_for_each_entry_rcu usage [1 file, +3/-8]
  9df3e5e7f7 Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete [3 files, +12/-30]
  84ab1283eb Bluetooth: MGMT: Remove unused mgmt_pending_find_data [2 files, +0/-21]
  4e83f2dbb2 Bluetooth: MGMT: Protect mgmt_pending list with its own lock [5 files, +80/-59]
  d1bc80da75 net_sched: sch_sfq: fix a potential crash on gso_skb handling [1 file, +4/-1]
  1e0de7582c net: Fix TOCTOU issue in sk_is_readable() [1 file, +5/-2]
  78fa7b723e macsec: MACsec SCI assignment for ES = 0 [1 file, +34/-6]
  b02d9d2732 net/mdiobus: Fix potential out-of-bounds read/write access [1 file, +6/-0]
  31bf7b2b92 net/mdiobus: Fix potential out-of-bounds clause 45 read/write access [1 file, +6/-0]
  842f7c3154 Bluetooth: Fix NULL pointer deference on eir_get_service_data [1 file, +6/-4]
  907ef6e12f Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance [1 file, +15/-5]
  2af40d795d Bluetooth: eir: Fix possible crashes on eir_create_adv_data [3 files, +8/-6]
  7a41744e38 Bluetooth: MGMT: Fix sparse errors [1 file, +2/-2]
  e3f6745006 net_sched: prio: fix a race in prio_tune() [1 file, +1/-1]
  180b12eafa net_sched: tbf: fix a race in tbf_change() [1 file, +1/-1]
  0a2500782f fs/filesystems: Fix potential unsigned integer underflow in fs_name() [1 file, +9/-5]
  f351bb3085 perf: Ensure bpf_perf_link path is properly serialized [1 file, +30/-4]
  a5c7b61eed block: use q->elevator with ->elevator_lock held in elv_iosched_show() [1 file, +1/-2]
  af8c13f9ee io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo() [2 files, +14/-7]
  0fccb6773b block: don't use submit_bio_noacct_nocheck in blk_zone_wplug_bio_work [1 file, +5/-2]
  48f33ec141 io_uring: consistently use rcu semantics with sqpoll thread [4 files, +38/-15]
  a9022c8631 bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP [1 file, +1/-1]
  4b1ef15ffd block: Fix bvec_set_folio() for very large folios [1 file, +5/-2]
  84e9f0a2c2 ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1 [1 file, +1/-0]
  c29d531870 posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() [1 file, +9/-0]
  657003ced7 usb: Flush altsetting 0 endpoints before reinitializating them after reset. [1 file, +14/-2]
  7bdd712abe usb: typec: tcpm: move tcpm_queue_vdm_unlocked to asynchronous work [1 file, +71/-20]
  b8df8cb8f7 ring-buffer: Do not trigger WARN_ON() due to a commit_overrun [1 file, +18/-8]
  e09c0600be ring-buffer: Fix buffer locking in ring_buffer_subbuf_order_set() [1 file, +1/-3]
  2d6a6cfe96 ring-buffer: Move cpus_read_lock() outside of buffer->mutex [1 file, +6/-5]
  5ed1d7a700 net: usb: aqc111: debug info before sanitation [1 file, +4/-4]
  ab20b0bdb0 overflow: Introduce __DEFINE_FLEX for having no initializer [1 file, +19/-6]

Changes in 6.12.34
	tools/x86/kcpuid: Fix error handling
	x86/idle: Remove MFENCEs for X86_BUG_CLFLUSH_MONITOR in mwait_idle_with_hints() and prefer_mwait_c1_over_halt()
	crypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run()
	sched: Fix trace_sched_switch(.prev_state)
	perf/x86/amd/uncore: Remove unused 'struct amd_uncore_ctx::node' member
	perf/x86/amd/uncore: Prevent UMC counters from saturating
	gfs2: replace sd_aspace with sd_inode
	gfs2: gfs2_create_inode error handling fix
	perf/core: Fix broken throttling when max_samples_per_tick=1
	crypto: sun8i-ce-cipher - fix error handling in sun8i_ce_cipher_prepare()
	crypto: sun8i-ss - do not use sg_dma_len before calling DMA functions
	powerpc: do not build ppc_save_regs.o always
	powerpc/crash: Fix non-smp kexec preparation
	sched/core: Tweak wait_task_inactive() to force dequeue sched_delayed tasks
	x86/microcode/AMD: Do not return error when microcode update is not necessary
	crypto: sun8i-ce - undo runtime PM changes during driver removal
	x86/cpu: Sanitize CPUID(0x80000000) output
	x86/insn: Fix opcode map (!REX2) superscript tags
	brd: fix aligned_sector from brd_do_discard()
	brd: fix discard end sector
	kselftest: cpufreq: Get rid of double suspend in rtcwake case
	crypto: marvell/cesa - Handle zero-length skcipher requests
	crypto: marvell/cesa - Avoid empty transfer descriptor
	erofs: fix file handle encoding for 64-bit NIDs
	erofs: avoid using multiple devices with different type
	powerpc/pseries/iommu: Fix kmemleak in TCE table userspace view
	btrfs: scrub: update device stats when an error is detected
	btrfs: scrub: fix a wrong error type when metadata bytenr mismatches
	btrfs: fix invalid data space release when truncating block in NOCOW mode
	rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture
	crypto: lrw - Only add ecb if it is not already there
	crypto: xts - Only add ecb if it is not already there
	crypto: sun8i-ce - move fallback ahash_request to the end of the struct
	kunit: Fix wrong parameter to kunit_deactivate_static_stub()
	crypto: api - Redo lookup on EEXIST
	ACPICA: exserial: don't forget to handle FFixedHW opregions for reading
	ASoC: tas2764: Enable main IRQs
	ASoC: mediatek: mt8195: Set ETDM1/2 IN/OUT to COMP_DUMMY()
	EDAC/skx_common: Fix general protection fault
	EDAC/{skx_common,i10nm}: Fix the loss of saved RRL for HBM pseudo channel 0
	spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4 transfers
	spi: tegra210-quad: remove redundant error handling code
	spi: tegra210-quad: modify chip select (CS) deactivation
	power: reset: at91-reset: Optimize at91_reset()
	PM: EM: Fix potential division-by-zero error in em_compute_costs()
	ASoC: SOF: ipc4-pcm: Adjust pipeline_list->pipelines allocation type
	ASoC: SOF: amd: add missing acp descriptor field
	PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks()
	ACPI: resource: fix a typo for MECHREVO in irq1_edge_low_force_override[]
	x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges()
	PM: sleep: Print PM debug messages during hibernation
	thermal/drivers/mediatek/lvts: Fix debugfs unregister on failure
	ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions"
	spi: sh-msiof: Fix maximum DMA transfer size
	ASoC: apple: mca: Constrain channels according to TDM mask
	ALSA: core: fix up bus match const issues.
	drm/vmwgfx: Add seqno waiter for sync_files
	drm/vmwgfx: Add error path for xa_store in vmw_bo_add_detached_resource
	drm/vmwgfx: Fix dumb buffer leak
	drm/xe/d3cold: Set power state to D3Cold during s2idle/s3
	drm/vc4: tests: Use return instead of assert
	drm/amd/pp: Fix potential NULL pointer dereference in atomctrl_initialize_mc_reg_table
	media: rkvdec: Fix frame size enumeration
	arm64/fpsimd: Avoid RES0 bits in the SME trap handler
	arm64/fpsimd: Discard stale CPU state when handling SME traps
	arm64/fpsimd: Don't corrupt FPMR when streaming mode changes
	arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP
	arm64/fpsimd: Reset FPMR upon exec()
	arm64/fpsimd: Fix merging of FPSIMD state during signal return
	drm/panthor: Fix GPU_COHERENCY_ACE[_LITE] definitions
	drm/panthor: Update panthor_mmu::irq::mask when needed
	perf: arm-ni: Unregister PMUs on probe failure
	perf: arm-ni: Fix missing platform_set_drvdata()
	drm/panel: samsung-sofef00: Drop s6e3fc2x01 support
	drm/bridge: lt9611uxc: Fix an error handling path in lt9611uxc_probe()
	fs/ntfs3: handle hdr_first_de() return value
	fs/ntfs3: Add missing direct_IO in ntfs_aops_cmpr
	kunit/usercopy: Disable u64 test on 32-bit SPARC
	watchdog: exar: Shorten identity name to fit correctly
	m68k: mac: Fix macintosh_config for Mac II
	firmware: psci: Fix refcount leak in psci_dt_init
	arm64: Support ARM64_VA_BITS=52 when setting ARCH_MMAP_RND_BITS_MAX
	arm64/fpsimd: Avoid warning when sve_to_fpsimd() is unused
	selftests/seccomp: fix syscall_restart test for arm compat
	drm/msm/dpu: enable SmartDMA on SM8150
	drm/msm/dpu: enable SmartDMA on SC8180X
	drm: rcar-du: Fix memory leak in rcar_du_vsps_init()
	drm/vkms: Adjust vkms_state->active_planes allocation type
	drm/tegra: rgb: Fix the unbound reference count
	firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES
	arm64/fpsimd: Do not discard modified SVE state
	overflow: Fix direct struct member initialization in _DEFINE_FLEX()
	scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops
	perf/amlogic: Replace smp_processor_id() with raw_smp_processor_id() in meson_ddr_pmu_create()
	selftests/seccomp: fix negative_ENOSYS tracer tests on arm32
	drm/msm/a6xx: Disable rgb565_predicator on Adreno 7c3
	drm/mediatek: mtk_drm_drv: Fix kobject put for mtk_mutex device ptr
	drm/mediatek: Fix kobject put for component sub-drivers
	drm/mediatek: mtk_drm_drv: Unbind secondary mmsys components on err
	media: verisilicon: Free post processor buffers on error
	svcrdma: Reduce the number of rdma_rw contexts per-QP
	xen/x86: fix initial memory balloon target
	wifi: ath11k: fix node corruption in ar->arvifs list
	wifi: ath12k: Fix memory leak during vdev_id mismatch
	wifi: ath12k: Fix invalid memory access while forming 802.11 header
	IB/cm: use rwlock for MAD agent lock
	bpf: Check link_create.flags parameter for multi_kprobe
	selftests/bpf: Fix bpf_nf selftest failure
	bpf: fix ktls panic with sockmap
	bpf, sockmap: fix duplicated data transmission
	bpf, sockmap: Fix panic when calling skb_linearize
	f2fs: zone: fix to avoid inconsistence in between SIT and SSA
	wifi: ath12k: fix cleanup path after mhi init
	wifi: ath12k: Fix WMI tag for EHT rate in peer assoc
	wifi: ath12k: Fix buffer overflow in debugfs
	f2fs: clean up unnecessary indentation
	f2fs: prevent the current section from being selected as a victim during GC
	f2fs: fix to do sanity check on sbi->total_valid_block_count
	page_pool: Move pp_magic check into helper functions
	page_pool: Track DMA-mapped pages and unmap them when destroying the pool
	net: ncsi: Fix GCPS 64-bit member variables
	libbpf: Fix buffer overflow in bpf_object__init_prog
	net/mlx5: Avoid using xso.real_dev unnecessarily
	xfrm: Use xdo.dev instead of xdo.real_dev
	wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT
	wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status unconditionally
	wifi: rtw88: do not ignore hardware read error during DPK
	wifi: ath12k: fix invalid access to memory
	wifi: ath12k: Add MSDU length validation for TKIP MIC error
	wifi: ath12k: Fix the QoS control field offset to build QoS header
	wifi: ath12k: fix node corruption in ar->arvifs list
	RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h
	scsi: hisi_sas: Call I_T_nexus after soft reset for SATA disk
	libbpf: Fix event name too long error
	libbpf: Remove sample_period init in perf_buffer
	Use thread-safe function pointer in libbpf_print
	iommu: Protect against overflow in iommu_pgsize()
	bonding: assign random address if device address is same as bond
	f2fs: clean up w/ fscrypt_is_bounce_page()
	f2fs: fix to detect gcing page in f2fs_is_cp_guaranteed()
	scsi: smartpqi: Fix smp_processor_id() call trace for preemptible kernels
	libbpf: Use proper errno value in linker
	bpf: Allow XDP dev-bound programs to perform XDP_REDIRECT into maps
	netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it
	netfilter: nft_quota: match correctly when the quota just depleted
	netfilter: nft_set_pipapo: prevent overflow in lookup table allocation
	RDMA/mlx5: Fix error flow upon firmware failure for RQ destruction
	bpf: Fix uninitialized values in BPF_{CORE,PROBE}_READ
	tracing: Move histogram trigger variables from stack to per CPU structure
	clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
	clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
	clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
	clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
	bpftool: Fix regression of "bpftool cgroup tree" EINVAL on older kernels
	clk: bcm: rpi: Add NULL check in raspberrypi_clk_register()
	wifi: iwlfiwi: mvm: Fix the rate reporting
	efi/libstub: Describe missing 'out' parameter in efi_load_initrd
	selftests/bpf: Fix caps for __xlated/jited_unpriv
	tracing: Rename event_trigger_alloc() to trigger_data_alloc()
	tracing: Fix error handling in event_trigger_parse()
	of: unittest: Unlock on error in unittest_data_add()
	ktls, sockmap: Fix missing uncharge operation
	libbpf: Use proper errno value in nlattr
	pinctrl: at91: Fix possible out-of-boundary access
	bpf: Fix WARN() in get_bpf_raw_tp_regs
	dt-bindings: soc: fsl,qman-fqd: Fix reserved-memory.yaml reference
	clk: qcom: gcc-msm8939: Fix mclk0 & mclk1 for 24 MHz
	s390/bpf: Store backchain even for leaf progs
	wifi: rtw89: pci: enlarge retry times of RX tag to 1000
	wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds
	wifi: rtw89: fix firmware scan delay unit for WiFi 6 chips
	iommu: remove duplicate selection of DMAR_TABLE
	wifi: ath12k: fix memory leak in ath12k_service_ready_ext_event
	hisi_acc_vfio_pci: fix XQE dma address error
	hisi_acc_vfio_pci: add eq and aeq interruption restore
	hisi_acc_vfio_pci: bugfix live migration function without VF device driver
	wifi: ath9k_htc: Abort software beacon handling if disabled
	scsi: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort()
	kernfs: Relax constraint in draining guard
	Bluetooth: ISO: Fix not using SID from adv report
	wifi: mt76: mt7996: Fix null-ptr-deref in mt7996_mmio_wed_init()
	wifi: mt76: mt7915: Fix null-ptr-deref in mt7915_mmio_wed_init()
	wifi: mt76: mt7925: prevent multiple scan commands
	wifi: mt76: mt7925: refine the sniffer commnad
	wifi: mt76: mt7925: ensure all MCU commands wait for response
	wifi: mt76: mt7996: set EHT max ampdu length capability
	wifi: mt76: mt7996: fix RX buffer size of MCU event
	bpf: Revert "bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic"
	netfilter: xtables: support arpt_mark and ipv6 optstrip for iptables-nft only builds
	netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy
	vfio/type1: Fix error unwind in migration dirty bitmap allocation
	Bluetooth: MGMT: iterate over mesh commands in mgmt_mesh_foreach()
	Bluetooth: btintel: Check dsbr size from EFI variable
	bpf, sockmap: Avoid using sk_socket after free when sending
	netfilter: nf_tables: nft_fib: consistent l3mdev handling
	netfilter: nft_tunnel: fix geneve_opt dump
	RISC-V: KVM: lock the correct mp_state during reset
	net: usb: aqc111: fix error handling of usbnet read calls
	vsock/virtio: fix `rx_bytes` accounting for stream sockets
	RDMA/cma: Fix hang when cma_netevent_callback fails to queue_work
	net: lan966x: Fix 1-step timestamping over ipv4 or ipv6
	net: xilinx: axienet: Fix Tx skb circular buffer occupancy check in dmaengine xmit
	bpf: Avoid __bpf_prog_ret0_warn when jit fails
	net: phy: clear phydev->devlink when the link is deleted
	net: phy: fix up const issues in to_mdio_device() and to_phy_device()
	net: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy
	net: lan743x: Fix PHY reset handling during initialization and WOL
	net: phy: mscc: Fix memory leak when using one step timestamping
	octeontx2-pf: QOS: Perform cache sync on send queue teardown
	octeontx2-pf: QOS: Refactor TC_HTB_LEAF_DEL_LAST callback
	calipso: Don't call calipso functions for AF_INET sk.
	net: openvswitch: Fix the dead loop of MPLS parse
	net: phy: mscc: Stop clearing the the UDPv4 checksum for L2 frames
	f2fs: use d_inode(dentry) cleanup dentry->d_inode
	f2fs: fix to correct check conditions in f2fs_cross_rename
	arm64: dts: qcom: x1e80100: Mark usb_2 as dma-coherent
	arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures
	arm64: dts: qcom: sm8650: add missing cpu-cfg interconnect path in the mdss node
	arm64: dts: qcom: x1e80100-romulus: Keep L12B and L15B always on
	arm64: dts: qcom: sdm845-starqltechn: remove wifi
	arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake
	arm64: dts: qcom: sdm845-starqltechn: refactor node order
	arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios
	arm64: dts: qcom: sm8350: Reenable crypto & cryptobam
	arm64: dts: qcom: sm8250: Fix CPU7 opp table
	arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies
	arm64: dts: qcom: ipq9574: Fix USB vdd info
	arm64: dts: rockchip: Move SHMEM memory to reserved memory on rk3588
	ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select
	ARM: dts: at91: at91sam9263: fix NAND chip selects
	arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power domains
	arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card detect GPIO
	arm64: dts: mt8183: Add port node to mt8183.dtsi
	arm64: dts: imx8mm-beacon: Fix RTC capacitive load
	arm64: dts: imx8mn-beacon: Fix RTC capacitive load
	arm64: dts: imx8mp-beacon: Fix RTC capacitive load
	arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for HDMI audio
	arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for HDMI audio
	arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles
	arm64: dts: mt6359: Add missing 'compatible' property to regulators node
	arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply
	arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning
	arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-rock3c
	arm64: dts: rockchip: Update eMMC for NanoPi R5 series
	arm64: tegra: Drop remaining serial clock-names and reset-names
	arm64: tegra: Add uartd serial alias for Jetson TX1 module
	arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E
	soc: qcom: smp2p: Fix fallback to qcom,ipc parse
	Squashfs: check return result of sb_min_blocksize
	ocfs2: fix possible memory leak in ocfs2_finish_quota_recovery
	nilfs2: add pointer check for nilfs_direct_propagate()
	nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()
	bus: fsl-mc: fix double-free on mc_dev
	dt-bindings: vendor-prefixes: Add Liontron name
	ARM: dts: qcom: apq8064: add missing clocks to the timer node
	ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device
	ARM: dts: qcom: apq8064: move replicator out of soc node
	arm64: defconfig: mediatek: enable PHY drivers
	arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou
	arm64: dts: qcom: qcm2290: fix (some) of QUP interconnects
	arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups
	arm64: dts: mt6359: Rename RTC node to match binding expectations
	ARM: aspeed: Don't select SRAM
	soc: aspeed: lpc: Fix impossible judgment condition
	soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop()
	fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod()
	randstruct: gcc-plugin: Remove bogus void member
	randstruct: gcc-plugin: Fix attribute addition
	perf build: Warn when libdebuginfod devel files are not available
	perf ui browser hists: Set actions->thread before calling do_zoom_thread()
	dm: don't change md if dm_table_set_restrictions() fails
	dm: free table mempools if not used in __bind
	backlight: pm8941: Add NULL check in wled_configure()
	x86/irq: Ensure initial PIR loads are performed exactly once
	mtd: nand: ecc-mxic: Fix use of uninitialized variable ret
	hwmon: (asus-ec-sensors) check sensor index in read_string()
	perf symbol-minimal: Fix double free in filename__read_build_id
	dm: fix dm_blk_report_zones
	dm-flakey: error all IOs when num_features is absent
	dm-flakey: make corrupting read bios work
	perf trace: Fix leaks of 'struct thread' in set_filter_loop_pids()
	perf tests: Fix 'perf report' tests installation
	perf intel-pt: Fix PEBS-via-PT data_src
	perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3
	remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe
	remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick}
	remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick}
	rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send()
	mfd: exynos-lpass: Fix an error handling path in exynos_lpass_probe()
	mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove()
	mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE
	perf tests switch-tracking: Fix timestamp comparison
	mailbox: imx: Fix TXDB_V2 sending
	mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting
	perf symbol: Fix use-after-free in filename__read_build_id
	perf record: Fix incorrect --user-regs comments
	perf trace: Always print return value for syscalls returning a pid
	nfs: clear SB_RDONLY before getting superblock
	nfs: ignore SB_RDONLY when remounting nfs
	perf trace: Set errpid to false for rseq and set_robust_list
	perf callchain: Always populate the addr_location map when adding IP
	cifs: Fix validation of SMB1 query reparse point response
	rust: alloc: add missing invariant in Vec::set_len()
	rtc: sh: assign correct interrupts with DT
	phy: rockchip: samsung-hdptx: Fix clock ratio setup
	phy: rockchip: samsung-hdptx: Do no set rk_hdptx_phy->rate in case of errors
	PCI: Print the actual delay time in pci_bridge_wait_for_secondary_bus()
	PCI: rcar-gen4: set ep BAR4 fixed size
	PCI: cadence: Fix runtime atomic count underflow
	PCI: apple: Use gpiod_set_value_cansleep in probe flow
	phy: qcom-qmp-usb: Fix an NULL vs IS_ERR() bug
	dmaengine: ti: Add NULL check in udma_probe()
	PCI/ACPI: Fix allocated memory release on error in pci_acpi_scan_root()
	PCI/DPC: Initialize aer_err_info before using it
	PCI/DPC: Log Error Source ID only when valid
	rtc: loongson: Add missing alarm notifications for ACPI RTC events
	PCI: endpoint: Retain fixed-size BAR size as well as aligned size
	usb: renesas_usbhs: Reorder clock handling and power management in probe
	serial: Fix potential null-ptr-deref in mlb_usio_probe()
	thunderbolt: Fix a logic error in wake on connect
	iio: filter: admv8818: fix band 4, state 15
	iio: filter: admv8818: fix integer overflow
	iio: filter: admv8818: fix range calculation
	iio: filter: admv8818: Support frequencies >= 2^32
	iio: adc: ad7124: Fix 3dB filter frequency reading
	usb: acpi: Prevent null pointer dereference in usb_acpi_add_usb4_devlink()
	MIPS: Loongson64: Add missing '#interrupt-cells' for loongson64c_ls7a
	coresight: Fixes device's owner field for registered using coresight_init_driver()
	coresight: catu: Introduce refcount and spinlock for enabling/disabling
	counter: interrupt-cnt: Protect enable/disable OPs with mutex
	fpga: fix potential null pointer deref in fpga_mgr_test_img_load_sgt()
	coresight: prevent deactivate active config while enabling the config
	vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl()
	mei: vsc: Cast tx_buf to (__be32 *) when passed to cpu_to_be32_array()
	iio: adc: PAC1934: fix typo in documentation link
	iio: adc: mcp3911: fix device dependent mappings for conversion result registers
	USB: gadget: udc: fix const issue in gadget_match_driver()
	USB: typec: fix const issue in typec_match()
	loop: add file_start_write() and file_end_write()
	drm/xe: Make xe_gt_freq part of the Documentation
	Fix sock_exceed_buf_limit not being triggered in __sk_mem_raise_allocated
	page_pool: Fix use-after-free in page_pool_recycle_in_ring
	net: stmmac: platform: guarantee uniqueness of bus_id
	gve: Fix RX_BUFFERS_POSTED stat to report per-queue fill_cnt
	net: tipc: fix refcount warning in tipc_aead_encrypt
	driver: net: ethernet: mtk_star_emac: fix suspend/resume issue
	net/mlx4_en: Prevent potential integer overflow calculating Hz
	net: lan966x: Make sure to insert the vlan tags also in host mode
	spi: bcm63xx-spi: fix shared reset
	spi: bcm63xx-hsspi: fix shared reset
	Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION
	ice: fix Tx scheduler error handling in XDP callback
	ice: create new Tx scheduler nodes for new queues only
	ice: fix rebuilding the Tx scheduler tree for large queue counts
	idpf: fix a race in txq wakeup
	idpf: avoid mailbox timeout delays during reset
	net: dsa: tag_brcm: legacy: fix pskb_may_pull length
	net: stmmac: make sure that ptp_rate is not 0 before configuring timestamping
	net: stmmac: make sure that ptp_rate is not 0 before configuring EST
	drm/i915/guc: Check if expecting reply before decrementing outstanding_submission_g2h
	drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
	drm/i915/guc: Handle race condition where wakeref count drops below 0
	net: fix udp gso skb_segment after pull from frag_list
	net: wwan: t7xx: Fix napi rx poll issue
	vmxnet3: correctly report gso type for UDP tunnels
	selftests: net: build net/lib dependency in all target
	PM: sleep: Fix power.is_suspended cleanup for direct-complete devices
	nvme: fix command limits status code
	gve: add missing NULL check for gve_alloc_pending_packet() in TX DQO
	drm/panel-simple: fix the warnings for the Evervision VGG644804
	netfilter: nf_set_pipapo_avx2: fix initial map fill
	netfilter: nf_nat: also check reverse tuple to obtain clashing entry
	net: ti: icssg-prueth: Fix swapped TX stats for MII interfaces.
	net: dsa: b53: do not enable RGMII delay on bcm63xx
	net: dsa: b53: allow RGMII for bcm63xx RGMII ports
	net: dsa: b53: do not touch DLL_IQQD on bcm53115
	wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements
	net: wwan: mhi_wwan_mbim: use correct mux_id for multiplexing
	wireguard: device: enable threaded NAPI
	seg6: Fix validation of nexthop addresses
	riscv: misaligned: fix sleeping function called during misaligned access handling
	scsi: ufs: qcom: Prevent calling phy_exit() before phy_init()
	ASoC: codecs: hda: Fix RPM usage count underflow
	ASoC: Intel: avs: Fix deadlock when the failing IPC is SET_D0IX
	ASoC: Intel: avs: Verify content returned by parse_int_array()
	ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init
	iov_iter: use iov_offset for length calculation in iov_iter_aligned_bvec
	path_overmount(): avoid false negatives
	fix propagation graph breakage by MOVE_MOUNT_SET_GROUP move_mount(2)
	do_change_type(): refuse to operate on unmounted/not ours mounts
	tools/power turbostat: Fix AMD package-energy reporting
	ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3315
	ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3247
	ALSA: hda/realtek: Add support for various HP Laptops using CS35L41 HDA
	ALSA: hda/realtek - Support mute led function for HP platform
	ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup
	ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA
	Input: synaptics-rmi - fix crash with unsupported versions of F34
	pmdomain: core: Introduce dev_pm_genpd_rpm_always_on()
	mmc: sdhci-of-dwcmshc: add PD workaround on RK3576
	arm64: dts: qcom: x1e80100: Apply consistent critical thermal shutdown
	arm64: dts: qcom: x1e80100: Add GPU cooling
	pinctrl: samsung: refactor drvdata suspend & resume callbacks
	pinctrl: samsung: add dedicated SoC eint suspend/resume callbacks
	pinctrl: samsung: add gs101 specific eint suspend/resume callbacks
	dt-bindings: pwm: adi,axi-pwmgen: Increase #pwm-cells to 3
	dt-bindings: pwm: Correct indentation and style in DTS example
	dt-bindings: pwm: adi,axi-pwmgen: Fix clocks
	serial: sh-sci: Move runtime PM enable to sci_probe_single()
	scsi: core: ufs: Fix a hang in the error handler
	Bluetooth: hci_core: fix list_for_each_entry_rcu usage
	Bluetooth: btintel_pcie: Fix driver not posting maximum rx buffers
	Bluetooth: btintel_pcie: Increase the tx and rx descriptor count
	Bluetooth: btintel_pcie: Reduce driver buffer posting to prevent race condition
	Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete
	Bluetooth: MGMT: Remove unused mgmt_pending_find_data
	Bluetooth: MGMT: Protect mgmt_pending list with its own lock
	net: dsa: b53: fix untagged traffic sent via cpu tagged with VID 0
	ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()
	ath10k: snoc: fix unbalanced IRQ enable in crash recovery
	wifi: ath11k: convert timeouts to secs_to_jiffies()
	wifi: ath11k: avoid burning CPU in ath11k_debugfs_fw_stats_request()
	wifi: ath11k: don't use static variables in ath11k_debugfs_fw_stats_process()
	wifi: ath11k: don't wait when there is no vdev started
	wifi: ath11k: move some firmware stats related functions outside of debugfs
	wifi: ath11k: validate ath11k_crypto_mode on top of ath11k_core_qmi_firmware_ready
	wifi: ath12k: refactor ath12k_hw_regs structure
	wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850
	regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
	spi: omap2-mcspi: Disable multi mode when CS should be kept asserted after message
	spi: omap2-mcspi: Disable multi-mode when the previous message kept CS asserted
	pinctrl: qcom: pinctrl-qcm2290: Add missing pins
	scsi: iscsi: Fix incorrect error path labels for flashnode operations
	net_sched: sch_sfq: fix a potential crash on gso_skb handling
	powerpc/powernv/memtrace: Fix out of bounds issue in memtrace mmap
	powerpc/vas: Return -EINVAL if the offset is non-zero in mmap()
	drm/meson: use unsigned long long / Hz for frequency types
	drm/meson: fix debug log statement when setting the HDMI clocks
	drm/meson: use vclk_freq instead of pixel_freq in debug print
	drm/meson: fix more rounding issues with 59.94Hz modes
	i40e: return false from i40e_reset_vf if reset is in progress
	i40e: retry VFLR handling if there is ongoing VF reset
	ACPI: CPPC: Fix NULL pointer dereference when nosmp is used
	net: Fix TOCTOU issue in sk_is_readable()
	macsec: MACsec SCI assignment for ES = 0
	net/mdiobus: Fix potential out-of-bounds read/write access
	net/mdiobus: Fix potential out-of-bounds clause 45 read/write access
	Bluetooth: Fix NULL pointer deference on eir_get_service_data
	Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance
	Bluetooth: eir: Fix possible crashes on eir_create_adv_data
	Bluetooth: MGMT: Fix sparse errors
	net/mlx5: Ensure fw pages are always allocated on same NUMA
	net/mlx5: Fix ECVF vports unload on shutdown flow
	net/mlx5: Fix return value when searching for existing flow group
	net/mlx5: HWS, fix missing ip_version handling in definer
	net/mlx5e: Fix leak of Geneve TLV option object
	net_sched: prio: fix a race in prio_tune()
	net_sched: red: fix a race in __red_change()
	net_sched: tbf: fix a race in tbf_change()
	net_sched: ets: fix a race in ets_qdisc_change()
	net: drv: netdevsim: don't napi_complete() from netpoll
	btrfs: exit after state insertion failure at btrfs_convert_extent_bit()
	fs/filesystems: Fix potential unsigned integer underflow in fs_name()
	gfs2: pass through holder from the VFS for freeze/thaw
	btrfs: exit after state split error at set_extent_bit()
	nvmet-fcloop: access fcpreq only when holding reqlock
	perf: Ensure bpf_perf_link path is properly serialized
	block: use q->elevator with ->elevator_lock held in elv_iosched_show()
	io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo()
	block: don't use submit_bio_noacct_nocheck in blk_zone_wplug_bio_work
	io_uring: consistently use rcu semantics with sqpoll thread
	bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP
	block: Fix bvec_set_folio() for very large folios
	objtool/rust: relax slice condition to cover more `noreturn` Rust functions
	tools/resolve_btfids: Fix build when cross compiling kernel with clang.
	Revert "wifi: mwifiex: Fix HT40 bandwidth issue."
	ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1
	HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()
	posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()
	nvmem: zynqmp_nvmem: unbreak driver after cleanup
	usb: usbtmc: Fix read_stb function and get_stb ioctl
	VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify
	tty: serial: 8250_omap: fix TX with DMA for am33xx
	usb: misc: onboard_usb_dev: Fix usb5744 initialization sequence
	usb: cdnsp: Fix issue with detecting command completion event
	usb: cdnsp: Fix issue with detecting USB 3.2 speed
	usb: Flush altsetting 0 endpoints before reinitializating them after reset.
	usb: typec: tcpm/tcpci_maxim: Fix bounds check in process_rx()
	usb: typec: tcpm: move tcpm_queue_vdm_unlocked to asynchronous work
	9p: Add a migrate_folio method
	ring-buffer: Do not trigger WARN_ON() due to a commit_overrun
	ring-buffer: Fix buffer locking in ring_buffer_subbuf_order_set()
	ring-buffer: Move cpus_read_lock() outside of buffer->mutex
	xfs: don't assume perags are initialised when trimming AGs
	xen/arm: call uaccess_ttbr0_enable for dm_op hypercall
	x86/iopl: Cure TIF_IO_BITMAP inconsistencies
	x86/fred/signal: Prevent immediate repeat of single step trap on return from SIGTRAP handler
	calipso: unlock rcu before returning -EAFNOSUPPORT
	regulator: dt-bindings: mt6357: Drop fixed compatible requirement
	usb: misc: onboard_usb_dev: fix build warning for CONFIG_USB_ONBOARD_DEV_USB5744=n
	net: usb: aqc111: debug info before sanitation
	overflow: Introduce __DEFINE_FLEX for having no initializer
	gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add
	drm/meson: Use 1000ULL when operating with mode->clock
	thermal/drivers/mediatek/lvts: Remove unused lvts_debugfs_exit
	Linux 6.12.34

Change-Id: I679f0f1ddcf9bf8a0b86089ccb7b78536f5bc441
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2025-07-09 08:59:06 +00:00
Ming Lei a5c7b61eed block: use q->elevator with ->elevator_lock held in elv_iosched_show()
[ Upstream commit 94209d27d14104ed828ca88cd5403a99162fe51a ]

Use q->elevator with ->elevator_lock held in elv_iosched_show(), since
the local cached elevator reference may become stale after getting
->elevator_lock.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250505141805.2751237-5-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-06-19 15:32:32 +02:00
Ming Lei df5f9ab297 UPSTREAM: block: don't verify queue freeze manually in elevator_init_mq()
Now blk_freeze_queue_start() can track disk state automatically, and
it isn't necessary to verify queue freeze manually in elevator_init_mq()
any more.

Change-Id: I65afd3ecf7e8bd6a5222c9434701da1f2e32c783
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20241127135133.3952153-4-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Bug: 415836627
(cherry picked from commit b9d4eee7e04b9cfb0b4bcd748fe6b3ec517171d9)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2025-05-16 12:17:58 +00:00
Ming Lei 752dff69ae UPSTREAM: block: track disk DEAD state automatically for modeling queue freeze lockdep
Now we only verify the outmost freeze & unfreeze in current context in case
that !q->mq_freeze_depth, so it is reliable to save disk DEAD state when
we want to lock the freeze queue since the state is one per-task variable
now.

Doing this way can kill lots of false positive when freeze queue is
called before adding disk[1].

[1] https://lore.kernel.org/linux-block/6741f6b2.050a0220.1cc393.0017.GAE@google.com/

Change-Id: I1b0331f5863865d05ac2d719cd314addfed23838
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20241127135133.3952153-3-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Bug: 415836627
(cherry picked from commit 6f491a8d4b92d1a840fd9209cba783c84437d0b7)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2025-05-16 12:17:57 +00:00
Ming Lei 6cea47849d block: don't verify IO lock for freeze/unfreeze in elevator_init_mq()
commit 357e1b7f730bd85a383e7afa75a3caba329c5707 upstream.

elevator_init_mq() is only called at the entry of add_disk_fwnode() when
disk IO isn't allowed yet.

So not verify io lock(q->io_lockdep_map) for freeze & unfreeze in
elevator_init_mq().

Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reported-by: Lai Yi <yi1.lai@linux.intel.com>
Fixes: f1be1788a32e ("block: model freeze & enter queue as lock for supporting lockdep")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20241031133723.303835-5-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-05 14:03:10 +01:00
Breno Leitao ee7ff15bf5 elevator: Remove argument from elevator_find_get
Commit e4eb37cc0f ("block: Remove elevator required features")
removed the usage of `struct request_queue` from elevator_find_get(),
but didn't removed the argument.

Remove the "struct request_queue *q" argument from elevator_find_get()
given it is useless.

Fixes: e4eb37cc0f ("block: Remove elevator required features")
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://lore.kernel.org/r/20241011155615.3361143-1-leitao@debian.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-10-11 11:11:09 -06:00
Breno Leitao b4ff6e93bf elevator: do not request_module if elevator exists
Whenever an I/O elevator is changed, the system attempts to load a
module for the new elevator. This occurs regardless of whether the
elevator is already loaded or built directly into the kernel. This
behavior introduces unnecessary overhead and potential issues.

This makes the operation slower, and more error-prone. For instance,
making the problem fixed by [1] visible for users that doesn't even rely
on modules being available through modules.

Do not try to load the ioscheduler if it is already visible.

This change brings two main benefits: it improves the performance of
elevator changes, and it reduces the likelihood of errors occurring
during this process.

[1] Commit e3accac1a9 ("block: Fix elv_iosched_local_module handling of "none" scheduler")

Fixes: 734e1a8603 ("block: Prevent deadlocks when switching elevators")
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://lore.kernel.org/r/20241011170122.3880087-1-leitao@debian.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-10-11 11:10:52 -06:00
SurajSonawane2415 b402328a24 block: Fix elevator_get_default() checking for NULL q->tag_set
elevator_get_default() and elv_support_iosched() both check for whether
or not q->tag_set is non-NULL, however it's not possible for them to be
NULL. This messes up some static checkers, as the checking of tag_set
isn't consistent.

Remove the checks, which both simplifies the logic and avoids checker
errors.

Signed-off-by: SurajSonawane2415 <surajsonawane0215@gmail.com>
Link: https://lore.kernel.org/r/20241007111416.13814-1-surajsonawane0215@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-10-07 14:24:36 -06:00
Damien Le Moal e3accac1a9 block: Fix elv_iosched_local_module handling of "none" scheduler
Commit 734e1a8603 ("block: Prevent deadlocks when switching
elevators") introduced the function elv_iosched_load_module() to allow
loading an elevator module outside of elv_iosched_store() with the
target device queue not frozen, to avoid deadlocks. However, the "none"
scheduler does not have a module and as a result,
elv_iosched_load_module() always returns an error when trying to switch
to this valid scheduler.

Fix this by ignoring the return value of the request_module() call
done by elv_iosched_load_module(). This restores the behavior before
commit 734e1a8603, which was to ignore the request_module() result and
instead rely on elevator_change() to handle the "none" scheduler case.

Reported-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Fixes: 734e1a8603 ("block: Prevent deadlocks when switching elevators")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20240917133231.134806-1-dlemoal@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-09-17 08:34:00 -06:00
Damien Le Moal 734e1a8603 block: Prevent deadlocks when switching elevators
Commit af28141498 ("block: freeze the queue in queue_attr_store")
changed queue_attr_store() to always freeze a sysfs attribute queue
before calling the attribute store() method, to ensure that no IOs are
in-flight when an attribute value is being updated.

However, this change created a potential deadlock situation for the
scheduler queue attribute as changing the queue elevator with
elv_iosched_store() can result in a call to request_module() if the user
requested module is not already registered. If the file of the requested
module is stored on the block device of the frozen queue, a deadlock
will happen as the read operations triggered by request_module() will
wait for the queue freeze to end.

Solve this issue by introducing the load_module method in struct
queue_sysfs_entry, and to calling this method function in
queue_attr_store() before freezing the attribute queue.
The macro definition QUEUE_RW_LOAD_MODULE_ENTRY() is added to define a
queue sysfs attribute that needs loading a module.

The definition of the scheduler atrribute is changed to using
QUEUE_RW_LOAD_MODULE_ENTRY(), with the function
elv_iosched_load_module() defined as the load_module method.
elv_iosched_store() can then be simplified to remove the call to
request_module().

Reported-by: Richard W.M. Jones <rjones@redhat.com>
Reported-by: Jiri Jaburek <jjaburek@redhat.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219166
Fixes: af28141498 ("block: freeze the queue in queue_attr_store")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Link: https://lore.kernel.org/r/20240908000704.414538-1-dlemoal@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-09-10 13:43:42 -06:00
Christoph Hellwig 62e35f9422 block: pass a gendisk to the queue_sysfs_entry methods
The kobject for the queue entries is embedded into a struct gendisk.
Pass it to the sysfs methods instead of the request_queue derived from
it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20240627111407.476276-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-06-28 15:06:16 -06:00
Damien Le Moal e4eb37cc0f block: Remove elevator required features
The only elevator feature ever implemented is ELEVATOR_F_ZBD_SEQ_WRITE
for signaling that a scheduler implements zone write locking to tightly
control the dispatching order of write operations to zoned block
devices. With the removal of zone write locking support in mq-deadline
and the reliance of all block device drivers on the block layer zone
write plugging to control ordering of write operations to zones, the
elevator feature ELEVATOR_F_ZBD_SEQ_WRITE is completely unused.
Remove it, and also remove the now unused code for filtering the
possible schedulers for a block device based on required features.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Hans Holmberg <hans.holmberg@wdc.com>
Tested-by: Dennis Maisenbacher <dennis.maisenbacher@wdc.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240408014128.205141-23-dlemoal@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-04-17 08:44:03 -06:00
Chengming Zhou e5c0ca1365 blk-mq: release scheduler resource when request completes
Chuck reported [1] an IO hang problem on NFS exports that reside on SATA
devices and bisected to commit 615939a2ae ("blk-mq: defer to the normal
submission path for post-flush requests").

We analysed the IO hang problem, found there are two postflush requests
waiting for each other.

The first postflush request completed the REQ_FSEQ_DATA sequence, so go to
the REQ_FSEQ_POSTFLUSH sequence and added in the flush pending list, but
failed to blk_kick_flush() because of the second postflush request which
is inflight waiting in scheduler queue.

The second postflush waiting in scheduler queue can't be dispatched because
the first postflush hasn't released scheduler resource even though it has
completed by itself.

Fix it by releasing scheduler resource when the first postflush request
completed, so the second postflush can be dispatched and completed, then
make blk_kick_flush() succeed.

While at it, remove the check for e->ops.finish_request, as all
schedulers set that. Reaffirm this requirement by adding a WARN_ON_ONCE()
at scheduler registration time, just like we do for insert_requests and
dispatch_request.

[1] https://lore.kernel.org/all/7A57C7AE-A51A-4254-888B-FE15CA21F9E9@oracle.com/

Link: https://lore.kernel.org/linux-block/20230819031206.2744005-1-chengming.zhou@linux.dev/
Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202308172100.8ce4b853-oliver.sang@intel.com
Fixes: 615939a2ae ("blk-mq: defer to the normal submission path for post-flush requests")
Reported-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Tested-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://lore.kernel.org/r/20230813152325.3017343-1-chengming.zhou@linux.dev
[axboe: folded in incremental fix and added tags]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-08-19 07:47:17 -06:00
Azeem Shaikh 20d099756b block: Replace all non-returning strlcpy with strscpy
strlcpy() reads the entire source buffer first.
This read may exceed the destination size limit.
This is both inefficient and can lead to linear read
overflows if a source string is not NUL-terminated [1].
In an effort to remove strlcpy() completely [2], replace
strlcpy() here with strscpy().
No return values were used, so direct replacement is safe.

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy
[2] https://github.com/KSPP/linux/issues/89

Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230530155608.272266-1-azeemshaikh38@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-06-01 09:13:31 -06:00
Thomas Weißschuh 5f6224175f block: make kobj_type structures constant
Since commit ee6d3dd4ed ("driver core: make kobj_type constant.")
the driver core allows the usage of const struct kobj_type.

Take advantage of this to constify the structure definitions to prevent
modification at runtime.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20230208-kobj_type-block-v1-1-0b3eafd7d983@weissschuh.net
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-02-09 09:38:16 -07:00
Christoph Hellwig 2bd85221a6 block: untangle request_queue refcounting from sysfs
The kobject embedded into the request_queue is used for the queue
directory in sysfs, but that is a child of the gendisks directory and is
intimately tied to it.  Move this kobject to the gendisk and use a
refcount_t in the request_queue for the actual request_queue refcounting
that is completely unrelated to the device model.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221114042637.1009333-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-30 11:09:00 -07:00
Jinlong Chen 8d283ee62b block: use bool as the return type of elv_iosched_allow_bio_merge
We have bool type now, update the old signature.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/0db0a0298758d60d0f4df8b7126ac6a381e5a5bb.1669736350.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-29 10:53:10 -07:00
Jinlong Chen c6451ede40 block: replace "len+name" with "name+len" in elv_iosched_show
The "pointer + offset" pattern is more resonable.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/d9beaee71b14f7b2a39ab0db6458dc0f7d961ceb.1669736350.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-29 10:53:10 -07:00
Jinlong Chen 7a3b3660fd block: always use 'e' when printing scheduler name
Printing e->elevator_name in all cases improves the readability, and
'e' and 'cur' are identical in this branch.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Link: https://lore.kernel.org/r/4bae180ffbac608ea0cf46ffa9739ce0973b60aa.1669736350.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-29 10:53:10 -07:00
Jinlong Chen 5998249e32 block: replace continue with else-if in elv_iosched_show
else-if is more readable than continue here.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Link: https://lore.kernel.org/r/77ac19ba556efd2c8639a6396eb4203c59bc13d6.1669736350.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-29 10:53:06 -07:00
Jinlong Chen 7919d679ae block: include 'none' for initial elv_iosched_show call
This makes the printing order of the io schedulers consistent, and removes
a redundant q->elevator check.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/bdd7083ed4f232e3285f39081e3c5f30b20b8da2.1669736350.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-29 10:48:59 -07:00
Jinlong Chen 4284354758 elevator: remove an outdated comment in elevator_change
mq is no longer a special case.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/cbf47824fc726440371e74c867bf635ae1b671a3.1669126766.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-23 06:48:20 -07:00
Jinlong Chen f69b5e8f35 elevator: update the document of elevator_match
elevator_match does not care about elevator_features any more. Remove
related descriptions from its document.

Fixes: ffb86425ee ("block: don't check for required features in elevator_match")
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/a58424555202c07a9ccf7f60c3ad7e247da09e25.1669126766.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-23 06:48:20 -07:00
Jinlong Chen e0cca8bc9c elevator: printk a warning if switching to a new io scheduler fails
printk a warning to indicate that the io scheduler has been set to none
if switching to a new io scheduler fails.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/d51ed0fb457db7a4f9cbb0dbce36d534e22be457.1669126766.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-23 06:48:08 -07:00
Jinlong Chen ac1171bd2c elevator: update the document of elevator_switch
We no longer support falling back to the old io scheduler if switching to
the new one fails. Update the document to indicate that.

Fixes: a1ce35fa49 ("block: remove dead elevator code")
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/94250961689ba7d2e67a7d9e7995a11166fedb31.1669126766.git.nickyc975@zju.edu.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-23 06:47:46 -07:00
Yang Li 5b2560c4c2 block: Fix some kernel-doc comments
Remove the description of @required_features in elevator_match()
to clear the below warning:

block/elevator.c:103: warning: Excess function parameter 'required_features' description in 'elevator_match'

Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=2734
Fixes: ffb86425ee ("block: don't check for required features in elevator_match")
Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
Link: https://lore.kernel.org/r/20221107062255.2685-1-yang.lee@linux.alibaba.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-07 07:21:45 -07:00
Christoph Hellwig 64b36075eb block: split elevator_switch
Split an elevator_disable helper from elevator_switch for the case where
we want to switch to no scheduler at all.  This includes removing the
pointless elevator_switch_mq helper and removing the switch to no
schedule logic from blk_mq_init_sched.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 09:12:24 -06:00
Christoph Hellwig ffb86425ee block: don't check for required features in elevator_match
Checking for the required features in the callers simplifies the code
quite a bit, so do that.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-7-hch@lst.de
[axboe: adjust for dropping patch 1, use __elevator_find()]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 09:12:05 -06:00
Christoph Hellwig 2eef17a209 block: simplify the check for the current elevator in elv_iosched_show
Just compare the pointers instead of using the string based
elevator_match.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 08:02:47 -06:00
Christoph Hellwig 16095af2fa block: cleanup the variable naming in elv_iosched_store
Use eq for the elevator_queue as done elsewhere.  This frees e to be used
for the loop iterator instead of the odd __ prefix.  In addition rename
elv to cur to make it more clear it is the currently selected elevator.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 08:02:47 -06:00
Christoph Hellwig aae2a643f5 block: exit elv_iosched_show early when I/O schedulers are not supported
If the tag_set has BLK_MQ_F_NO_SCHED flag set we will never show any
scheduler, so exit early.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 08:02:47 -06:00
Christoph Hellwig 81eaca442e block: cleanup elevator_get
Do the request_module and repeated lookup in the only caller that cares,
pick a saner name that explains where are actually doing a lookup and
use a sane calling conventions that passes the queue first.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-01 08:02:47 -06:00
Jinlong Chen 8ed40ee35d block: fix up elevator_type refcounting
The current reference management logic of io scheduler modules contains
refcnt problems. For example, blk_mq_init_sched may fail before or after
the calling of e->ops.init_sched. If it fails before the calling, it does
nothing to the reference to the io scheduler module. But if it fails after
the calling, it releases the reference by calling kobject_put(&eq->kobj).

As the callers of blk_mq_init_sched can't know exactly where the failure
happens, they can't handle the reference to the io scheduler module
properly: releasing the reference on failure results in double-release if
blk_mq_init_sched has released it, and not releasing the reference results
in ghost reference if blk_mq_init_sched did not release it either.

The same problem also exists in io schedulers' init_sched implementations.

We can address the problem by adding releasing statements to the error
handling procedures of blk_mq_init_sched and init_sched implementations.
But that is counterintuitive and requires modifications to existing io
schedulers.

Instead, We make elevator_alloc get the io scheduler module references
that will be released by elevator_release. And then, we match each
elevator_get with an elevator_put. Therefore, each reference to an io
scheduler module explicitly has its own getter and releaser, and we no
longer need to worry about the refcnt problems.

The bugs and the patch can be validated with tools here:
https://github.com/nickyc975/linux_elv_refcnt_bug.git

[hch: split out a few bits into separate patches, use a non-try
      module_get in elevator_alloc]

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221020064819.1469928-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Jinlong Chen b54c2ad9b7 block: check for an unchanged elevator earlier in __elevator_change
No need to find the actual elevator_type struct for this comparism,
the name is all that is needed.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
[hch: split from a larger patch]
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221020064819.1469928-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Christoph Hellwig 58367c8a5f block: sanitize the elevator name before passing it to __elevator_change
The stripped name should also be used for the none check.  To do so
strip it in the caller and pass in the sanitized name.  Drop the pointless
__ prefix in the function name while we're at it.

Based on a patch from Jinlong Chen <nickyc975@zju.edu.cn>.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221020064819.1469928-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Christoph Hellwig dd6f7f17bf block: add proper helpers for elevator_type module refcount management
Make sure we have helpers for all relevant module refcount operations on
the elevator_type in elevator.h, and use them.  Move the call to the get
helper in blk_mq_elv_switch_none a bit so that it is obvious with a less
verbose comment.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221020064819.1469928-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Yu Kuai 181d066374 elevator: add new field flags in struct elevator_queue
There are only one flag to indicate that elevator is registered currently,
prepare to add a flag to disable wbt if default elevator is bfq.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221019121518.3865235-6-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Yu Kuai 6d9f4cf125 elevator: remove redundant code in elv_unregister_queue()
"elevator_queue *e" is already declared and initialized in the beginning
of elv_unregister_queue().

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Link: https://lore.kernel.org/r/20221019121518.3865235-2-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-10-23 18:59:17 -06:00
Keith Busch 8237c01f16 blk-mq: use quiesced elevator switch when reinitializing queues
The hctx's run_work may be racing with the elevator switch when
reinitializing hardware queues. The queue is merely frozen in this
context, but that only prevents requests from allocating and doesn't
stop the hctx work from running. The work may get an elevator pointer
that's being torn down, and can result in use-after-free errors and
kernel panics (example below). Use the quiesced elevator switch instead,
and make the previous one static since it is now only used locally.

  nvme nvme0: resetting controller
  nvme nvme0: 32/0/0 default/read/poll queues
  BUG: kernel NULL pointer dereference, address: 0000000000000008
  #PF: supervisor read access in kernel mode
  #PF: error_code(0x0000) - not-present page
  PGD 80000020c8861067 P4D 80000020c8861067 PUD 250f8c8067 PMD 0
  Oops: 0000 [#1] SMP PTI
  Workqueue: kblockd blk_mq_run_work_fn
  RIP: 0010:kyber_has_work+0x29/0x70

...

  Call Trace:
   __blk_mq_do_dispatch_sched+0x83/0x2b0
   __blk_mq_sched_dispatch_requests+0x12e/0x170
   blk_mq_sched_dispatch_requests+0x30/0x60
   __blk_mq_run_hw_queue+0x2b/0x50
   process_one_work+0x1ef/0x380
   worker_thread+0x2d/0x3e0

Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220927155652.3260724-1-kbusch@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-09-27 09:58:56 -06:00
Linus Torvalds 616355cc81 Merge tag 'for-5.18/block-2022-03-18' of git://git.kernel.dk/linux-block
Pull block updates from Jens Axboe:

 - BFQ cleanups and fixes (Yu, Zhang, Yahu, Paolo)

 - blk-rq-qos completion fix (Tejun)

 - blk-cgroup merge fix (Tejun)

 - Add offline error return value to distinguish it from an IO error on
   the device (Song)

 - IO stats fixes (Zhang, Christoph)

 - blkcg refcount fixes (Ming, Yu)

 - Fix for indefinite dispatch loop softlockup (Shin'ichiro)

 - blk-mq hardware queue management improvements (Ming)

 - sbitmap dead code removal (Ming, John)

 - Plugging merge improvements (me)

 - Show blk-crypto capabilities in sysfs (Eric)

 - Multiple delayed queue run improvement (David)

 - Block throttling fixes (Ming)

 - Start deprecating auto module loading based on dev_t (Christoph)

 - bio allocation improvements (Christoph, Chaitanya)

 - Get rid of bio_devname (Christoph)

 - bio clone improvements (Christoph)

 - Block plugging improvements (Christoph)

 - Get rid of genhd.h header (Christoph)

 - Ensure drivers use appropriate flush helpers (Christoph)

 - Refcounting improvements (Christoph)

 - Queue initialization and teardown improvements (Ming, Christoph)

 - Misc fixes/improvements (Barry, Chaitanya, Colin, Dan, Jiapeng,
   Lukas, Nian, Yang, Eric, Chengming)

* tag 'for-5.18/block-2022-03-18' of git://git.kernel.dk/linux-block: (127 commits)
  block: cancel all throttled bios in del_gendisk()
  block: let blkcg_gq grab request queue's refcnt
  block: avoid use-after-free on throttle data
  block: limit request dispatch loop duration
  block/bfq-iosched: Fix spelling mistake "tenative" -> "tentative"
  sr: simplify the local variable initialization in sr_block_open()
  block: don't merge across cgroup boundaries if blkcg is enabled
  block: fix rq-qos breakage from skipping rq_qos_done_bio()
  block: flush plug based on hardware and software queue order
  block: ensure plug merging checks the correct queue at least once
  block: move rq_qos_exit() into disk_release()
  block: do more work in elevator_exit
  block: move blk_exit_queue into disk_release
  block: move q_usage_counter release into blk_queue_release
  block: don't remove hctx debugfs dir from blk_mq_exit_queue
  block: move blkcg initialization/destroy into disk allocation/release handler
  sr: implement ->free_disk to simplify refcounting
  sd: implement ->free_disk to simplify refcounting
  sd: delay calling free_opal_dev
  sd: call sd_zbc_release_disk before releasing the scsi_device reference
  ...
2022-03-21 16:48:55 -07:00
Christoph Hellwig 28883074fc block: do more work in elevator_exit
Move the calls to ioc_clear_queue and blk_mq_sched_free_rqs into
elevator_exit.  Except for one call where we know we can't have io_cq
structures yet these always go together, and that extra call in an
error path is harmless.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220308055200.735835-14-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-03-08 19:40:01 -07:00
Eric Biggers f5ec592dd3 block: simplify calling convention of elv_unregister_queue()
Make elv_unregister_queue() a no-op if q->elevator is NULL or is not
registered.

This simplifies the existing callers, as well as the future caller in
the error path of blk_register_queue().

Also don't bother checking whether q is NULL, since it never is.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220124215938.2769-2-ebiggers@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-02-28 06:40:23 -07:00
Laibin Qiu e92bc4cd34 block/wbt: fix negative inflight counter when remove scsi device
Now that we disable wbt by set WBT_STATE_OFF_DEFAULT in
wbt_disable_default() when switch elevator to bfq. And when
we remove scsi device, wbt will be enabled by wbt_enable_default.
If it become false positive between wbt_wait() and wbt_track()
when submit write request.

The following is the scenario that triggered the problem.

T1                          T2                           T3
                            elevator_switch_mq
                            bfq_init_queue
                            wbt_disable_default <= Set
                            rwb->enable_state (OFF)
Submit_bio
blk_mq_make_request
rq_qos_throttle
<= rwb->enable_state (OFF)
                                                         scsi_remove_device
                                                         sd_remove
                                                         del_gendisk
                                                         blk_unregister_queue
                                                         elv_unregister_queue
                                                         wbt_enable_default
                                                         <= Set rwb->enable_state (ON)
q_qos_track
<= rwb->enable_state (ON)
^^^^^^ this request will mark WBT_TRACKED without inflight add and will
lead to drop rqw->inflight to -1 in wbt_done() which will trigger IO hung.

Fix this by move wbt_enable_default() from elv_unregister to
bfq_exit_queue(). Only re-enable wbt when bfq exit.

Fixes: 76a8040817 ("blk-wbt: make sure throttle is enabled properly")

Remove oneline stale comment, and kill one oneshot local variable.

Signed-off-by: Ming Lei <ming.lei@rehdat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/linux-block/20211214133103.551813-1-qiulaibin@huawei.com/
Signed-off-by: Laibin Qiu <qiulaibin@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-02-17 07:54:03 -07:00
Ming Lei 672fdcf0e7 block: partition include/linux/blk-cgroup.h
Partition include/linux/blk-cgroup.h into two parts: one is public part,
the other is block layer private part.

Suggested by Christoph Hellwig.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220211101149.2368042-4-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-02-11 10:02:41 -07:00
Christoph Hellwig 0c6cb3a293 block: remove the e argument to elevator_exit
All callers pass q->elevator.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211123185312.1432157-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-11-29 06:38:44 -07:00
Christoph Hellwig f46b81c54b block: remove elevator_exit
Open code elevator_exit in it's only caller, and rename __elevator_exit to
elevator_exit.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211123185312.1432157-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-11-29 06:38:44 -07:00
Ming Lei 245a489e81 block: avoid to quiesce queue in elevator_init_mq
elevator_init_mq() is only called before adding disk, when there isn't
any FS I/O, only passthrough requests can be queued, so freezing queue
plus canceling dispatch work is enough to drain any dispatch activities,
then we can avoid synchronize_srcu() in blk_mq_quiesce_queue().

Long boot latency issue can be fixed in case of lots of disks added
during booting.

Fixes: 737eb78e82 ("block: Delay default elevator initialization")
Reported-by: yangerkun <yangerkun@huawei.com>
Cc: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20211117115502.1600950-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-11-17 07:43:26 -07:00
John Garry 079a2e3e86 blk-mq: Change shared sbitmap naming to shared tags
Now that shared sbitmap support really means shared tags, rename symbols
to match that.

Signed-off-by: John Garry <john.garry@huawei.com>
Link: https://lore.kernel.org/r/1633429419-228500-15-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-10-18 06:17:03 -06:00
Christoph Hellwig 2e9bc3465a block: move elevator.h to block/
Except for the features passed to blk_queue_required_elevator_features,
elevator.h is only needed internally to the block layer.  Move the
ELEVATOR_F_* definitions to blkdev.h, and the move elevator.h to
block/, dropping all the spurious includes outside of that.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20210920123328.1399408-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-10-18 06:17:01 -06:00
Ming Lei 866663b7b5 block: return ELEVATOR_DISCARD_MERGE if possible
When merging one bio to request, if they are discard IO and the queue
supports multi-range discard, we need to return ELEVATOR_DISCARD_MERGE
because both block core and related drivers(nvme, virtio-blk) doesn't
handle mixed discard io merge(traditional IO merge together with
discard merge) well.

Fix the issue by returning ELEVATOR_DISCARD_MERGE in this situation,
so both blk-mq and drivers just need to handle multi-range discard.

Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Fixes: 2705dfb209 ("block: fix discard request merge")
Link: https://lore.kernel.org/r/20210729034226.1591070-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-08-09 14:37:47 -06:00