Commit Graph

1155070 Commits

Author SHA1 Message Date
Greg Kroah-Hartman
320c8b56ff ANDROID: GKI: db845c: add new dma_buf symbols to list
In commit 8332311cd0 ("misc: fastrpc: Fix incorrect DMA mapping unmap
request"), the symbols dma_buf_map_attachment_unlocked and
dma_buf_unmap_attachment_unlocked are now required to be used by the
db845c target, so add them to the symbol list to fix up the build.

2 function symbol(s) added
  'struct sg_table* dma_buf_map_attachment_unlocked(struct dma_buf_attachment*, enum dma_data_direction)'
  'void dma_buf_unmap_attachment_unlocked(struct dma_buf_attachment*, struct sg_table*, enum dma_data_direction)'

Fixes: 8332311cd0 ("misc: fastrpc: Fix incorrect DMA mapping unmap request")
Change-Id: Ib634cfa9a88a6708893a938a7d48d542db5b7b61
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-27 09:02:43 +00:00
Greg Kroah-Hartman
1c5ec1e54d Merge 6.1.55 into android14-6.1-lts
Changes in 6.1.55
	autofs: fix memory leak of waitqueues in autofs_catatonic_mode
	btrfs: output extra debug info if we failed to find an inline backref
	locks: fix KASAN: use-after-free in trace_event_raw_event_filelock_lock
	ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer
	kernel/fork: beware of __put_task_struct() calling context
	rcuscale: Move rcu_scale_writer() schedule_timeout_uninterruptible() to _idle()
	scftorture: Forgive memory-allocation failure if KASAN
	ACPI: video: Add backlight=native DMI quirk for Lenovo Ideapad Z470
	perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09
	perf/imx_ddr: speed up overflow frequency of cycle
	hw_breakpoint: fix single-stepping when using bpf_overflow_handler
	ACPI: x86: s2idle: Catch multiple ACPI_TYPE_PACKAGE objects
	selftests/nolibc: fix up kernel parameters support
	devlink: remove reload failed checks in params get/set callbacks
	crypto: lrw,xts - Replace strlcpy with strscpy
	ice: Don't tx before switchdev is fully configured
	wifi: ath9k: fix fortify warnings
	wifi: ath9k: fix printk specifier
	wifi: mwifiex: fix fortify warning
	mt76: mt7921: don't assume adequate headroom for SDIO headers
	wifi: wil6210: fix fortify warnings
	can: sun4i_can: Add acceptance register quirk
	can: sun4i_can: Add support for the Allwinner D1
	net: Use sockaddr_storage for getsockopt(SO_PEERNAME).
	net/ipv4: return the real errno instead of -EINVAL
	crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui()
	Bluetooth: Fix hci_suspend_sync crash
	netlink: convert nlk->flags to atomic flags
	tpm_tis: Resend command to recover from data transfer errors
	mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
	alx: fix OOB-read compiler warning
	wifi: mac80211: check S1G action frame size
	netfilter: ebtables: fix fortify warnings in size_entry_mwt()
	wifi: cfg80211: reject auth/assoc to AP with our address
	wifi: cfg80211: ocb: don't leave if not joined
	wifi: mac80211: check for station first in client probe
	wifi: mac80211_hwsim: drop short frames
	libbpf: Free btf_vmlinux when closing bpf_object
	drm/bridge: tc358762: Instruct DSI host to generate HSE packets
	drm/edid: Add quirk for OSVR HDK 2.0
	arm64: dts: qcom: sm6125-pdx201: correct ramoops pmsg-size
	arm64: dts: qcom: sm6350: correct ramoops pmsg-size
	arm64: dts: qcom: sm8150-kumano: correct ramoops pmsg-size
	arm64: dts: qcom: sm8250-edo: correct ramoops pmsg-size
	samples/hw_breakpoint: Fix kernel BUG 'invalid opcode: 0000'
	drm/amd/display: Fix underflow issue on 175hz timing
	ASoC: SOF: topology: simplify code to prevent static analysis warnings
	ASoC: Intel: sof_sdw: Update BT offload config for soundwire config
	ALSA: hda: intel-dsp-cfg: add LunarLake support
	drm/amd/display: Use DTBCLK as refclk instead of DPREFCLK
	drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN31
	drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN314
	drm/exynos: fix a possible null-pointer dereference due to data race in exynos_drm_crtc_atomic_disable()
	drm/mediatek: dp: Change logging to dev for mtk_dp_aux_transfer()
	bus: ti-sysc: Configure uart quirks for k3 SoC
	md: raid1: fix potential OOB in raid1_remove_disk()
	ext2: fix datatype of block number in ext2_xattr_set2()
	fs/jfs: prevent double-free in dbUnmount() after failed jfs_remount()
	jfs: fix invalid free of JFS_IP(ipimap)->i_imap in diUnmount
	PCI: dwc: Provide deinit callback for i.MX
	ARM: 9317/1: kexec: Make smp stop calls asynchronous
	powerpc/pseries: fix possible memory leak in ibmebus_bus_init()
	PCI: vmd: Disable bridge window for domain reset
	PCI: fu740: Set the number of MSI vectors
	media: mdp3: Fix resource leaks in of_find_device_by_node
	media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer
	media: dw2102: Fix null-ptr-deref in dw2102_i2c_transfer()
	media: af9005: Fix null-ptr-deref in af9005_i2c_xfer
	media: anysee: fix null-ptr-deref in anysee_master_xfer
	media: az6007: Fix null-ptr-deref in az6007_i2c_xfer()
	media: dvb-usb-v2: gl861: Fix null-ptr-deref in gl861_i2c_master_xfer
	scsi: lpfc: Abort outstanding ELS cmds when mailbox timeout error is detected
	media: tuners: qt1010: replace BUG_ON with a regular error
	media: pci: cx23885: replace BUG with error return
	usb: cdns3: Put the cdns set active part outside the spin lock
	usb: gadget: fsl_qe_udc: validate endpoint index for ch9 udc
	tools: iio: iio_generic_buffer: Fix some integer type and calculation
	scsi: target: iscsi: Fix buffer overflow in lio_target_nacl_info_show()
	serial: cpm_uart: Avoid suspicious locking
	misc: open-dice: make OPEN_DICE depend on HAS_IOMEM
	usb: ehci: add workaround for chipidea PORTSC.PEC bug
	usb: chipidea: add workaround for chipidea PEC bug
	media: pci: ipu3-cio2: Initialise timing struct to avoid a compiler warning
	kobject: Add sanity check for kset->kobj.ktype in kset_register()
	interconnect: Fix locking for runpm vs reclaim
	printk: Keep non-panic-CPUs out of console lock
	printk: Consolidate console deferred printing
	dma-buf: Add unlocked variant of attachment-mapping functions
	misc: fastrpc: Prepare to dynamic dma-buf locking specification
	misc: fastrpc: Fix incorrect DMA mapping unmap request
	MIPS: Use "grep -E" instead of "egrep"
	btrfs: add a helper to read the superblock metadata_uuid
	btrfs: compare the correct fsid/metadata_uuid in btrfs_validate_super
	block: factor out a bvec_set_page helper
	nvmet: use bvec_set_page to initialize bvecs
	nvmet-tcp: pass iov_len instead of sg->length to bvec_set_page()
	drm: gm12u320: Fix the timeout usage for usb_bulk_msg()
	scsi: qla2xxx: Fix NULL vs IS_ERR() bug for debugfs_create_dir()
	selftests: tracing: Fix to unmount tracefs for recovering environment
	x86/ibt: Suppress spurious ENDBR
	riscv: kexec: Align the kexeced kernel entry
	scsi: target: core: Fix target_cmd_counter leak
	scsi: lpfc: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
	panic: Reenable preemption in WARN slowpath
	x86/boot/compressed: Reserve more memory for page tables
	x86/purgatory: Remove LTO flags
	samples/hw_breakpoint: fix building without module unloading
	md/raid1: fix error: ISO C90 forbids mixed declarations
	Revert "SUNRPC: Fail faster on bad verifier"
	attr: block mode changes of symlinks
	ovl: fix failed copyup of fileattr on a symlink
	ovl: fix incorrect fdput() on aio completion
	io_uring/net: fix iter retargeting for selected buf
	nvme: avoid bogus CRTO values
	md: Put the right device in md_seq_next
	Revert "drm/amd: Disable S/G for APUs when 64GB or more host memory"
	dm: don't attempt to queue IO under RCU protection
	btrfs: fix lockdep splat and potential deadlock after failure running delayed items
	btrfs: fix a compilation error if DEBUG is defined in btree_dirty_folio
	btrfs: release path before inode lookup during the ino lookup ioctl
	btrfs: check for BTRFS_FS_ERROR in pending ordered assert
	tracing: Have tracing_max_latency inc the trace array ref count
	tracing: Have event inject files inc the trace array ref count
	tracing: Increase trace array ref count on enable and filter files
	tracing: Have current_trace inc the trace array ref count
	tracing: Have option files inc the trace array ref count
	selinux: fix handling of empty opts in selinux_fs_context_submount()
	nfsd: fix change_info in NFSv4 RENAME replies
	tracefs: Add missing lockdown check to tracefs_create_dir()
	i2c: aspeed: Reset the i2c controller when timeout occurs
	ata: libata: disallow dev-initiated LPM transitions to unsupported states
	ata: libahci: clear pending interrupt status
	scsi: megaraid_sas: Fix deadlock on firmware crashdump
	scsi: pm8001: Setup IRQs on resume
	ext4: fix rec_len verify error
	drm/amd/display: fix the white screen issue when >= 64GB DRAM
	Revert "memcg: drop kmem.limit_in_bytes"
	drm/amdgpu: fix amdgpu_cs_p1_user_fence
	net/sched: Retire rsvp classifier
	interconnect: Teach lockdep about icc_bw_lock order
	Linux 6.1.55

Change-Id: I95193a57879a13b04b5ac8647a24e6d8304fcb0e
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-26 18:58:32 +00:00
Greg Kroah-Hartman
9f7988e6d7 UPSTREAM: lib/test_meminit: fix off-by-one error in test_pages()
commit efb78fa86e ("lib/test_meminit: allocate pages up to order
MAX_ORDER") works great in kernels 6.4 and newer thanks to commit
23baf831a3 ("mm, treewide: redefine MAX_ORDER sanely"), but for older
kernels, the loop is off by one, which causes crashes when the test
runs.

Fix this up by changing "<= MAX_ORDER" "< MAX_ORDER" to allow the test
to work properly for older kernel branches.

Fixes: 421855d0d2 ("lib/test_meminit: allocate pages up to order MAX_ORDER")
Cc: Andrew Donnellan <ajd@linux.ibm.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Xiaoke Wang <xkernel.wang@foxmail.com>
Cc: <stable@vger.kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Change-Id: I3c6b6482a276b51273be5fa38ab9d5539d0878fd
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 38fd36728f)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-25 09:33:57 +00:00
Greg Kroah-Hartman
5cdaba14b8 ANDROID: GKI: add guards for an include file in net/ethtool/ioctl.c
In commit 82f9af464e ("ipv6: Remove in6addr_any alternatives."), the
6.1.54 release adds a new include file, which changes the crc generation
of some of the public symbols in that file.  Fix that up by adding a

Bug: 161946584
Fixes: 82f9af464e ("ipv6: Remove in6addr_any alternatives.")
Change-Id: I495d21a761e3724ed1ca605496b2b85acb7a77f5
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-18 14:17:46 +00:00
Greg Kroah-Hartman
4f94769349 Merge 6.1.54 into android14-6.1-lts
Changes in 6.1.54
	net/ipv6: SKB symmetric hash should incorporate transport ports
	mm: multi-gen LRU: rename lrugen->lists[] to lrugen->folios[]
	Multi-gen LRU: fix per-zone reclaim
	io_uring: always lock in io_apoll_task_func
	io_uring: revert "io_uring fix multishot accept ordering"
	io_uring/net: don't overflow multishot accept
	io_uring: break out of iowq iopoll on teardown
	io_uring/sqpoll: fix io-wq affinity when IORING_SETUP_SQPOLL is used
	io_uring: Don't set affinity on a dying sqpoll thread
	drm/virtio: Conditionally allocate virtio_gpu_fence
	scsi: qla2xxx: Adjust IOCB resource on qpair create
	scsi: qla2xxx: Limit TMF to 8 per function
	scsi: qla2xxx: Fix deletion race condition
	scsi: qla2xxx: fix inconsistent TMF timeout
	scsi: qla2xxx: Fix command flush during TMF
	scsi: qla2xxx: Fix erroneous link up failure
	scsi: qla2xxx: Turn off noisy message log
	scsi: qla2xxx: Fix session hang in gnl
	scsi: qla2xxx: Fix TMF leak through
	scsi: qla2xxx: Remove unsupported ql2xenabledif option
	scsi: qla2xxx: Flush mailbox commands on chip reset
	scsi: qla2xxx: Fix smatch warn for qla_init_iocb_limit()
	scsi: qla2xxx: Error code did not return to upper layer
	scsi: qla2xxx: Fix firmware resource tracking
	null_blk: fix poll request timeout handling
	fbdev/ep93xx-fb: Do not assign to struct fb_info.dev
	clk: qcom: camcc-sc7180: fix async resume during probe
	drm/ast: Fix DRAM init on AST2200
	ASoC: tegra: Fix SFC conversion for few rates
	clk: qcom: turingcc-qcs404: fix missing resume during probe
	arm64: dts: renesas: rzg2l: Fix txdv-skew-psec typos
	send channel sequence number in SMB3 requests after reconnects
	memcg: drop kmem.limit_in_bytes
	mm: hugetlb_vmemmap: fix a race between vmemmap pmd split
	lib/test_meminit: allocate pages up to order MAX_ORDER
	parisc: led: Fix LAN receive and transmit LEDs
	parisc: led: Reduce CPU overhead for disk & lan LED computation
	cifs: update desired access while requesting for directory lease
	pinctrl: cherryview: fix address_space_handler() argument
	dt-bindings: clock: xlnx,versal-clk: drop select:false
	clk: imx: pll14xx: dynamically configure PLL for 393216000/361267200Hz
	clk: imx: pll14xx: align pdiv with reference manual
	clk: qcom: gcc-mdm9615: use proper parent for pll0_vote clock
	soc: qcom: qmi_encdec: Restrict string length in decode
	clk: qcom: dispcc-sm8450: fix runtime PM imbalance on probe errors
	clk: qcom: lpasscc-sc7280: fix missing resume during probe
	clk: qcom: q6sstop-qcs404: fix missing resume during probe
	clk: qcom: mss-sc7180: fix missing resume during probe
	NFS: Fix a potential data corruption
	NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info
	bus: mhi: host: Skip MHI reset if device is in RDDM
	net: add SKB_HEAD_ALIGN() helper
	net: remove osize variable in __alloc_skb()
	net: factorize code in kmalloc_reserve()
	net: deal with integer overflows in kmalloc_reserve()
	kbuild: rpm-pkg: define _arch conditionally
	kbuild: do not run depmod for 'make modules_sign'
	tpm_crb: Fix an error handling path in crb_acpi_add()
	gfs2: Switch to wait_event in gfs2_logd
	gfs2: low-memory forced flush fixes
	mailbox: qcom-ipcc: fix incorrect num_chans counting
	kconfig: fix possible buffer overflow
	Input: iqs7222 - configure power mode before triggering ATI
	perf trace: Use zfree() to reduce chances of use after free
	perf trace: Really free the evsel->priv area
	pwm: atmel-tcb: Convert to platform remove callback returning void
	pwm: atmel-tcb: Harmonize resource allocation order
	pwm: atmel-tcb: Fix resource freeing in error path and remove
	backlight: gpio_backlight: Drop output GPIO direction check for initial power state
	Input: tca6416-keypad - always expect proper IRQ number in i2c client
	Input: tca6416-keypad - fix interrupt enable disbalance
	perf annotate bpf: Don't enclose non-debug code with an assert()
	x86/virt: Drop unnecessary check on extended CPUID level in cpu_has_svm()
	perf vendor events: Update the JSON/events descriptions for power10 platform
	perf vendor events: Drop some of the JSON/events for power10 platform
	perf vendor events: Drop STORES_PER_INST metric event for power10 platform
	perf top: Don't pass an ERR_PTR() directly to perf_session__delete()
	watchdog: intel-mid_wdt: add MODULE_ALIAS() to allow auto-load
	pwm: lpc32xx: Remove handling of PWM channels
	perf test stat_bpf_counters_cgrp: Fix shellcheck issue about logical operators
	perf test stat_bpf_counters_cgrp: Enhance perf stat cgroup BPF counter test
	drm/i915: mark requests for GuC virtual engines to avoid use-after-free
	blk-throttle: use calculate_io/bytes_allowed() for throtl_trim_slice()
	blk-throttle: consider 'carryover_ios/bytes' in throtl_trim_slice()
	cifs: use fs_context for automounts
	smb: propagate error code of extract_sharename()
	net/sched: fq_pie: avoid stalls in fq_pie_timer()
	sctp: annotate data-races around sk->sk_wmem_queued
	ipv4: annotate data-races around fi->fib_dead
	net: read sk->sk_family once in sk_mc_loop()
	net: fib: avoid warn splat in flow dissector
	xsk: Fix xsk_diag use-after-free error during socket cleanup
	drm/i915/gvt: Verify pfn is "valid" before dereferencing "struct page"
	drm/i915/gvt: Put the page reference obtained by KVM's gfn_to_pfn()
	drm/i915/gvt: Drop unused helper intel_vgpu_reset_gtt()
	net: use sk_forward_alloc_get() in sk_get_meminfo()
	net: annotate data-races around sk->sk_forward_alloc
	mptcp: annotate data-races around msk->rmem_fwd_alloc
	ipv4: ignore dst hint for multipath routes
	ipv6: ignore dst hint for multipath routes
	igb: disable virtualization features on 82580
	gve: fix frag_list chaining
	veth: Fixing transmit return status for dropped packets
	net: ipv6/addrconf: avoid integer underflow in ipv6_create_tempaddr
	net: phy: micrel: Correct bit assignments for phy_device flags
	bpf, sockmap: Fix skb refcnt race after locking changes
	af_unix: Fix data-races around user->unix_inflight.
	af_unix: Fix data-race around unix_tot_inflight.
	af_unix: Fix data-races around sk->sk_shutdown.
	af_unix: Fix data race around sk->sk_err.
	net: sched: sch_qfq: Fix UAF in qfq_dequeue()
	kcm: Destroy mutex in kcm_exit_net()
	octeontx2-af: Fix truncation of smq in CN10K NIX AQ enqueue mbox handler
	igc: Change IGC_MIN to allow set rx/tx value between 64 and 80
	igbvf: Change IGBVF_MIN to allow set rx/tx value between 64 and 80
	igb: Change IGB_MIN to allow set rx/tx value between 64 and 80
	s390/zcrypt: don't leak memory if dev_set_name() fails
	idr: fix param name in idr_alloc_cyclic() doc
	ip_tunnels: use DEV_STATS_INC()
	net: dsa: sja1105: fix bandwidth discrepancy between tc-cbs software and offload
	net: dsa: sja1105: fix -ENOSPC when replacing the same tc-cbs too many times
	net: dsa: sja1105: complete tc-cbs offload support on SJA1110
	bpf: Remove prog->active check for bpf_lsm and bpf_iter
	bpf: Invoke __bpf_prog_exit_sleepable_recur() on recursion in kern_sys_bpf().
	bpf: Assign bpf_tramp_run_ctx::saved_run_ctx before recursion check.
	netfilter: nftables: exthdr: fix 4-byte stack OOB write
	netfilter: nfnetlink_osf: avoid OOB read
	net: hns3: fix tx timeout issue
	net: hns3: fix byte order conversion issue in hclge_dbg_fd_tcam_read()
	net: hns3: fix debugfs concurrency issue between kfree buffer and read
	net: hns3: fix invalid mutex between tc qdisc and dcb ets command issue
	net: hns3: fix the port information display when sfp is absent
	net: hns3: remove GSO partial feature bit
	sh: boards: Fix CEU buffer size passed to dma_declare_coherent_memory()
	Multi-gen LRU: avoid race in inc_min_seq()
	net/mlx5: Free IRQ rmap and notifier on kernel shutdown
	ARC: atomics: Add compiler barrier to atomic operations...
	clocksource/drivers/arm_arch_timer: Disable timer before programming CVAL
	dmaengine: sh: rz-dmac: Fix destination and source data size setting
	jbd2: fix checkpoint cleanup performance regression
	jbd2: check 'jh->b_transaction' before removing it from checkpoint
	jbd2: correct the end of the journal recovery scan range
	ext4: add correct group descriptors and reserved GDT blocks to system zone
	ext4: fix memory leaks in ext4_fname_{setup_filename,prepare_lookup}
	f2fs: flush inode if atomic file is aborted
	f2fs: avoid false alarm of circular locking
	lib: test_scanf: Add explicit type cast to result initialization in test_number_prefix()
	hwspinlock: qcom: add missing regmap config for SFPB MMIO implementation
	ata: ahci: Add Elkhart Lake AHCI controller
	ata: pata_falcon: fix IO base selection for Q40
	ata: sata_gemini: Add missing MODULE_DESCRIPTION
	ata: pata_ftide010: Add missing MODULE_DESCRIPTION
	fuse: nlookup missing decrement in fuse_direntplus_link
	btrfs: zoned: do not zone finish data relocation block group
	btrfs: fix start transaction qgroup rsv double free
	btrfs: free qgroup rsv on io failure
	btrfs: don't start transaction when joining with TRANS_JOIN_NOSTART
	btrfs: set page extent mapped after read_folio in relocate_one_page
	btrfs: zoned: re-enable metadata over-commit for zoned mode
	btrfs: use the correct superblock to compare fsid in btrfs_validate_super
	drm/mxsfb: Disable overlay plane in mxsfb_plane_overlay_atomic_disable()
	mtd: rawnand: brcmnand: Fix crash during the panic_write
	mtd: rawnand: brcmnand: Fix potential out-of-bounds access in oob write
	mtd: spi-nor: Correct flags for Winbond w25q128
	mtd: rawnand: brcmnand: Fix potential false time out warning
	mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller
	drm/amd/display: enable cursor degamma for DCN3+ DRM legacy gamma
	drm/amd/display: prevent potential division by zero errors
	KVM: SVM: Take and hold ir_list_lock when updating vCPU's Physical ID entry
	KVM: SVM: Don't inject #UD if KVM attempts to skip SEV guest insn
	KVM: SVM: Get source vCPUs from source VM for SEV-ES intrahost migration
	KVM: nSVM: Check instead of asserting on nested TSC scaling support
	KVM: nSVM: Load L1's TSC multiplier based on L1 state, not L2 state
	KVM: SVM: Set target pCPU during IRTE update if target vCPU is running
	KVM: SVM: Skip VMSA init in sev_es_init_vmcb() if pointer is NULL
	MIPS: Fix CONFIG_CPU_DADDI_WORKAROUNDS `modules_install' regression
	perf hists browser: Fix hierarchy mode header
	perf test shell stat_bpf_counters: Fix test on Intel
	perf tools: Handle old data in PERF_RECORD_ATTR
	perf hists browser: Fix the number of entries for 'e' key
	drm/amd/display: always switch off ODM before committing more streams
	drm/amd/display: Remove wait while locked
	drm/amdgpu: register a dirty framebuffer callback for fbcon
	kunit: Fix wild-memory-access bug in kunit_free_suite_set()
	net: ipv4: fix one memleak in __inet_del_ifa()
	kselftest/runner.sh: Propagate SIGTERM to runner child
	selftests: Keep symlinks, when possible
	net/smc: use smc_lgr_list.lock to protect smc_lgr_list.list iterate in smcr_port_add
	net: stmmac: fix handling of zero coalescing tx-usecs
	net: ethernet: mvpp2_main: fix possible OOB write in mvpp2_ethtool_get_rxnfc()
	net: ethernet: mtk_eth_soc: fix possible NULL pointer dereference in mtk_hwlro_get_fdir_all()
	hsr: Fix uninit-value access in fill_frame_info()
	net: ethernet: adi: adin1110: use eth_broadcast_addr() to assign broadcast address
	net:ethernet:adi:adin1110: Fix forwarding offload
	net: dsa: sja1105: hide all multicast addresses from "bridge fdb show"
	net: dsa: sja1105: propagate exact error code from sja1105_dynamic_config_poll_valid()
	net: dsa: sja1105: fix multicast forwarding working only for last added mdb entry
	net: dsa: sja1105: serialize sja1105_port_mcast_flood() with other FDB accesses
	net: dsa: sja1105: block FDB accesses that are concurrent with a switch reset
	r8152: check budget for r8152_poll()
	kcm: Fix memory leak in error path of kcm_sendmsg()
	platform/mellanox: mlxbf-tmfifo: Drop the Rx packet if no more descriptors
	platform/mellanox: mlxbf-tmfifo: Drop jumbo frames
	platform/mellanox: mlxbf-pmc: Fix potential buffer overflows
	platform/mellanox: mlxbf-pmc: Fix reading of unprogrammed events
	platform/mellanox: NVSW_SN2201 should depend on ACPI
	net/tls: do not free tls_rec on async operation in bpf_exec_tx_verdict()
	net: macb: Enable PTP unicast
	net: macb: fix sleep inside spinlock
	ipv6: fix ip6_sock_set_addr_preferences() typo
	ipv6: Remove in6addr_any alternatives.
	tcp: Factorise sk_family-independent comparison in inet_bind2_bucket_match(_addr_any).
	tcp: Fix bind() regression for v4-mapped-v6 wildcard address.
	tcp: Fix bind() regression for v4-mapped-v6 non-wildcard address.
	ixgbe: fix timestamp configuration code
	kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg().
	MIPS: Only fiddle with CHECKFLAGS if `need-compiler'
	drm/amd/display: Fix a bug when searching for insert_above_mpcc
	Linux 6.1.54

Change-Id: I42dc80e7b812eb2bdd28575280b7b88169eb6d58
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-17 12:03:09 +00:00
Matthias Männich
7732c16f40 Merge changes Ib5bb4a55,I5ad48ff8,I2b41b3ba,Ib36deff9,Ib271c569, ... into android14-6.1-lts
* changes:
  ANDROID: GKI: update .stg due to internal zswap and tracing changes
  ANDROID: GKI: db845c: add pcie_capability_clear_and_set_word to the symbol list
  ANDROID: GKI: sched: put back the cpu_capacity_inverted variable
  Revert "ipv4: fix data-races around inet->inet_id"
  Revert "usb: typec: bus: verify partner exists in typec_altmode_attention"
  Revert "scsi: core: Use 32-bit hostnum in scsi_host_lookup()"
  Revert "media: cec: core: add adap_nb_transmit_canceled() callback"
  Revert "media: cec: core: add adap_unconfigured() callback"
  Revert "tracing: Introduce pipe_cpumask to avoid race on trace_pipes"
  Revert "tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY"
  Revert "PCI: Allow drivers to request exclusive config regions"
  Revert "PCI: Add locking to RMW PCI Express Capability Register accessors"
  Revert "crypto: api - Use work queue in crypto_destroy_instance"
  Revert "media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field"
  ANDROID: GKI: Fix firmware: smccc build error
  ANDROID: GKI: fix up merge issue in drivers/scsi/storvsc_drv.c
  Merge 6.1.53 into android14-6.1-lts
  Merge 6.1.52 into android14-6.1-lts
  Merge 6.1.51 into android14-6.1-lts
  Merge 6.1.50 into android14-6.1-lts
  Merge 6.1.49 into android14-6.1-lts
  Merge 6.1.48 into android14-6.1-lts
  Merge 6.1.47 into android14-6.1-lts
  Merge 6.1.46 into android14-6.1-lts
  Merge 6.1.45 into android14-6.1-lts
  Merge 6.1.44 into android14-6.1-lts
2023-10-17 09:02:16 +00:00
Greg Kroah-Hartman
d7156e9445 ANDROID: GKI: update .stg due to internal zswap and tracing changes
There are a number of internal-to-the-kernel changes in the recent set
of LTS releases that end up bleeding over into the public .stg file, yet
they are really anonymous pointers when it comes to external modules.
Update the .stg file with these changes as the tooling is being extra
careful, but these are not actual ABI changes so this is safe.

Full details are:

INFO: ABI DIFFERENCES HAVE BEEN DETECTED!
INFO: type 'struct trace_buffer' changed
  member 'atomic_t resizing' was added

type 'struct zs_pool' changed
  member 'spinlock_t lock' was added
  member 'atomic_t compaction_in_progress' was added
  member 'rwlock_t migrate_lock' was removed

type 'struct size_class' changed
  byte size changed from 136 to 128
  member 'spinlock_t lock' was removed
  6 members ('struct list_head fullness_list[4]' .. 'struct zs_size_stat stats') changed
    offset changed by -64

Bug: 161946584
Change-Id: Ib5bb4a55ef5463ed49f7cd2c90bf73e278fd51e4
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-13 08:37:51 +00:00
Greg Kroah-Hartman
59ff7fa115 ANDROID: GKI: db845c: add pcie_capability_clear_and_set_word to the symbol list
In commit 811ec8bc68 ("wifi: ath11k: Use RMW accessors for changing
LNKCTL"), the ath11k driver adds a call to
pcie_capability_clear_and_set_word which is not in the db845c's exported
symbol list, so the build breaks.  Fix this up by adding the symbol to
the correct list (it's already part of the Android preserved KABI list
in other targets.)

Fixes: 811ec8bc68 ("wifi: ath11k: Use RMW accessors for changing LNKCTL")
Change-Id: I5ad48ff8edf0fcae6d3e123db4e2ebd875c7ce7e
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-13 08:37:51 +00:00
Greg Kroah-Hartman
1d14a4d9ce ANDROID: GKI: sched: put back the cpu_capacity_inverted variable
In commit 8517d73992 ("sched/fair: Remove capacity inversion
detection"), the cpu_capacity_inverted was removed from struct rq.  Add
it back to preserve the abi and comment that it's not valid anymore.

Note, due to external modules using internal structures like this, it's
going to be "tricky" for them to even notice this has changed.  Their
build systems are going to have "fun" with this...

Bug: 161946584
Fixes: 8517d73992 ("sched/fair: Remove capacity inversion detection")
Change-Id: I2b41b3ba2eb23fbb33ff872915a5e481640d0cc4
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 15:07:51 +00:00
Greg Kroah-Hartman
d78a231453 Revert "ipv4: fix data-races around inet->inet_id"
This reverts commit 417e7ec0d6 which is
commit f866fbc842 upstream.

It breaks the Android kernel abi.  If this is needed in the future, it
can come back in an abi-safe way.

Bug: 161946584
Cc: Eric Dumazet <edumazet@google.com>
Change-Id: Ib36deff93f4066ebd3c67ae440da5ac82948b5b3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 15:01:07 +00:00
Greg Kroah-Hartman
acef80535a Revert "usb: typec: bus: verify partner exists in typec_altmode_attention"
This reverts commit 0d3b5fe479 which is
commit f236433064 upstream.

It breaks the Android ABI and is not needed for Android systems at this
point in time.  If needed in the future, it can come back in an abi-safe
way.

Bug: 161946584
Change-Id: Ib271c569a1f86228f86e4c9b164d96f1bf0f0019
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:11:30 +00:00
Greg Kroah-Hartman
1592fd4684 Revert "scsi: core: Use 32-bit hostnum in scsi_host_lookup()"
This reverts commit f06c7d823a which is
commit 62ec209209 upstream.

It breaks the Android ABI and is not needed for Android systems at this
point in time.  If needed in the future, it can come back in an abi-safe
way.

Bug: 161946584
Change-Id: I7853972e9f38b29384a23fa3ec9dcf0692a2ede1
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:11:25 +00:00
Greg Kroah-Hartman
ecf3d93213 Revert "media: cec: core: add adap_nb_transmit_canceled() callback"
This reverts commit d6610151ae which is
commit da53c36ddd upstream.

It breaks the Android ABI and is not needed for Android systems at this
point in time.  If needed in the future, it can come back in an abi-safe
way.

Bug: 161946584
Change-Id: I65b4767764af29e74b2e349e7943f4f70f333823
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:10:23 +00:00
Greg Kroah-Hartman
045f98748d Revert "media: cec: core: add adap_unconfigured() callback"
This reverts commit 0294e24750 which is
commit 948a77aaec upstream.

It breaks the Android ABI and is not needed for Android systems at this
point in time.  If needed in the future, it can come back in an abi-safe
way.

Bug: 161946584
Change-Id: I622663df8e9ddfd598285f8af7631f0406351fe0
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:07:41 +00:00
Greg Kroah-Hartman
cb6717439c Revert "tracing: Introduce pipe_cpumask to avoid race on trace_pipes"
This reverts commit 10f358cd4b which is
commit c2489bb7e6 upstream.

It breaks the Android ABI and is not needed for Android systems at this
point in time.  If needed in the future, it can come back in an abi-safe
way.

Bug: 161946584
Change-Id: I821cce9935fbf264a40b9c089e5591efdf145bcf
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:07:06 +00:00
Greg Kroah-Hartman
8d71a1ef6a Revert "tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY"
This reverts commit 1dd387668d which is
commit 3d07fa1dd1 upstream.

It fixes a commit that is about to be reverted due to ABI breakage in
Android.  If needed, it can come back in in an abi-safe way in the
future.

Bug: 161946584
Change-Id: Ida127a7112c9748ffdccfd6c5498e2a8334ba3dc
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 14:02:05 +00:00
Greg Kroah-Hartman
5c4d483e7c Revert "PCI: Allow drivers to request exclusive config regions"
This reverts commit 3108f7c788 which is
commit 278294798a upstream.

It breaks the Android API and is not needed for any Android-specific
platforms, so it can be dropped for now.  If it is needed in the future,
it can be brought back in an abi-safe way.

Bug: 161946584
Change-Id: Ic1514e1a760e9ac6bb9da232ea895ab4ce42028b
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 12:05:39 +00:00
Greg Kroah-Hartman
79dd1a60c7 Revert "PCI: Add locking to RMW PCI Express Capability Register accessors"
This reverts commit f2d7da8faf which is
commit 5e70d0acf0 upstream.

It breaks the Android API and is not needed for any Android-specific
platforms, so it can be dropped for now.  If it is needed in the future,
it can be brought back in an abi-safe way.

Bug: 161946584
Change-Id: Ic12bc34085f8c7ecea1899f7e14b6ba2a920beba
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 12:05:33 +00:00
Greg Kroah-Hartman
41aa552887 Revert "crypto: api - Use work queue in crypto_destroy_instance"
This reverts commit c4cb61c5f9 which is
commit 9ae4577bc0 upstream.

It breaks the Android ABI and if it is needed in the future, can be
brought back in an abi-safe way.

Bug: 161946584
Change-Id: Icc26bcbe08b4d0b48cfae0be695a453531b9db50
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 12:03:37 +00:00
Greg Kroah-Hartman
8f38111724 Revert "media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field"
This reverts commit b608025733 which is
upstream commit ae440c5da3.

It breaks the UAPI signature (but not the content), and it turns out is
not even needed for the 6.1.y tree at all, so revert it for now.

Bug: 161946584
Change-Id: I59e0a97dcaf1ee19bdffaf85f0c2a8f93dc82e75
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-10-12 12:03:37 +00:00
Greg Kroah-Hartman
9e3a2d05a6 ANDROID: GKI: Fix firmware: smccc build error
In commit 0ca5de8309 ("firmware: smccc: Fix use of uninitialised
results structure"), a unused variable was removed, but in the
android-specific changes in the function, the variable was still needed,
so it broke the build.  Fix this up by putting the variable back as it
is required and set it properly.

Fixes: 0ca5de8309 ("firmware: smccc: Fix use of uninitialised results structure")
Change-Id: Icef4bcc0403f4f09fb7ca3a72346007af79f7f8e
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-09-30 16:10:53 +00:00
Jiyong Park
dbe0f49aaf ANDROID: Move microdroid and crashdump defconfigs to common
They don't have device-specific modules. They are just generic configs
that are different from GKI.

Bug: 301852599
Bug: 302301911
Test: run following commands
tools/bazel run //common:kernel_aarch64_microdroid_dist
tools/bazel run //common:kernel_x86_64_microdroid_dist
tools/bazel run //common:kernel_aarch64_microdroid_config -- menuconfig
tools/bazel run //common:kernel_x86_64_microdroid_config -- menuconfig
tools/bazel run //common:kernel_aarch64_crashdump_dist
tools/bazel run //common:kernel_x86_64_crashdump_dist
tools/bazel run //common:kernel_aarch64_crashdump_config -- menuconfig
tools/bazel run //common:kernel_x86_64_crashdump_config -- menuconfig

Change-Id: I8908a7499451ace0740979b694eb5fcc68398c61
Signed-off-by: Jiyong Park <jiyong@google.com>
(cherry picked from commit ae5ea9043d)
2023-09-27 15:30:26 +00:00
Greg Kroah-Hartman
d23900f974 Linux 6.1.55
Link: https://lore.kernel.org/r/20230920112835.549467415@linuxfoundation.org
Tested-by: SeongJae Park <sj@kernel.org>
Tested-by: Salvatore Bonaccorso <carnil@debian.org>
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
Tested-by: Ron Economos <re@w6rz.net>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Tested-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:13 +02:00
Rob Clark
0db211ec0f interconnect: Teach lockdep about icc_bw_lock order
commit 1361917030 upstream.

Teach lockdep that icc_bw_lock is needed in code paths that could
deadlock if they trigger reclaim.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20230807171148.210181-8-robdclark@gmail.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:13 +02:00
Jamal Hadi Salim
b93aeb6352 net/sched: Retire rsvp classifier
commit 265b4da82d upstream.

The rsvp classifier has served us well for about a quarter of a century but has
has not been getting much maintenance attention due to lack of known users.

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Acked-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Kyle Zeng <zengyhkyle@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:13 +02:00
Christian König
4c6bb91581 drm/amdgpu: fix amdgpu_cs_p1_user_fence
commit 35588314e9 upstream.

The offset is just 32bits here so this can potentially overflow if
somebody specifies a large value. Instead reduce the size to calculate
the last possible offset.

The error handling path incorrectly drops the reference to the user
fence BO resulting in potential reference count underflow.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Greg Kroah-Hartman
45ea58f9db Revert "memcg: drop kmem.limit_in_bytes"
This reverts commit 21ef9e1120 which is
commit 86327e8eb9 upstream.

It breaks existing runc systems, as the tool always thinks the file
should be present.

Reported-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
Link: https://lore.kernel.org/r/20230920081101.GA12096@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net
Cc: Michal Hocko <mhocko@suse.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Tejun Heo <tj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Yifan Zhang
4422080e77 drm/amd/display: fix the white screen issue when >= 64GB DRAM
commit ef064187a9 upstream.

Dropping bit 31:4 of page table base is wrong, it makes page table
base points to wrong address if phys addr is beyond 64GB; dropping
page_table_start/end bit 31:4 is unnecessary since dcn20_vmid_setup
will do that. Also, while we are at it, cleanup the assignments using
upper_32_bits()/lower_32_bits() and AMDGPU_GPU_PAGE_SHIFT.

Cc: stable@vger.kernel.org
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2354
Fixes: 81d0bcf990 ("drm/amdgpu: make display pinning more flexible (v2)")
Acked-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Co-developed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Shida Zhang
97d4186c35 ext4: fix rec_len verify error
commit 7fda67e8c3 upstream.

With the configuration PAGE_SIZE 64k and filesystem blocksize 64k,
a problem occurred when more than 13 million files were directly created
under a directory:

EXT4-fs error (device xx): ext4_dx_csum_set:492: inode #xxxx: comm xxxxx: dir seems corrupt?  Run e2fsck -D.
EXT4-fs error (device xx): ext4_dx_csum_verify:463: inode #xxxx: comm xxxxx: dir seems corrupt?  Run e2fsck -D.
EXT4-fs error (device xx): dx_probe:856: inode #xxxx: block 8188: comm xxxxx: Directory index failed checksum

When enough files are created, the fake_dirent->reclen will be 0xffff.
it doesn't equal to the blocksize 65536, i.e. 0x10000.

But it is not the same condition when blocksize equals to 4k.
when enough files are created, the fake_dirent->reclen will be 0x1000.
it equals to the blocksize 4k, i.e. 0x1000.

The problem seems to be related to the limitation of the 16-bit field
when the blocksize is set to 64k.
To address this, helpers like ext4_rec_len_{from,to}_disk has already
been introduced to complete the conversion between the encoded and the
plain form of rec_len.

So fix this one by using the helper, and all the other in this file too.

Cc: stable@kernel.org
Fixes: dbe8944404 ("ext4: Calculate and verify checksums for htree nodes")
Suggested-by: Andreas Dilger <adilger@dilger.ca>
Suggested-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Link: https://lore.kernel.org/r/20230803060938.1929759-1-zhangshida@kylinos.cn
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Damien Le Moal
89365b624a scsi: pm8001: Setup IRQs on resume
commit c91774818b upstream.

The function pm8001_pci_resume() only calls pm8001_request_irq() without
calling pm8001_setup_irq(). This causes the IRQ allocation to fail, which
leads all drives being removed from the system.

Fix this issue by integrating the code for pm8001_setup_irq() directly
inside pm8001_request_irq() so that MSI-X setup is performed both during
normal initialization and resume operations.

Fixes: dbf9bfe615 ("[SCSI] pm8001: add SAS/SATA HBA driver")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Link: https://lore.kernel.org/r/20230911232745.325149-2-dlemoal@kernel.org
Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Junxiao Bi
c2cb422dca scsi: megaraid_sas: Fix deadlock on firmware crashdump
commit 0b0747d507 upstream.

The following processes run into a deadlock. CPU 41 was waiting for CPU 29
to handle a CSD request while holding spinlock "crashdump_lock", but CPU 29
was hung by that spinlock with IRQs disabled.

  PID: 17360    TASK: ffff95c1090c5c40  CPU: 41  COMMAND: "mrdiagd"
  !# 0 [ffffb80edbf37b58] __read_once_size at ffffffff9b871a40 include/linux/compiler.h:185:0
  !# 1 [ffffb80edbf37b58] atomic_read at ffffffff9b871a40 arch/x86/include/asm/atomic.h:27:0
  !# 2 [ffffb80edbf37b58] dump_stack at ffffffff9b871a40 lib/dump_stack.c:54:0
   # 3 [ffffb80edbf37b78] csd_lock_wait_toolong at ffffffff9b131ad5 kernel/smp.c:364:0
   # 4 [ffffb80edbf37b78] __csd_lock_wait at ffffffff9b131ad5 kernel/smp.c:384:0
   # 5 [ffffb80edbf37bf8] csd_lock_wait at ffffffff9b13267a kernel/smp.c:394:0
   # 6 [ffffb80edbf37bf8] smp_call_function_many at ffffffff9b13267a kernel/smp.c:843:0
   # 7 [ffffb80edbf37c50] smp_call_function at ffffffff9b13279d kernel/smp.c:867:0
   # 8 [ffffb80edbf37c50] on_each_cpu at ffffffff9b13279d kernel/smp.c:976:0
   # 9 [ffffb80edbf37c78] flush_tlb_kernel_range at ffffffff9b085c4b arch/x86/mm/tlb.c:742:0
   #10 [ffffb80edbf37cb8] __purge_vmap_area_lazy at ffffffff9b23a1e0 mm/vmalloc.c:701:0
   #11 [ffffb80edbf37ce0] try_purge_vmap_area_lazy at ffffffff9b23a2cc mm/vmalloc.c:722:0
   #12 [ffffb80edbf37ce0] free_vmap_area_noflush at ffffffff9b23a2cc mm/vmalloc.c:754:0
   #13 [ffffb80edbf37cf8] free_unmap_vmap_area at ffffffff9b23bb3b mm/vmalloc.c:764:0
   #14 [ffffb80edbf37cf8] remove_vm_area at ffffffff9b23bb3b mm/vmalloc.c:1509:0
   #15 [ffffb80edbf37d18] __vunmap at ffffffff9b23bb8a mm/vmalloc.c:1537:0
   #16 [ffffb80edbf37d40] vfree at ffffffff9b23bc85 mm/vmalloc.c:1612:0
   #17 [ffffb80edbf37d58] megasas_free_host_crash_buffer [megaraid_sas] at ffffffffc020b7f2 drivers/scsi/megaraid/megaraid_sas_fusion.c:3932:0
   #18 [ffffb80edbf37d80] fw_crash_state_store [megaraid_sas] at ffffffffc01f804d drivers/scsi/megaraid/megaraid_sas_base.c:3291:0
   #19 [ffffb80edbf37dc0] dev_attr_store at ffffffff9b56dd7b drivers/base/core.c:758:0
   #20 [ffffb80edbf37dd0] sysfs_kf_write at ffffffff9b326acf fs/sysfs/file.c:144:0
   #21 [ffffb80edbf37de0] kernfs_fop_write at ffffffff9b325fd4 fs/kernfs/file.c:316:0
   #22 [ffffb80edbf37e20] __vfs_write at ffffffff9b29418a fs/read_write.c:480:0
   #23 [ffffb80edbf37ea8] vfs_write at ffffffff9b294462 fs/read_write.c:544:0
   #24 [ffffb80edbf37ee8] SYSC_write at ffffffff9b2946ec fs/read_write.c:590:0
   #25 [ffffb80edbf37ee8] SyS_write at ffffffff9b2946ec fs/read_write.c:582:0
   #26 [ffffb80edbf37f30] do_syscall_64 at ffffffff9b003ca9 arch/x86/entry/common.c:298:0
   #27 [ffffb80edbf37f58] entry_SYSCALL_64 at ffffffff9ba001b1 arch/x86/entry/entry_64.S:238:0

  PID: 17355    TASK: ffff95c1090c3d80  CPU: 29  COMMAND: "mrdiagd"
  !# 0 [ffffb80f2d3c7d30] __read_once_size at ffffffff9b0f2ab0 include/linux/compiler.h:185:0
  !# 1 [ffffb80f2d3c7d30] native_queued_spin_lock_slowpath at ffffffff9b0f2ab0 kernel/locking/qspinlock.c:368:0
   # 2 [ffffb80f2d3c7d58] pv_queued_spin_lock_slowpath at ffffffff9b0f244b arch/x86/include/asm/paravirt.h:674:0
   # 3 [ffffb80f2d3c7d58] queued_spin_lock_slowpath at ffffffff9b0f244b arch/x86/include/asm/qspinlock.h:53:0
   # 4 [ffffb80f2d3c7d68] queued_spin_lock at ffffffff9b8961a6 include/asm-generic/qspinlock.h:90:0
   # 5 [ffffb80f2d3c7d68] do_raw_spin_lock_flags at ffffffff9b8961a6 include/linux/spinlock.h:173:0
   # 6 [ffffb80f2d3c7d68] __raw_spin_lock_irqsave at ffffffff9b8961a6 include/linux/spinlock_api_smp.h:122:0
   # 7 [ffffb80f2d3c7d68] _raw_spin_lock_irqsave at ffffffff9b8961a6 kernel/locking/spinlock.c:160:0
   # 8 [ffffb80f2d3c7d88] fw_crash_buffer_store [megaraid_sas] at ffffffffc01f8129 drivers/scsi/megaraid/megaraid_sas_base.c:3205:0
   # 9 [ffffb80f2d3c7dc0] dev_attr_store at ffffffff9b56dd7b drivers/base/core.c:758:0
   #10 [ffffb80f2d3c7dd0] sysfs_kf_write at ffffffff9b326acf fs/sysfs/file.c:144:0
   #11 [ffffb80f2d3c7de0] kernfs_fop_write at ffffffff9b325fd4 fs/kernfs/file.c:316:0
   #12 [ffffb80f2d3c7e20] __vfs_write at ffffffff9b29418a fs/read_write.c:480:0
   #13 [ffffb80f2d3c7ea8] vfs_write at ffffffff9b294462 fs/read_write.c:544:0
   #14 [ffffb80f2d3c7ee8] SYSC_write at ffffffff9b2946ec fs/read_write.c:590:0
   #15 [ffffb80f2d3c7ee8] SyS_write at ffffffff9b2946ec fs/read_write.c:582:0
   #16 [ffffb80f2d3c7f30] do_syscall_64 at ffffffff9b003ca9 arch/x86/entry/common.c:298:0
   #17 [ffffb80f2d3c7f58] entry_SYSCALL_64 at ffffffff9ba001b1 arch/x86/entry/entry_64.S:238:0

The lock is used to synchronize different sysfs operations, it doesn't
protect any resource that will be touched by an interrupt. Consequently
it's not required to disable IRQs. Replace the spinlock with a mutex to fix
the deadlock.

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Link: https://lore.kernel.org/r/20230828221018.19471-1-junxiao.bi@oracle.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Cc: stable@vger.kernel.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Szuying Chen
890e1e5dd8 ata: libahci: clear pending interrupt status
commit 737dd811a3 upstream.

When a CRC error occurs, the HBA asserts an interrupt to indicate an
interface fatal error (PxIS.IFS). The ISR clears PxIE and PxIS, then
does error recovery. If the adapter receives another SDB FIS
with an error (PxIS.TFES) from the device before the start of the EH
recovery process, the interrupt signaling the new SDB cannot be
serviced as PxIE was cleared already. This in turn results in the HBA
inability to issue any command during the error recovery process after
setting PxCMD.ST to 1 because PxIS.TFES is still set.

According to AHCI 1.3.1 specifications section 6.2.2, fatal errors
notified by setting PxIS.HBFS, PxIS.HBDS, PxIS.IFS or PxIS.TFES will
cause the HBA to enter the ERR:Fatal state. In this state, the HBA
shall not issue any new commands.

To avoid this situation, introduce the function
ahci_port_clear_pending_irq() to clear pending interrupts before
executing a COMRESET. This follows the AHCI 1.3.1 - section 6.2.2.2
specification.

Signed-off-by: Szuying Chen <Chloe_Chen@asmedia.com.tw>
Fixes: e0bfd14997 ("[PATCH] ahci: stop engine during hard reset")
Cc: stable@vger.kernel.org
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Niklas Cassel
a3517ee1d4 ata: libata: disallow dev-initiated LPM transitions to unsupported states
commit 24e0e61db3 upstream.

In AHCI 1.3.1, the register description for CAP.SSC:
"When cleared to ‘0’, software must not allow the HBA to initiate
transitions to the Slumber state via agressive link power management nor
the PxCMD.ICC field in each port, and the PxSCTL.IPM field in each port
must be programmed to disallow device initiated Slumber requests."

In AHCI 1.3.1, the register description for CAP.PSC:
"When cleared to ‘0’, software must not allow the HBA to initiate
transitions to the Partial state via agressive link power management nor
the PxCMD.ICC field in each port, and the PxSCTL.IPM field in each port
must be programmed to disallow device initiated Partial requests."

Ensure that we always set the corresponding bits in PxSCTL.IPM, such that
a device is not allowed to initiate transitions to power states which are
unsupported by the HBA.

DevSleep is always initiated by the HBA, however, for completeness, set the
corresponding bit in PxSCTL.IPM such that agressive link power management
cannot transition to DevSleep if DevSleep is not supported.

sata_link_scr_lpm() is used by libahci, ata_piix and libata-pmp.
However, only libahci has the ability to read the CAP/CAP2 register to see
if these features are supported. Therefore, in order to not introduce any
regressions on ata_piix or libata-pmp, create flags that indicate that the
respective feature is NOT supported. This way, the behavior for ata_piix
and libata-pmp should remain unchanged.

This change is based on a patch originally submitted by Runa Guo-oc.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Fixes: 1152b2617a ("libata: implement sata_link_scr_lpm() and make ata_dev_set_feature() global")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Tommy Huang
30057f4add i2c: aspeed: Reset the i2c controller when timeout occurs
commit fee465150b upstream.

Reset the i2c controller when an i2c transfer timeout occurs.
The remaining interrupts and device should be reset to avoid
unpredictable controller behavior.

Fixes: 2e57b7cebb ("i2c: aspeed: Add multi-master use case support")
Cc: <stable@vger.kernel.org> # v5.1+
Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Steven Rostedt (Google)
8b0f7d55b2 tracefs: Add missing lockdown check to tracefs_create_dir()
commit 51aab5ffce upstream.

The function tracefs_create_dir() was missing a lockdown check and was
called by the RV code. This gave an inconsistent behavior of this function
returning success while other tracefs functions failed. This caused the
inode being freed by the wrong kmem_cache.

Link: https://lkml.kernel.org/r/20230905182711.692687042@goodmis.org
Link: https://lore.kernel.org/all/202309050916.58201dc6-oliver.sang@intel.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ajay Kaher <akaher@vmware.com>
Cc: Ching-lin Yu <chinglinyu@google.com>
Fixes: bf8e602186 ("tracing: Do not create tracefs files if tracefs lockdown is in effect")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:12 +02:00
Jeff Layton
dcf3caeee4 nfsd: fix change_info in NFSv4 RENAME replies
commit fdd2630a73 upstream.

nfsd sends the transposed directory change info in the RENAME reply. The
source directory is in save_fh and the target is in current_fh.

Reported-by: Zhi Li <yieli@redhat.com>
Reported-by: Benjamin Coddington <bcodding@redhat.com>
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2218844
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Ondrej Mosnacek
978b86fbdb selinux: fix handling of empty opts in selinux_fs_context_submount()
commit ccf1dab96b upstream.

selinux_set_mnt_opts() relies on the fact that the mount options pointer
is always NULL when all options are unset (specifically in its
!selinux_initialized() branch. However, the new
selinux_fs_context_submount() hook breaks this rule by allocating a new
structure even if no options are set. That causes any submount created
before a SELinux policy is loaded to be rejected in
selinux_set_mnt_opts().

Fix this by making selinux_fs_context_submount() leave fc->security
set to NULL when there are no options to be copied from the reference
superblock.

Cc: <stable@vger.kernel.org>
Reported-by: Adam Williamson <awilliam@redhat.com>
Link: https://bugzilla.redhat.com/show_bug.cgi?id=2236345
Fixes: d80a8f1b58 ("vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing")
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Steven Rostedt (Google)
2617afde0c tracing: Have option files inc the trace array ref count
commit 7e2cfbd2d3 upstream.

The option files update the options for a given trace array. For an
instance, if the file is opened and the instance is deleted, reading or
writing to the file will cause a use after free.

Up the ref count of the trace_array when an option file is opened.

Link: https://lkml.kernel.org/r/20230907024804.086679464@goodmis.org
Link: https://lore.kernel.org/all/1cb3aee2-19af-c472-e265-05176fe9bd84@huawei.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Zheng Yejian <zhengyejian1@huawei.com>
Fixes: 8530dec63e ("tracing: Add tracing_check_open_get_tr()")
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Steven Rostedt (Google)
6dc57c3a1d tracing: Have current_trace inc the trace array ref count
commit 9b37febc57 upstream.

The current_trace updates the trace array tracer. For an instance, if the
file is opened and the instance is deleted, reading or writing to the file
will cause a use after free.

Up the ref count of the trace array when current_trace is opened.

Link: https://lkml.kernel.org/r/20230907024803.877687227@goodmis.org
Link: https://lore.kernel.org/all/1cb3aee2-19af-c472-e265-05176fe9bd84@huawei.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Zheng Yejian <zhengyejian1@huawei.com>
Fixes: 8530dec63e ("tracing: Add tracing_check_open_get_tr()")
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Steven Rostedt (Google)
a46bf337a2 tracing: Increase trace array ref count on enable and filter files
commit f5ca233e2e upstream.

When the trace event enable and filter files are opened, increment the
trace array ref counter, otherwise they can be accessed when the trace
array is being deleted. The ref counter keeps the trace array from being
deleted while those files are opened.

Link: https://lkml.kernel.org/r/20230907024803.456187066@goodmis.org
Link: https://lore.kernel.org/all/1cb3aee2-19af-c472-e265-05176fe9bd84@huawei.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Fixes: 8530dec63e ("tracing: Add tracing_check_open_get_tr()")
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Zheng Yejian <zhengyejian1@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Steven Rostedt (Google)
0c2982b015 tracing: Have event inject files inc the trace array ref count
commit e5c624f027 upstream.

The event inject files add events for a specific trace array. For an
instance, if the file is opened and the instance is deleted, reading or
writing to the file will cause a use after free.

Up the ref count of the trace_array when a event inject file is opened.

Link: https://lkml.kernel.org/r/20230907024804.292337868@goodmis.org
Link: https://lore.kernel.org/all/1cb3aee2-19af-c472-e265-05176fe9bd84@huawei.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Zheng Yejian <zhengyejian1@huawei.com>
Fixes: 6c3edaf9fd ("tracing: Introduce trace event injection")
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Steven Rostedt (Google)
d65553fe52 tracing: Have tracing_max_latency inc the trace array ref count
commit 7d660c9b2b upstream.

The tracing_max_latency file points to the trace_array max_latency field.
For an instance, if the file is opened and the instance is deleted,
reading or writing to the file will cause a use after free.

Up the ref count of the trace_array when tracing_max_latency is opened.

Link: https://lkml.kernel.org/r/20230907024803.666889383@goodmis.org
Link: https://lore.kernel.org/all/1cb3aee2-19af-c472-e265-05176fe9bd84@huawei.com/

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Zheng Yejian <zhengyejian1@huawei.com>
Fixes: 8530dec63e ("tracing: Add tracing_check_open_get_tr()")
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Josef Bacik
1f89e6daf2 btrfs: check for BTRFS_FS_ERROR in pending ordered assert
commit 4ca8e03cf2 upstream.

If we do fast tree logging we increment a counter on the current
transaction for every ordered extent we need to wait for.  This means we
expect the transaction to still be there when we clear pending on the
ordered extent.  However if we happen to abort the transaction and clean
it up, there could be no running transaction, and thus we'll trip the
"ASSERT(trans)" check.  This is obviously incorrect, and the code
properly deals with the case that the transaction doesn't exist.  Fix
this ASSERT() to only fire if there's no trans and we don't have
BTRFS_FS_ERROR() set on the file system.

CC: stable@vger.kernel.org # 4.14+
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Filipe Manana
50e385d98b btrfs: release path before inode lookup during the ino lookup ioctl
commit ee34a82e89 upstream.

During the ino lookup ioctl we can end up calling btrfs_iget() to get an
inode reference while we are holding on a root's btree. If btrfs_iget()
needs to lookup the inode from the root's btree, because it's not
currently loaded in memory, then it will need to lock another or the
same path in the same root btree. This may result in a deadlock and
trigger the following lockdep splat:

  WARNING: possible circular locking dependency detected
  6.5.0-rc7-syzkaller-00004-gf7757129e3de #0 Not tainted
  ------------------------------------------------------
  syz-executor277/5012 is trying to acquire lock:
  ffff88802df41710 (btrfs-tree-01){++++}-{3:3}, at: __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136

  but task is already holding lock:
  ffff88802df418e8 (btrfs-tree-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136

  which lock already depends on the new lock.

  the existing dependency chain (in reverse order) is:

  -> #1 (btrfs-tree-00){++++}-{3:3}:
         down_read_nested+0x49/0x2f0 kernel/locking/rwsem.c:1645
         __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136
         btrfs_search_slot+0x13a4/0x2f80 fs/btrfs/ctree.c:2302
         btrfs_init_root_free_objectid+0x148/0x320 fs/btrfs/disk-io.c:4955
         btrfs_init_fs_root fs/btrfs/disk-io.c:1128 [inline]
         btrfs_get_root_ref+0x5ae/0xae0 fs/btrfs/disk-io.c:1338
         btrfs_get_fs_root fs/btrfs/disk-io.c:1390 [inline]
         open_ctree+0x29c8/0x3030 fs/btrfs/disk-io.c:3494
         btrfs_fill_super+0x1c7/0x2f0 fs/btrfs/super.c:1154
         btrfs_mount_root+0x7e0/0x910 fs/btrfs/super.c:1519
         legacy_get_tree+0xef/0x190 fs/fs_context.c:611
         vfs_get_tree+0x8c/0x270 fs/super.c:1519
         fc_mount fs/namespace.c:1112 [inline]
         vfs_kern_mount+0xbc/0x150 fs/namespace.c:1142
         btrfs_mount+0x39f/0xb50 fs/btrfs/super.c:1579
         legacy_get_tree+0xef/0x190 fs/fs_context.c:611
         vfs_get_tree+0x8c/0x270 fs/super.c:1519
         do_new_mount+0x28f/0xae0 fs/namespace.c:3335
         do_mount fs/namespace.c:3675 [inline]
         __do_sys_mount fs/namespace.c:3884 [inline]
         __se_sys_mount+0x2d9/0x3c0 fs/namespace.c:3861
         do_syscall_x64 arch/x86/entry/common.c:50 [inline]
         do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
         entry_SYSCALL_64_after_hwframe+0x63/0xcd

  -> #0 (btrfs-tree-01){++++}-{3:3}:
         check_prev_add kernel/locking/lockdep.c:3142 [inline]
         check_prevs_add kernel/locking/lockdep.c:3261 [inline]
         validate_chain kernel/locking/lockdep.c:3876 [inline]
         __lock_acquire+0x39ff/0x7f70 kernel/locking/lockdep.c:5144
         lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5761
         down_read_nested+0x49/0x2f0 kernel/locking/rwsem.c:1645
         __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136
         btrfs_tree_read_lock fs/btrfs/locking.c:142 [inline]
         btrfs_read_lock_root_node+0x292/0x3c0 fs/btrfs/locking.c:281
         btrfs_search_slot_get_root fs/btrfs/ctree.c:1832 [inline]
         btrfs_search_slot+0x4ff/0x2f80 fs/btrfs/ctree.c:2154
         btrfs_lookup_inode+0xdc/0x480 fs/btrfs/inode-item.c:412
         btrfs_read_locked_inode fs/btrfs/inode.c:3892 [inline]
         btrfs_iget_path+0x2d9/0x1520 fs/btrfs/inode.c:5716
         btrfs_search_path_in_tree_user fs/btrfs/ioctl.c:1961 [inline]
         btrfs_ioctl_ino_lookup_user+0x77a/0xf50 fs/btrfs/ioctl.c:2105
         btrfs_ioctl+0xb0b/0xd40 fs/btrfs/ioctl.c:4683
         vfs_ioctl fs/ioctl.c:51 [inline]
         __do_sys_ioctl fs/ioctl.c:870 [inline]
         __se_sys_ioctl+0xf8/0x170 fs/ioctl.c:856
         do_syscall_x64 arch/x86/entry/common.c:50 [inline]
         do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
         entry_SYSCALL_64_after_hwframe+0x63/0xcd

  other info that might help us debug this:

   Possible unsafe locking scenario:

         CPU0                    CPU1
         ----                    ----
    rlock(btrfs-tree-00);
                                 lock(btrfs-tree-01);
                                 lock(btrfs-tree-00);
    rlock(btrfs-tree-01);

   *** DEADLOCK ***

  1 lock held by syz-executor277/5012:
   #0: ffff88802df418e8 (btrfs-tree-00){++++}-{3:3}, at: __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136

  stack backtrace:
  CPU: 1 PID: 5012 Comm: syz-executor277 Not tainted 6.5.0-rc7-syzkaller-00004-gf7757129e3de #0
  Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/26/2023
  Call Trace:
   <TASK>
   __dump_stack lib/dump_stack.c:88 [inline]
   dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106
   check_noncircular+0x375/0x4a0 kernel/locking/lockdep.c:2195
   check_prev_add kernel/locking/lockdep.c:3142 [inline]
   check_prevs_add kernel/locking/lockdep.c:3261 [inline]
   validate_chain kernel/locking/lockdep.c:3876 [inline]
   __lock_acquire+0x39ff/0x7f70 kernel/locking/lockdep.c:5144
   lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5761
   down_read_nested+0x49/0x2f0 kernel/locking/rwsem.c:1645
   __btrfs_tree_read_lock+0x2f/0x220 fs/btrfs/locking.c:136
   btrfs_tree_read_lock fs/btrfs/locking.c:142 [inline]
   btrfs_read_lock_root_node+0x292/0x3c0 fs/btrfs/locking.c:281
   btrfs_search_slot_get_root fs/btrfs/ctree.c:1832 [inline]
   btrfs_search_slot+0x4ff/0x2f80 fs/btrfs/ctree.c:2154
   btrfs_lookup_inode+0xdc/0x480 fs/btrfs/inode-item.c:412
   btrfs_read_locked_inode fs/btrfs/inode.c:3892 [inline]
   btrfs_iget_path+0x2d9/0x1520 fs/btrfs/inode.c:5716
   btrfs_search_path_in_tree_user fs/btrfs/ioctl.c:1961 [inline]
   btrfs_ioctl_ino_lookup_user+0x77a/0xf50 fs/btrfs/ioctl.c:2105
   btrfs_ioctl+0xb0b/0xd40 fs/btrfs/ioctl.c:4683
   vfs_ioctl fs/ioctl.c:51 [inline]
   __do_sys_ioctl fs/ioctl.c:870 [inline]
   __se_sys_ioctl+0xf8/0x170 fs/ioctl.c:856
   do_syscall_x64 arch/x86/entry/common.c:50 [inline]
   do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
   entry_SYSCALL_64_after_hwframe+0x63/0xcd
  RIP: 0033:0x7f0bec94ea39

Fix this simply by releasing the path before calling btrfs_iget() as at
point we don't need the path anymore.

Reported-by: syzbot+bf66ad948981797d2f1d@syzkaller.appspotmail.com
Link: https://lore.kernel.org/linux-btrfs/00000000000045fa140603c4a969@google.com/
Fixes: 23d0b79dfa ("btrfs: Add unprivileged version of ino_lookup ioctl")
CC: stable@vger.kernel.org # 4.19+
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:11 +02:00
Qu Wenruo
52932bbc6d btrfs: fix a compilation error if DEBUG is defined in btree_dirty_folio
commit 5e0e879926 upstream.

[BUG]
After commit 72a69cd030 ("btrfs: subpage: pack all subpage bitmaps
into a larger bitmap"), the DEBUG section of btree_dirty_folio() would
no longer compile.

[CAUSE]
If DEBUG is defined, we would do extra checks for btree_dirty_folio(),
mostly to make sure the range we marked dirty has an extent buffer and
that extent buffer is dirty.

For subpage, we need to iterate through all the extent buffers covered
by that page range, and make sure they all matches the criteria.

However commit 72a69cd030 ("btrfs: subpage: pack all subpage bitmaps
into a larger bitmap") changes how we store the bitmap, we pack all the
16 bits bitmaps into a larger bitmap, which would save some space.

This means we no longer have btrfs_subpage::dirty_bitmap, instead the
dirty bitmap is starting at btrfs_subpage_info::dirty_offset, and has a
length of btrfs_subpage_info::bitmap_nr_bits.

[FIX]
Although I'm not sure if it still makes sense to maintain such code, at
least let it compile.

This patch would let us test the bits one by one through the bitmaps.

CC: stable@vger.kernel.org # 6.1+
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00
Filipe Manana
32247b9526 btrfs: fix lockdep splat and potential deadlock after failure running delayed items
commit e110f8911d upstream.

When running delayed items we are holding a delayed node's mutex and then
we will attempt to modify a subvolume btree to insert/update/delete the
delayed items. However if have an error during the insertions for example,
btrfs_insert_delayed_items() may return with a path that has locked extent
buffers (a leaf at the very least), and then we attempt to release the
delayed node at __btrfs_run_delayed_items(), which requires taking the
delayed node's mutex, causing an ABBA type of deadlock. This was reported
by syzbot and the lockdep splat is the following:

  WARNING: possible circular locking dependency detected
  6.5.0-rc7-syzkaller-00024-g93f5de5f648d #0 Not tainted
  ------------------------------------------------------
  syz-executor.2/13257 is trying to acquire lock:
  ffff88801835c0c0 (&delayed_node->mutex){+.+.}-{3:3}, at: __btrfs_release_delayed_node+0x9a/0xaa0 fs/btrfs/delayed-inode.c:256

  but task is already holding lock:
  ffff88802a5ab8e8 (btrfs-tree-00){++++}-{3:3}, at: __btrfs_tree_lock+0x3c/0x2a0 fs/btrfs/locking.c:198

  which lock already depends on the new lock.

  the existing dependency chain (in reverse order) is:

  -> #1 (btrfs-tree-00){++++}-{3:3}:
         __lock_release kernel/locking/lockdep.c:5475 [inline]
         lock_release+0x36f/0x9d0 kernel/locking/lockdep.c:5781
         up_write+0x79/0x580 kernel/locking/rwsem.c:1625
         btrfs_tree_unlock_rw fs/btrfs/locking.h:189 [inline]
         btrfs_unlock_up_safe+0x179/0x3b0 fs/btrfs/locking.c:239
         search_leaf fs/btrfs/ctree.c:1986 [inline]
         btrfs_search_slot+0x2511/0x2f80 fs/btrfs/ctree.c:2230
         btrfs_insert_empty_items+0x9c/0x180 fs/btrfs/ctree.c:4376
         btrfs_insert_delayed_item fs/btrfs/delayed-inode.c:746 [inline]
         btrfs_insert_delayed_items fs/btrfs/delayed-inode.c:824 [inline]
         __btrfs_commit_inode_delayed_items+0xd24/0x2410 fs/btrfs/delayed-inode.c:1111
         __btrfs_run_delayed_items+0x1db/0x430 fs/btrfs/delayed-inode.c:1153
         flush_space+0x269/0xe70 fs/btrfs/space-info.c:723
         btrfs_async_reclaim_metadata_space+0x106/0x350 fs/btrfs/space-info.c:1078
         process_one_work+0x92c/0x12c0 kernel/workqueue.c:2600
         worker_thread+0xa63/0x1210 kernel/workqueue.c:2751
         kthread+0x2b8/0x350 kernel/kthread.c:389
         ret_from_fork+0x2e/0x60 arch/x86/kernel/process.c:145
         ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304

  -> #0 (&delayed_node->mutex){+.+.}-{3:3}:
         check_prev_add kernel/locking/lockdep.c:3142 [inline]
         check_prevs_add kernel/locking/lockdep.c:3261 [inline]
         validate_chain kernel/locking/lockdep.c:3876 [inline]
         __lock_acquire+0x39ff/0x7f70 kernel/locking/lockdep.c:5144
         lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5761
         __mutex_lock_common+0x1d8/0x2530 kernel/locking/mutex.c:603
         __mutex_lock kernel/locking/mutex.c:747 [inline]
         mutex_lock_nested+0x1b/0x20 kernel/locking/mutex.c:799
         __btrfs_release_delayed_node+0x9a/0xaa0 fs/btrfs/delayed-inode.c:256
         btrfs_release_delayed_node fs/btrfs/delayed-inode.c:281 [inline]
         __btrfs_run_delayed_items+0x2b5/0x430 fs/btrfs/delayed-inode.c:1156
         btrfs_commit_transaction+0x859/0x2ff0 fs/btrfs/transaction.c:2276
         btrfs_sync_file+0xf56/0x1330 fs/btrfs/file.c:1988
         vfs_fsync_range fs/sync.c:188 [inline]
         vfs_fsync fs/sync.c:202 [inline]
         do_fsync fs/sync.c:212 [inline]
         __do_sys_fsync fs/sync.c:220 [inline]
         __se_sys_fsync fs/sync.c:218 [inline]
         __x64_sys_fsync+0x196/0x1e0 fs/sync.c:218
         do_syscall_x64 arch/x86/entry/common.c:50 [inline]
         do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
         entry_SYSCALL_64_after_hwframe+0x63/0xcd

  other info that might help us debug this:

   Possible unsafe locking scenario:

         CPU0                    CPU1
         ----                    ----
    lock(btrfs-tree-00);
                                 lock(&delayed_node->mutex);
                                 lock(btrfs-tree-00);
    lock(&delayed_node->mutex);

   *** DEADLOCK ***

  3 locks held by syz-executor.2/13257:
   #0: ffff88802c1ee370 (btrfs_trans_num_writers){++++}-{0:0}, at: spin_unlock include/linux/spinlock.h:391 [inline]
   #0: ffff88802c1ee370 (btrfs_trans_num_writers){++++}-{0:0}, at: join_transaction+0xb87/0xe00 fs/btrfs/transaction.c:287
   #1: ffff88802c1ee398 (btrfs_trans_num_extwriters){++++}-{0:0}, at: join_transaction+0xbb2/0xe00 fs/btrfs/transaction.c:288
   #2: ffff88802a5ab8e8 (btrfs-tree-00){++++}-{3:3}, at: __btrfs_tree_lock+0x3c/0x2a0 fs/btrfs/locking.c:198

  stack backtrace:
  CPU: 0 PID: 13257 Comm: syz-executor.2 Not tainted 6.5.0-rc7-syzkaller-00024-g93f5de5f648d #0
  Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/26/2023
  Call Trace:
   <TASK>
   __dump_stack lib/dump_stack.c:88 [inline]
   dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106
   check_noncircular+0x375/0x4a0 kernel/locking/lockdep.c:2195
   check_prev_add kernel/locking/lockdep.c:3142 [inline]
   check_prevs_add kernel/locking/lockdep.c:3261 [inline]
   validate_chain kernel/locking/lockdep.c:3876 [inline]
   __lock_acquire+0x39ff/0x7f70 kernel/locking/lockdep.c:5144
   lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5761
   __mutex_lock_common+0x1d8/0x2530 kernel/locking/mutex.c:603
   __mutex_lock kernel/locking/mutex.c:747 [inline]
   mutex_lock_nested+0x1b/0x20 kernel/locking/mutex.c:799
   __btrfs_release_delayed_node+0x9a/0xaa0 fs/btrfs/delayed-inode.c:256
   btrfs_release_delayed_node fs/btrfs/delayed-inode.c:281 [inline]
   __btrfs_run_delayed_items+0x2b5/0x430 fs/btrfs/delayed-inode.c:1156
   btrfs_commit_transaction+0x859/0x2ff0 fs/btrfs/transaction.c:2276
   btrfs_sync_file+0xf56/0x1330 fs/btrfs/file.c:1988
   vfs_fsync_range fs/sync.c:188 [inline]
   vfs_fsync fs/sync.c:202 [inline]
   do_fsync fs/sync.c:212 [inline]
   __do_sys_fsync fs/sync.c:220 [inline]
   __se_sys_fsync fs/sync.c:218 [inline]
   __x64_sys_fsync+0x196/0x1e0 fs/sync.c:218
   do_syscall_x64 arch/x86/entry/common.c:50 [inline]
   do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
   entry_SYSCALL_64_after_hwframe+0x63/0xcd
  RIP: 0033:0x7f3ad047cae9
  Code: 28 00 00 00 75 (...)
  RSP: 002b:00007f3ad12510c8 EFLAGS: 00000246 ORIG_RAX: 000000000000004a
  RAX: ffffffffffffffda RBX: 00007f3ad059bf80 RCX: 00007f3ad047cae9
  RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000005
  RBP: 00007f3ad04c847a R08: 0000000000000000 R09: 0000000000000000
  R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
  R13: 000000000000000b R14: 00007f3ad059bf80 R15: 00007ffe56af92f8
   </TASK>
  ------------[ cut here ]------------

Fix this by releasing the path before releasing the delayed node in the
error path at __btrfs_run_delayed_items().

Reported-by: syzbot+a379155f07c134ea9879@syzkaller.appspotmail.com
Link: https://lore.kernel.org/linux-btrfs/000000000000abba27060403b5bd@google.com/
CC: stable@vger.kernel.org # 4.14+
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00
Jens Axboe
d7b2abd87d dm: don't attempt to queue IO under RCU protection
commit a9ce385344 upstream.

dm looks up the table for IO based on the request type, with an
assumption that if the request is marked REQ_NOWAIT, it's fine to
attempt to submit that IO while under RCU read lock protection. This
is not OK, as REQ_NOWAIT just means that we should not be sleeping
waiting on other IO, it does not mean that we can't potentially
schedule.

A simple test case demonstrates this quite nicely:

int main(int argc, char *argv[])
{
        struct iovec iov;
        int fd;

        fd = open("/dev/dm-0", O_RDONLY | O_DIRECT);
        posix_memalign(&iov.iov_base, 4096, 4096);
        iov.iov_len = 4096;
        preadv2(fd, &iov, 1, 0, RWF_NOWAIT);
        return 0;
}

which will instantly spew:

BUG: sleeping function called from invalid context at include/linux/sched/mm.h:306
in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 5580, name: dm-nowait
preempt_count: 0, expected: 0
RCU nest depth: 1, expected: 0
INFO: lockdep is turned off.
CPU: 7 PID: 5580 Comm: dm-nowait Not tainted 6.6.0-rc1-g39956d2dcd81 #132
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <TASK>
 dump_stack_lvl+0x11d/0x1b0
 __might_resched+0x3c3/0x5e0
 ? preempt_count_sub+0x150/0x150
 mempool_alloc+0x1e2/0x390
 ? mempool_resize+0x7d0/0x7d0
 ? lock_sync+0x190/0x190
 ? lock_release+0x4b7/0x670
 ? internal_get_user_pages_fast+0x868/0x2d40
 bio_alloc_bioset+0x417/0x8c0
 ? bvec_alloc+0x200/0x200
 ? internal_get_user_pages_fast+0xb8c/0x2d40
 bio_alloc_clone+0x53/0x100
 dm_submit_bio+0x27f/0x1a20
 ? lock_release+0x4b7/0x670
 ? blk_try_enter_queue+0x1a0/0x4d0
 ? dm_dax_direct_access+0x260/0x260
 ? rcu_is_watching+0x12/0xb0
 ? blk_try_enter_queue+0x1cc/0x4d0
 __submit_bio+0x239/0x310
 ? __bio_queue_enter+0x700/0x700
 ? kvm_clock_get_cycles+0x40/0x60
 ? ktime_get+0x285/0x470
 submit_bio_noacct_nocheck+0x4d9/0xb80
 ? should_fail_request+0x80/0x80
 ? preempt_count_sub+0x150/0x150
 ? lock_release+0x4b7/0x670
 ? __bio_add_page+0x143/0x2d0
 ? iov_iter_revert+0x27/0x360
 submit_bio_noacct+0x53e/0x1b30
 submit_bio_wait+0x10a/0x230
 ? submit_bio_wait_endio+0x40/0x40
 __blkdev_direct_IO_simple+0x4f8/0x780
 ? blkdev_bio_end_io+0x4c0/0x4c0
 ? stack_trace_save+0x90/0xc0
 ? __bio_clone+0x3c0/0x3c0
 ? lock_release+0x4b7/0x670
 ? lock_sync+0x190/0x190
 ? atime_needs_update+0x3bf/0x7e0
 ? timestamp_truncate+0x21b/0x2d0
 ? inode_owner_or_capable+0x240/0x240
 blkdev_direct_IO.part.0+0x84a/0x1810
 ? rcu_is_watching+0x12/0xb0
 ? lock_release+0x4b7/0x670
 ? blkdev_read_iter+0x40d/0x530
 ? reacquire_held_locks+0x4e0/0x4e0
 ? __blkdev_direct_IO_simple+0x780/0x780
 ? rcu_is_watching+0x12/0xb0
 ? __mark_inode_dirty+0x297/0xd50
 ? preempt_count_add+0x72/0x140
 blkdev_read_iter+0x2a4/0x530
 do_iter_readv_writev+0x2f2/0x3c0
 ? generic_copy_file_range+0x1d0/0x1d0
 ? fsnotify_perm.part.0+0x25d/0x630
 ? security_file_permission+0xd8/0x100
 do_iter_read+0x31b/0x880
 ? import_iovec+0x10b/0x140
 vfs_readv+0x12d/0x1a0
 ? vfs_iter_read+0xb0/0xb0
 ? rcu_is_watching+0x12/0xb0
 ? rcu_is_watching+0x12/0xb0
 ? lock_release+0x4b7/0x670
 do_preadv+0x1b3/0x260
 ? do_readv+0x370/0x370
 __x64_sys_preadv2+0xef/0x150
 do_syscall_64+0x39/0xb0
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f5af41ad806
Code: 41 54 41 89 fc 55 44 89 c5 53 48 89 cb 48 83 ec 18 80 3d e4 dd 0d 00 00 74 7a 45 89 c1 49 89 ca 45 31 c0 b8 47 01 00 00 0f 05 <48> 3d 00 f0 ff ff 0f 87 be 00 00 00 48 85 c0 79 4a 48 8b 0d da 55
RSP: 002b:00007ffd3145c7f0 EFLAGS: 00000246 ORIG_RAX: 0000000000000147
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5af41ad806
RDX: 0000000000000001 RSI: 00007ffd3145c850 RDI: 0000000000000003
RBP: 0000000000000008 R08: 0000000000000000 R09: 0000000000000008
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000003
R13: 00007ffd3145c850 R14: 000055f5f0431dd8 R15: 0000000000000001
 </TASK>

where in fact it is dm itself that attempts to allocate a bio clone with
GFP_NOIO under the rcu read lock, regardless of the request type.

Fix this by getting rid of the special casing for REQ_NOWAIT, and just
use the normal SRCU protected table lookup. Get rid of the bio based
table locking helpers at the same time, as they are now unused.

Cc: stable@vger.kernel.org
Fixes: 563a225c9f ("dm: introduce dm_{get,put}_live_table_bio called from dm_submit_bio")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00
Hamza Mahfooz
216eae7d7d Revert "drm/amd: Disable S/G for APUs when 64GB or more host memory"
commit 169ed4ece8 upstream.

This reverts commit 70e64c4d52.

Since, we now have an actual fix for this issue, we can get rid of this
workaround as it can cause pin failures if enough VRAM isn't carved out
by the BIOS.

Cc: stable@vger.kernel.org # 6.1+
Acked-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00
Mariusz Tkaczyk
98ea94f162 md: Put the right device in md_seq_next
commit c8870379a2 upstream.

If there are multiple arrays in system and one mddevice is marked
with MD_DELETED and md_seq_next() is called in the middle of removal
then it _get()s proper device but it may _put() deleted one. As a result,
active counter may never be zeroed for mddevice and it cannot
be removed.

Put the device which has been _get with previous md_seq_next() call.

Cc: stable@vger.kernel.org
Fixes: 12a6caf273 ("md: only delete entries from all_mddevs when the disk is freed")
Reported-by: AceLan Kao <acelan@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217798
Cc: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230914152416.10819-1-mariusz.tkaczyk@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00
Keith Busch
f07c0bc27b nvme: avoid bogus CRTO values
commit 6cc834ba62 upstream.

Some devices are reporting controller ready mode support, but return 0
for CRTO. These devices require a much higher time to ready than that,
so they are failing to initialize after the driver starter preferring
that value over CAP.TO.

The spec requires that CAP.TO match the appropritate CRTO value, or be
set to 0xff if CRTO is larger than that. This means that CAP.TO can be
used to validate if CRTO is reliable, and provides an appropriate
fallback for setting the timeout value if not. Use whichever is larger.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=217863
Reported-by: Cláudio Sampaio <patola@gmail.com>
Reported-by: Felix Yan <felixonmars@archlinux.org>
Tested-by: Felix Yan <felixonmars@archlinux.org>
Based-on-a-patch-by: Felix Yan <felixonmars@archlinux.org>
Cc: stable@vger.kernel.org
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-23 11:11:10 +02:00