Merge 6.6.93 into android15-6.6-lts

GKI (arm64) relevant 119 out of 444 changes, affecting 199 files +1953/-1215
  497f19cacb nvmem: core: verify cell's raw_len [1 file, +12/-0]
  35d77c8d88 nvmem: core: update raw_len if the bit reading is required [1 file, +3/-1]
  42d15918da scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices [2 files, +35/-0]
  b49b5132e4 virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN [1 file, +1/-1]
  c15dc980ff dma-mapping: avoid potential unused data compilation warning [1 file, +8/-4]
  20fb292ab5 cgroup: Fix compilation issue due to cgroup_mutex not being exported [1 file, +1/-1]
  38aa3cf154 bpf: fix possible endless loop in BPF map iteration [1 file, +1/-1]
  2371143e41 fuse: Return EPERM rather than ENOSYS from link() [1 file, +2/-0]
  50702e7b47 arm64: Add support for HIP09 Spectre-BHB mitigation [2 files, +3/-0]
  c1ab9f008e tracing: Mark binary printing functions with __printf() attribute [4 files, +18/-21]
  09096ead92 mailbox: use error ret code of of_parse_phandle_with_args() [1 file, +4/-3]
  0c2aa72f4f dql: Fix dql->limit value when reset. [1 file, +1/-1]
  454a770aea lockdep: Fix wait context check on softirq for PREEMPT_RT [1 file, +18/-0]
  e4510552c2 PCI: dwc: ep: Ensure proper iteration over outbound map windows [1 file, +1/-1]
  f29eb4c63b ext4: on a remount, only log the ro or r/w state when it has changed [1 file, +4/-3]
  ea3d95e05e libnvdimm/labels: Fix divide error in nd_label_data_init() [1 file, +2/-1]
  4eda8a85d4 ext4: reorder capability check last [1 file, +2/-2]
  5741b9d7bb bpf: Return prog btf_id without capable check [1 file, +2/-2]
  ed88717950 jbd2: do not try to recover wiped journal [1 file, +6/-5]
  a7b7bc510e tcp: reorganize tcp_in_ack_event() and tcp_count_delivered() [1 file, +32/-24]
  bc8023ef3b bpf: Allow pre-ordering for bpf cgroup progs [5 files, +30/-9]
  ba8354a613 dm: restrict dm device size to 2^63-512 bytes [1 file, +4/-0]
  aa97ea576a pinctrl-tegra: Restore SFSEL bit when freeing pins [2 files, +57/-8]
  d7f3c874ea ext4: reject the 'data_err=abort' option in nojournal mode [1 file, +12/-0]
  6df3855868 posix-timers: Add cond_resched() to posix_timer_add() search loop [1 file, +1/-0]
  da36c3ad7c timer_list: Don't use %pK through printk() [1 file, +2/-2]
  89947eea8f netfilter: conntrack: Bound nf_conntrack sysctl writes [1 file, +9/-3]
  110f701e60 arm64/mm: Check PUD_TYPE_TABLE in pud_bad() [1 file, +2/-1]
  903c4a0c2a mmc: sdhci: Disable SD card clock before changing parameters [1 file, +7/-2]
  def5f5bc83 usb: xhci: Don't change the status of stalled TDs on failed Stop EP [1 file, +11/-1]
  386a1a0d55 printk: Check CON_SUSPEND when unblanking a console [1 file, +12/-2]
  8ebf2709fe ipv6: save dontfrag in cork [2 files, +6/-4]
  0acdc4d6e6 crypto: lzo - Fix compression buffer overrun [6 files, +106/-28]
  fb69189023 tcp: bring back NUMA dispersion in inet_ehash_locks_alloc() [1 file, +26/-11]
  b27be76f35 drm/gem: Test for imported GEM buffers with helper [2 files, +16/-2]
  c5b23df98a net: phylink: use pl->link_interface in phylink_expects_phy() [1 file, +1/-1]
  30ae895966 perf/hw_breakpoint: Return EOPNOTSUPP for unsupported breakpoint type [1 file, +3/-2]
  9778a91827 ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config(). [2 files, +16/-24]
  faa24692f7 media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map [1 file, +6/-0]
  032f3bf647 media: uvcvideo: Handle uvc menu translation inside uvc_get_le_value [1 file, +32/-45]
  1ae981c91d perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters [1 file, +2/-2]
  3cd2aa9367 cpuidle: menu: Avoid discarding useful information [1 file, +12/-1]
  52aa28f7b1 dm: fix unconditional IO throttle caused by REQ_PREFLUSH [1 file, +6/-2]
  3a0c8429ab crypto: ahash - Set default reqsize from ahash_alg [2 files, +7/-0]
  b2ea189a95 crypto: skcipher - Zap type in crypto_alloc_sync_skcipher [1 file, +1/-0]
  ba41e4e627 genirq/msi: Store the IOMMU IOVA directly in msi_desc instead of iommu_cookie [2 files, +25/-36]
  242272c953 bpf: don't do clean_live_states when state->loop_entry->branches > 0 [1 file, +4/-0]
  0d398ed850 PCI: Fix old_size lower bound in calculate_iosize() too [1 file, +2/-4]
  9dcce3f40d ASoC: ops: Enforce platform maximum on initial value [1 file, +28/-1]
  b3d2a8809e ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot() [1 file, +5/-3]
  de4332d7a5 pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map [1 file, +8/-2]
  f8a9f45f75 media: v4l: Memset argument to 0 before calling get_mbus_config pad op [2 files, +5/-1]
  e9bed533ec sched: Reduce the default slice to avoid tasks getting an extra tick [1 file, +3/-3]
  6a7b7e98fe phy: core: don't require set_mode() callback for phy_get_mode() to work [1 file, +4/-3]
  cc1d408e7c ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure(). [2 files, +4/-4]
  09c3a82664 r8152: add vendor/device ID pair for Dell Alienware AW1022z [2 files, +2/-0]
  7ef54a11c1 pstore: Change kmsg_bytes storage size to u32 [3 files, +9/-8]
  73e7c65b21 ext4: don't write back data before punch hole in nojournal mode [1 file, +5/-13]
  6fed5e23d2 f2fs: introduce f2fs_base_attr for global sysfs entries [1 file, +52/-22]
  2cb57a887a ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only [1 file, +10/-6]
  9ed3c1b11d bridge: mdb: Allow replace of a host-joined group [2 files, +2/-2]
  9abec90c85 rcu: handle unstable rdp in rcu_read_unlock_strict() [2 files, +11/-2]
  f47d605c5e rcu: fix header guard for rcu_all_qs() [1 file, +1/-1]
  948664b92e perf: Avoid the read if the count is already updated [3 files, +24/-18]
  9610a67963 firmware: arm_scmi: Relax duplicate name constraint across protocol ids [1 file, +6/-13]
  e585f4f44a drm/atomic: clarify the rules around drm_atomic_state->allow_modeset [1 file, +21/-2]
  fe4a7145f0 drm: Add valid clones check [1 file, +28/-0]
  0a3f5efd1c nvme-pci: add quirks for device 126f:1001 [1 file, +3/-0]
  a7a2315d8d nvme-pci: add quirks for WDC Blue SN550 15b7:5009 [1 file, +3/-0]
  b72952c8c3 io_uring/fdinfo: annotate racy sq/cq head/tail reads [1 file, +2/-2]
  7a97f961a5 btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref [1 file, +1/-1]
  d8ece4ced3 __legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock [1 file, +1/-5]
  b58a295d10 espintcp: remove encap socket caching to avoid reference leak [4 files, +8/-94]
  5ff1a234fa kernel/fork: only call untrack_pfn_clear() on VMAs duplicated for fork() [1 file, +5/-4]
  dcdc1aca68 xfrm: Sanitize marks before insert [2 files, +6/-0]
  c331a616a0 Bluetooth: L2CAP: Fix not checking l2cap_chan security level [1 file, +8/-7]
  c844ace5b8 io_uring: fix overflow resched cqe reordering [1 file, +1/-0]
  b19fc1d0be net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done [1 file, +5/-0]
  e80f4f9c64 can: slcan: allow reception of short error messages [1 file, +20/-6]
  76c84c3728 can: bcm: add locking for bcm_op runtime updates [1 file, +45/-21]
  1f912f8484 can: bcm: add missing rcu read protection for procfs content [1 file, +9/-4]
  74d90875f3 ALSA: pcm: Fix race of buffer access at PCM OSS layer [3 files, +14/-2]
  7227fc0692 drm/edid: fixed the bug that hdr metadata was not reset [1 file, +1/-0]
  f33001a7c1 Input: xpad - add more controllers [1 file, +3/-0]
  363fd868d7 memcg: always call cond_resched() after fn() [1 file, +2/-4]
  f391043332 mm/page_alloc.c: avoid infinite retries caused by cpuset race [1 file, +8/-0]
  77192e9cfe highmem: add folio_test_partial_kmap() [2 files, +10/-3]
  1f91707374 pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group() [1 file, +1/-1]
  f968f28cd1 drm/gem: Internally test import_attach for imported objects [1 file, +1/-2]
  63815bef47 hrtimers: Force migrate away hrtimers queued after CPUHP_AP_HRTIMERS_DYING [2 files, +83/-21]
  4be073d590 af_unix: Return struct unix_sock from unix_get_socket(). [3 files, +15/-25]
  328840c93b af_unix: Run GC on only one CPU. [1 file, +27/-27]
  acc97866c1 af_unix: Try to run GC async. [5 files, +29/-5]
  36f1f6ac53 af_unix: Replace BUG_ON() with WARN_ON_ONCE(). [2 files, +8/-8]
  c0d56c028d af_unix: Remove io_uring code for GC. [3 files, +2/-30]
  8eb55b667a af_unix: Remove CONFIG_UNIX_SCM. [8 files, +137/-175]
  9e98ba0c73 af_unix: Allocate struct unix_vertex for each inflight AF_UNIX fd. [5 files, +63/-0]
  4fc7df1c6d af_unix: Allocate struct unix_edge for each inflight AF_UNIX fd. [4 files, +19/-0]
  d2d9f382e2 af_unix: Link struct unix_edge when queuing skb. [5 files, +100/-3]
  494accabb5 af_unix: Bulk update unix_tot_inflight/unix_inflight when queuing skb. [1 file, +7/-11]
  856aacbe2c af_unix: Iterate all vertices by DFS. [2 files, +76/-0]
  3ee9b24bd6 af_unix: Detect Strongly Connected Components. [2 files, +47/-2]
  36f924e4bf af_unix: Save listener for embryo socket. [2 files, +5/-1]
  27a07364ce af_unix: Fix up unix_edge.successor for embryo socket. [3 files, +21/-2]
  e0e23fc499 af_unix: Save O(n) setup of Tarjan's algo. [2 files, +15/-12]
  cdaa3499a8 af_unix: Skip GC if no cycle exists. [1 file, +47/-1]
  d23802221f af_unix: Avoid Tarjan's algorithm if unnecessary. [1 file, +27/-1]
  324005012f af_unix: Assign a unique index to SCC. [2 files, +16/-15]
  2c2d0c662d af_unix: Detect dead SCC. [1 file, +43/-1]
  de7921631f af_unix: Replace garbage collection algorithm. [3 files, +64/-274]
  7b1ffbd3b2 af_unix: Remove lock dance in unix_peek_fds(). [3 files, +1/-44]
  3600729b7f af_unix: Try not to hold unix_gc_lock during accept(). [3 files, +18/-5]
  a288920ff9 af_unix: Don't access successor in unix_del_edges() during GC. [1 file, +12/-5]
  c0c8d419da af_unix: Add dead flag to struct scm_fp_list. [3 files, +12/-4]
  ed14f8ae9b af_unix: Fix garbage collection of embryos carrying OOB with SCM_RIGHTS [1 file, +14/-9]
  ea61eda1f4 af_unix: Fix uninit-value in __unix_walk_scc() [1 file, +5/-4]
  1846a7b92b coredump: fix error handling for replace_fd() [1 file, +7/-2]
  cdb61a705f coredump: hand a pidfd to the usermode coredump helper [2 files, +72/-7]
  f83097445b nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro [1 file, +2/-0]

Changes in 6.6.93
	gpio: pca953x: Split pca953x_restore_context() and pca953x_save_context()
	gpio: pca953x: Simplify code with cleanup helpers
	gpio: pca953x: fix IRQ storm on system wake up
	i2c: designware: Uniform initialization flow for polling mode
	i2c: designware: Remove ->disable() callback
	i2c: designware: Use temporary variable for struct device
	i2c: designware: Fix an error handling path in i2c_dw_pci_probe()
	phy: renesas: rcar-gen3-usb2: Add support to initialize the bus
	phy: renesas: rcar-gen3-usb2: Move IRQ request in probe
	phy: renesas: rcar-gen3-usb2: Lock around hardware registers and driver data
	phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off
	cpufreq: Add SM8650 to cpufreq-dt-platdev blocklist
	nvmem: rockchip-otp: Move read-offset into variant-data
	nvmem: rockchip-otp: add rk3576 variant data
	nvmem: core: verify cell's raw_len
	nvmem: core: update raw_len if the bit reading is required
	nvmem: qfprom: switch to 4-byte aligned reads
	scsi: target: iscsi: Fix timeout on deleted connection
	scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices
	virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN
	intel_th: avoid using deprecated page->mapping, index fields
	dma-mapping: avoid potential unused data compilation warning
	cgroup: Fix compilation issue due to cgroup_mutex not being exported
	vhost-scsi: protect vq->log_used with vq->mutex
	scsi: mpi3mr: Add level check to control event logging
	net: enetc: refactor bulk flipping of RX buffers to separate function
	ima: process_measurement() needlessly takes inode_lock() on MAY_READ
	drm/amdgpu: Allow P2P access through XGMI
	selftests/bpf: Mitigate sockmap_ktls disconnect_after_delete failure
	bpf: fix possible endless loop in BPF map iteration
	samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora
	kconfig: merge_config: use an empty file as initfile
	s390/vfio-ap: Fix no AP queue sharing allowed message written to kernel log
	cifs: Add fallback for SMB2 CREATE without FILE_READ_ATTRIBUTES
	cifs: Fix querying and creating MF symlinks over SMB1
	cifs: Fix negotiate retry functionality
	smb: client: Store original IO parameters and prevent zero IO sizes
	fuse: Return EPERM rather than ENOSYS from link()
	NFSv4: Check for delegation validity in nfs_start_delegation_return_locked()
	NFS: Don't allow waiting for exiting tasks
	SUNRPC: Don't allow waiting for exiting tasks
	arm64: Add support for HIP09 Spectre-BHB mitigation
	tracing: Mark binary printing functions with __printf() attribute
	ACPI: PNP: Add Intel OC Watchdog IDs to non-PNP device list
	mailbox: pcc: Use acpi_os_ioremap() instead of ioremap()
	mailbox: use error ret code of of_parse_phandle_with_args()
	riscv: Allow NOMMU kernels to access all of RAM
	fbdev: fsl-diu-fb: add missing device_remove_file()
	fbcon: Use correct erase colour for clearing in fbcon
	fbdev: core: tileblit: Implement missing margin clearing for tileblit
	cifs: add validation check for the fields in smb_aces
	cifs: Fix establishing NetBIOS session for SMB2+ connection
	NFSv4: Treat ENETUNREACH errors as fatal for state recovery
	SUNRPC: rpc_clnt_set_transport() must not change the autobind setting
	SUNRPC: rpcbind should never reset the port to the value '0'
	spi-rockchip: Fix register out of bounds access
	thermal/drivers/qoriq: Power down TMU on system suspend
	dql: Fix dql->limit value when reset.
	lockdep: Fix wait context check on softirq for PREEMPT_RT
	objtool: Properly disable uaccess validation
	PCI: dwc: ep: Ensure proper iteration over outbound map windows
	tools/build: Don't pass test log files to linker
	pNFS/flexfiles: Report ENETDOWN as a connection error
	PCI: vmd: Disable MSI remapping bypass under Xen
	ext4: on a remount, only log the ro or r/w state when it has changed
	libnvdimm/labels: Fix divide error in nd_label_data_init()
	mmc: host: Wait for Vdd to settle on card power off
	wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2
	wifi: mt76: mt7996: revise TXS size
	x86/stackprotector/64: Only export __ref_stack_chk_guard on CONFIG_SMP
	x86/mm: Check return value from memblock_phys_alloc_range()
	i2c: qup: Vote for interconnect bandwidth to DRAM
	i2c: pxa: fix call balance of i2c->clk handling routines
	btrfs: make btrfs_discard_workfn() block_group ref explicit
	btrfs: avoid linker error in btrfs_find_create_tree_block()
	btrfs: run btrfs_error_commit_super() early
	btrfs: fix non-empty delayed iputs list on unmount due to async workers
	btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work()
	btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
	drm/amd/display: Guard against setting dispclk low for dcn31x
	i3c: master: svc: Fix missing STOP for master request
	dlm: make tcp still work in multi-link env
	um: Store full CSGSFS and SS register from mcontext
	um: Update min_low_pfn to match changes in uml_reserved
	ext4: reorder capability check last
	hypfs_create_cpu_files(): add missing check for hypfs_mkdir() failure
	scsi: st: Tighten the page format heuristics with MODE SELECT
	scsi: st: ERASE does not change tape location
	vfio/pci: Handle INTx IRQ_NOTCONNECTED
	bpf: Return prog btf_id without capable check
	jbd2: do not try to recover wiped journal
	tcp: reorganize tcp_in_ack_event() and tcp_count_delivered()
	rtc: rv3032: fix EERD location
	objtool: Fix error handling inconsistencies in check()
	thunderbolt: Do not add non-active NVM if NVM upgrade is disabled for retimer
	ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect
	bpf: Allow pre-ordering for bpf cgroup progs
	kbuild: fix argument parsing in scripts/config
	crypto: octeontx2 - suppress auth failure screaming due to negative tests
	dm: restrict dm device size to 2^63-512 bytes
	net/smc: use the correct ndev to find pnetid by pnetid table
	xen: Add support for XenServer 6.1 platform device
	pinctrl-tegra: Restore SFSEL bit when freeing pins
	mfd: tps65219: Remove TPS65219_REG_TI_DEV_ID check
	drm/amdgpu: Update SRIOV video codec caps
	ASoC: sun4i-codec: support hp-det-gpios property
	ext4: reject the 'data_err=abort' option in nojournal mode
	ext4: do not convert the unwritten extents if data writeback fails
	RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
	posix-timers: Add cond_resched() to posix_timer_add() search loop
	timer_list: Don't use %pK through printk()
	netfilter: conntrack: Bound nf_conntrack sysctl writes
	arm64/mm: Check PUD_TYPE_TABLE in pud_bad()
	mmc: dw_mmc: add exynos7870 DW MMC support
	mmc: sdhci: Disable SD card clock before changing parameters
	usb: xhci: Don't change the status of stalled TDs on failed Stop EP
	hwmon: (dell-smm) Increment the number of fans
	printk: Check CON_SUSPEND when unblanking a console
	wifi: iwlwifi: fix debug actions order
	ipv6: save dontfrag in cork
	drm/amd/display: remove minimum Dispclk and apply oem panel timing.
	drm/amd/display: calculate the remain segments for all pipes
	drm/amd/display: Fix incorrect DPCD configs while Replay/PSR switch
	gfs2: Check for empty queue in run_queue
	auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common"
	ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup()
	iommu/amd/pgtbl_v2: Improve error handling
	cpufreq: tegra186: Share policy per cluster
	watchdog: aspeed: Update bootstatus handling
	crypto: lzo - Fix compression buffer overrun
	drm/amdkfd: Set per-process flags only once cik/vi
	arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator
	arm64: tegra: Resize aperture for the IGX PCIe C5 slot
	powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7
	ALSA: seq: Improve data consistency at polling
	tcp: bring back NUMA dispersion in inet_ehash_locks_alloc()
	rtc: ds1307: stop disabling alarms on probe
	ieee802154: ca8210: Use proper setters and getters for bitwise types
	ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114
	media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()
	dm cache: prevent BUG_ON by blocking retries on failed device resumes
	orangefs: Do not truncate file size
	drm/gem: Test for imported GEM buffers with helper
	net: phylink: use pl->link_interface in phylink_expects_phy()
	remoteproc: qcom_wcnss: Handle platforms with only single power domain
	drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c
	drm/amd/display: Skip checking FRL_MODE bit for PCON BW determination
	media: cx231xx: set device_caps for 417
	pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned"
	net: ethernet: ti: cpsw_new: populate netdev of_node
	net: pktgen: fix mpls maximum labels list parsing
	perf/hw_breakpoint: Return EOPNOTSUPP for unsupported breakpoint type
	ALSA: hda/realtek: Enable PC beep passthrough for HP EliteBook 855 G7
	ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config().
	drm/rockchip: vop2: Add uv swap for cluster window
	media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
	media: uvcvideo: Handle uvc menu translation inside uvc_get_le_value
	clk: imx8mp: inform CCF of maximum frequency of clocks
	x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2
	hwmon: (gpio-fan) Add missing mutex locks
	ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
	drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence
	fpga: altera-cvp: Increase credit timeout
	perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters
	soc: apple: rtkit: Use high prio work queue
	soc: apple: rtkit: Implement OSLog buffers properly
	wifi: ath12k: Report proper tx completion status to mac80211
	PCI: brcmstb: Expand inbound window size up to 64GB
	PCI: brcmstb: Add a softdep to MIP MSI-X driver
	firmware: arm_ffa: Set dma_mask for ffa devices
	net/mlx5: Avoid report two health errors on same syndrome
	selftests/net: have `gro.sh -t` return a correct exit code
	drm/amdkfd: KFD release_work possible circular locking
	leds: pwm-multicolor: Add check for fwnode_property_read_u32
	net: ethernet: mtk_ppe_offload: Allow QinQ, double ETH_P_8021Q only
	net: xgene-v2: remove incorrect ACPI_PTR annotation
	bonding: report duplicate MAC address in all situations
	wifi: ath12k: Improve BSS discovery with hidden SSID in 6 GHz band
	soc: ti: k3-socinfo: Do not use syscon helper to build regmap
	Octeontx2-af: RPM: Register driver with PCI subsys IDs
	x86/build: Fix broken copy command in genimage.sh when making isoimage
	drm/amd/display: handle max_downscale_src_width fail check
	ASoC: mediatek: mt8188: Treat DMIC_GAINx_CUR as non-volatile
	ASoC: mediatek: mt8188: Add reference for dmic clocks
	x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus()
	vhost-scsi: Return queue full for page alloc failures during copy
	vdpa/mlx5: Fix mlx5_vdpa_get_config() endianness on big-endian machines
	cpuidle: menu: Avoid discarding useful information
	media: adv7180: Disable test-pattern control on adv7180
	media: tc358746: improve calculation of the D-PHY timing registers
	libbpf: Fix out-of-bound read
	dm: fix unconditional IO throttle caused by REQ_PREFLUSH
	net/mlx5: Change POOL_NEXT_SIZE define value and make it global
	x86/kaslr: Reduce KASLR entropy on most x86 systems
	crypto: ahash - Set default reqsize from ahash_alg
	crypto: skcipher - Zap type in crypto_alloc_sync_skcipher
	MIPS: Use arch specific syscall name match function
	genirq/msi: Store the IOMMU IOVA directly in msi_desc instead of iommu_cookie
	MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core
	clocksource: mips-gic-timer: Enable counter when CPUs start
	scsi: mpt3sas: Send a diag reset if target reset fails
	wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
	wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
	wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
	wifi: rtw89: fw: propagate error code from rtw89_h2c_tx()
	net: pktgen: fix access outside of user given buffer in pktgen_thread_write()
	EDAC/ie31200: work around false positive build warning
	i3c: master: svc: Flush FIFO before sending Dynamic Address Assignment(DAA)
	drm/amd/display: Add support for disconnected eDP streams
	serial: mctrl_gpio: split disable_ms into sync and no_sync APIs
	RDMA/core: Fix best page size finding when it can cross SG entries
	pmdomain: imx: gpcv2: use proper helper for property detection
	can: c_can: Use of_property_present() to test existence of DT property
	bpf: don't do clean_live_states when state->loop_entry->branches > 0
	eth: mlx4: don't try to complete XDP frames in netpoll
	PCI: Fix old_size lower bound in calculate_iosize() too
	ACPI: HED: Always initialize before evged
	vxlan: Join / leave MC group after remote changes
	media: test-drivers: vivid: don't call schedule in loop
	net/mlx5: Modify LSB bitmask in temperature event to include only the first bit
	net/mlx5: Apply rate-limiting to high temperature warning
	firmware: arm_ffa: Reject higher major version as incompatible
	ASoC: ops: Enforce platform maximum on initial value
	ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG
	ASoC: tas2764: Mark SW_RESET as volatile
	ASoC: tas2764: Power up/down amp on mute ops
	ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()
	pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map
	smack: recognize ipv4 CIPSO w/o categories
	smack: Revert "smackfs: Added check catlen"
	kunit: tool: Use qboot on QEMU x86_64
	media: i2c: imx219: Correct the minimum vblanking value
	media: v4l: Memset argument to 0 before calling get_mbus_config pad op
	net/mlx4_core: Avoid impossible mlx4_db_alloc() order value
	clk: qcom: ipq5018: allow it to be bulid on arm32
	clk: qcom: clk-alpha-pll: Do not use random stack value for recalc rate
	x86/traps: Cleanup and robustify decode_bug()
	sched: Reduce the default slice to avoid tasks getting an extra tick
	serial: sh-sci: Update the suspend/resume support
	phy: core: don't require set_mode() callback for phy_get_mode() to work
	soundwire: amd: change the soundwire wake enable/disable sequence
	drm/amdgpu: Set snoop bit for SDMA for MI series
	drm/amd/display: Don't try AUX transactions on disconnected link
	drm/amdgpu: reset psp->cmd to NULL after releasing the buffer
	drm/amd/display: Update CR AUX RD interval interpretation
	drm/amd/display: Initial psr_version with correct setting
	drm/amd/display: Increase block_sequence array size
	drm/amdgpu: enlarge the VBIOS binary size limit
	drm/amd/display/dm: drop hw_support check in amdgpu_dm_i2c_xfer()
	scsi: target: spc: Fix loop traversal in spc_rsoc_get_descr()
	net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB
	net/mlx5e: set the tx_queue_len for pfifo_fast
	net/mlx5e: reduce rep rxq depth to 256 for ECPF
	net/mlx5e: reduce the max log mpwrq sz for ECPF and reps
	drm/v3d: Add clock handling
	wifi: mac80211: don't unconditionally call drv_mgd_complete_tx()
	wifi: mac80211: remove misplaced drv_mgd_complete_tx() call
	net: fec: Refactor MAC reset to function
	powerpc/pseries/iommu: memory notifier incorrectly adds TCEs for pmemory
	arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src
	ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure().
	r8152: add vendor/device ID pair for Dell Alienware AW1022z
	pstore: Change kmsg_bytes storage size to u32
	leds: trigger: netdev: Configure LED blink interval for HW offload
	ext4: don't write back data before punch hole in nojournal mode
	ext4: remove writable userspace mappings before truncating page cache
	wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
	wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU
	clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs
	hwmon: (xgene-hwmon) use appropriate type for the latency value
	f2fs: introduce f2fs_base_attr for global sysfs entries
	media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available
	net/mlx5e: Avoid WARN_ON when configuring MQPRIO with HTB offload enabled
	vxlan: Annotate FDB data races
	ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only
	r8169: don't scan PHY addresses > 0
	bridge: mdb: Allow replace of a host-joined group
	ice: treat dyn_allowed only as suggestion
	rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
	rcu: handle unstable rdp in rcu_read_unlock_strict()
	rcu: fix header guard for rcu_all_qs()
	perf: Avoid the read if the count is already updated
	ice: count combined queues using Rx/Tx count
	net/mana: fix warning in the writer of client oob
	scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine
	scsi: lpfc: Free phba irq in lpfc_sli4_enable_msi() when pci_irq_vector() fails
	scsi: st: Restore some drive settings after reset
	wifi: ath12k: Avoid napi_sync() before napi_enable()
	HID: usbkbd: Fix the bit shift number for LED_KANA
	arm64: zynqmp: add clock-output-names property in clock nodes
	ASoC: codecs: pcm3168a: Allow for 24-bit in provider mode
	ASoC: rt722-sdca: Add some missing readable registers
	drm/ast: Find VBIOS mode from regular display size
	bpftool: Fix readlink usage in get_fd_type
	firmware: arm_scmi: Relax duplicate name constraint across protocol ids
	perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt
	perf/amd/ibs: Fix ->config to sample period calculation for OP PMU
	wifi: rtl8xxxu: retry firmware download on error
	wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate
	wifi: rtw89: add wiphy_lock() to work that isn't held wiphy_lock() yet
	spi: zynqmp-gqspi: Always acknowledge interrupts
	regulator: ad5398: Add device tree support
	wifi: ath12k: fix ath12k_hal_tx_cmd_ext_desc_setup() info1 override
	accel/qaic: Mask out SR-IOV PCI resources
	wifi: ath9k: return by of_get_mac_address
	wifi: ath12k: Fix end offset bit definition in monitor ring descriptor
	drm: bridge: adv7511: fill stream capabilities
	drm/atomic: clarify the rules around drm_atomic_state->allow_modeset
	drm/panel-edp: Add Starry 116KHD024006
	drm: Add valid clones check
	ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of()
	book3s64/radix: Fix compile errors when CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=n
	pinctrl: meson: define the pull up/down resistor value as 60 kOhm
	ASoC: cs42l43: Disable headphone clamps during type detection
	ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013
	ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx
	nvme-pci: add quirks for device 126f:1001
	nvme-pci: add quirks for WDC Blue SN550 15b7:5009
	nvmet-tcp: don't restore null sk_state_change
	io_uring/fdinfo: annotate racy sq/cq head/tail reads
	cifs: Fix and improve cifs_query_path_info() and cifs_query_file_info()
	cifs: Fix changing times and read-only attr over SMB1 smb_set_file_info() function
	btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref
	btrfs: avoid NULL pointer dereference if no valid csum tree
	tools: ynl-gen: validate 0 len strings from kernel
	wifi: iwlwifi: add support for Killer on MTL
	xenbus: Allow PVH dom0 a non-local xenstore
	__legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock
	soundwire: bus: Fix race on the creation of the IRQ domain
	espintcp: remove encap socket caching to avoid reference leak
	dmaengine: idxd: add wq driver name support for accel-config user tool
	dmaengine: idxd: Fix allowing write() from different address spaces
	kernel/fork: only call untrack_pfn_clear() on VMAs duplicated for fork()
	remoteproc: qcom_wcnss: Fix on platforms without fallback regulators
	clk: sunxi-ng: d1: Add missing divider for MMC mod clocks
	xfrm: Sanitize marks before insert
	dmaengine: idxd: Fix ->poll() return value
	dmaengine: fsl-edma: Fix return code for unhandled interrupts
	Bluetooth: L2CAP: Fix not checking l2cap_chan security level
	Bluetooth: btusb: use skb_pull to avoid unsafe access in QCA dump handling
	bridge: netfilter: Fix forwarding of fragmented packets
	ice: fix vf->num_mac count with port representors
	ice: Fix LACP bonds without SRIOV environment
	pinctrl: qcom/msm: Convert to platform remove callback returning void
	pinctrl: qcom: switch to devm_register_sys_off_handler()
	net: dwmac-sun8i: Use parsed internal PHY address instead of 1
	net: lan743x: Restore SGMII CTRL register on resume
	io_uring: fix overflow resched cqe reordering
	sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()
	octeontx2-pf: Add AF_XDP non-zero copy support
	net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done
	octeontx2-af: Set LMT_ENA bit for APR table entries
	octeontx2-af: Fix APR entry mapping based on APR_LMT_CFG
	clk: s2mps11: initialise clk_hw_onecell_data::num before accessing ::hws[] in probe()
	crypto: algif_hash - fix double free in hash_accept
	padata: do not leak refcount in reorder_work
	can: slcan: allow reception of short error messages
	can: bcm: add locking for bcm_op runtime updates
	can: bcm: add missing rcu read protection for procfs content
	ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext
	ASoc: SOF: topology: connect DAI to a single DAI link
	ASoC: SOF: ipc4-pcm: Delay reporting is only supported for playback direction
	ALSA: pcm: Fix race of buffer access at PCM OSS layer
	ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14ASP10
	llc: fix data loss when reading from a socket in llc_ui_recvmsg()
	can: kvaser_pciefd: Continue parsing DMA buf after dropped RX
	platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store()
	thermal: intel: x86_pkg_temp_thermal: Fix bogus trip temperature
	drm/edid: fixed the bug that hdr metadata was not reset
	smb: client: Fix use-after-free in cifs_fill_dirent
	arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
	smb: client: Reset all search buffer pointers when releasing buffer
	Revert "drm/amd: Keep display off while going into S4"
	Input: xpad - add more controllers
	memcg: always call cond_resched() after fn()
	mm/page_alloc.c: avoid infinite retries caused by cpuset race
	Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"
	ksmbd: fix stream write failure
	spi: spi-fsl-dspi: restrict register range for regmap access
	spi: spi-fsl-dspi: Halt the module after a new message transfer
	spi: spi-fsl-dspi: Reset SR flags before sending a new message
	x86/boot: Compile boot code with -std=gnu11 too
	highmem: add folio_test_partial_kmap()
	pds_core: Prevent possible adminq overflow/stuck condition
	serial: sh-sci: Save and restore more registers
	watchdog: aspeed: fix 64-bit division
	pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group()
	i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work()
	x86/mm/init: Handle the special case of device private pages in add_pages(), to not increase max_pfn and trigger dma_addressing_limited() bounce buffers bounce buffers
	drm/gem: Internally test import_attach for imported objects
	can: kvaser_pciefd: Force IRQ edge in case of nested IRQ
	hrtimers: Force migrate away hrtimers queued after CPUHP_AP_HRTIMERS_DYING
	btrfs: check folio mapping after unlock in relocate_one_folio()
	af_unix: Return struct unix_sock from unix_get_socket().
	af_unix: Run GC on only one CPU.
	af_unix: Try to run GC async.
	af_unix: Replace BUG_ON() with WARN_ON_ONCE().
	af_unix: Remove io_uring code for GC.
	af_unix: Remove CONFIG_UNIX_SCM.
	af_unix: Allocate struct unix_vertex for each inflight AF_UNIX fd.
	af_unix: Allocate struct unix_edge for each inflight AF_UNIX fd.
	af_unix: Link struct unix_edge when queuing skb.
	af_unix: Bulk update unix_tot_inflight/unix_inflight when queuing skb.
	af_unix: Iterate all vertices by DFS.
	af_unix: Detect Strongly Connected Components.
	af_unix: Save listener for embryo socket.
	af_unix: Fix up unix_edge.successor for embryo socket.
	af_unix: Save O(n) setup of Tarjan's algo.
	af_unix: Skip GC if no cycle exists.
	af_unix: Avoid Tarjan's algorithm if unnecessary.
	af_unix: Assign a unique index to SCC.
	af_unix: Detect dead SCC.
	af_unix: Replace garbage collection algorithm.
	af_unix: Remove lock dance in unix_peek_fds().
	af_unix: Try not to hold unix_gc_lock during accept().
	af_unix: Don't access successor in unix_del_edges() during GC.
	af_unix: Add dead flag to struct scm_fp_list.
	af_unix: Fix garbage collection of embryos carrying OOB with SCM_RIGHTS
	af_unix: Fix uninit-value in __unix_walk_scc()
	arm64: dts: qcom: ipq9574: Add missing properties for cryptobam
	arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node
	arm64: dts: qcom: sm8450: Add missing properties for cryptobam
	arm64: dts: qcom: sm8550: Add missing properties for cryptobam
	arm64: dts: ti: k3-am68-sk: Fix regulator hierarchy
	net_sched: hfsc: Address reentrant enqueue adding class to eltree twice
	perf/arm-cmn: Fix REQ2/SNP2 mixup
	perf/arm-cmn: Initialise cmn->cpu earlier
	coredump: fix error handling for replace_fd()
	coredump: hand a pidfd to the usermode coredump helper
	dmaengine: idxd: cdev: Fix uninitialized use of sva in idxd_cdev_open
	HID: quirks: Add ADATA XPG alpha wireless mouse support
	nfs: don't share pNFS DS connections between net namespaces
	platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS
	um: let 'make clean' properly clean underlying SUBARCH as well
	drm/amd/display: fix link_set_dpms_off multi-display MST corner case
	phy: starfive: jh7110-usb: Fix USB 2.0 host occasional detection failure
	spi: spi-sun4i: fix early activation
	nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro
	NFS: Avoid flushing data while holding directory locks in nfs_rename()
	platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys
	platform/x86: thinkpad_acpi: Ignore battery threshold change event notification
	net: ethernet: ti: am65-cpsw: Lower random mac address error print to info
	ksmbd: use list_first_entry_or_null for opinfo_get_list()
	Linux 6.6.93

Change-Id: I05c890884dd1a8efaa774fc2cb19a43b0ee736b8
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2025-07-01 14:44:44 +00:00
29 changed files with 220 additions and 45 deletions

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 6 VERSION = 6
PATCHLEVEL = 6 PATCHLEVEL = 6
SUBLEVEL = 92 SUBLEVEL = 93
EXTRAVERSION = EXTRAVERSION =
NAME = Pinguïn Aangedreven NAME = Pinguïn Aangedreven

View File

@@ -231,6 +231,8 @@
interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <1>; qcom,ee = <1>;
qcom,num-ees = <4>;
num-channels = <16>;
qcom,controlled-remotely; qcom,controlled-remotely;
}; };

View File

@@ -442,7 +442,7 @@
no-map; no-map;
}; };
pil_camera_mem: mmeory@85200000 { pil_camera_mem: memory@85200000 {
reg = <0x0 0x85200000 0x0 0x500000>; reg = <0x0 0x85200000 0x0 0x500000>;
no-map; no-map;
}; };

View File

@@ -4233,6 +4233,8 @@
interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <0>; qcom,ee = <0>;
qcom,num-ees = <4>;
num-channels = <16>;
qcom,controlled-remotely; qcom,controlled-remotely;
iommus = <&apps_smmu 0x584 0x11>, iommus = <&apps_smmu 0x584 0x11>,
<&apps_smmu 0x588 0x0>, <&apps_smmu 0x588 0x0>,

View File

@@ -1866,6 +1866,8 @@
interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <0>; qcom,ee = <0>;
qcom,num-ees = <4>;
num-channels = <20>;
qcom,controlled-remotely; qcom,controlled-remotely;
iommus = <&apps_smmu 0x480 0x0>, iommus = <&apps_smmu 0x480 0x0>,
<&apps_smmu 0x481 0x0>; <&apps_smmu 0x481 0x0>;

View File

@@ -43,6 +43,17 @@
regulator-boot-on; regulator-boot-on;
}; };
vsys_5v0: regulator-vsys5v0 {
/* Output of LM61460 */
compatible = "regulator-fixed";
regulator-name = "vsys_5v0";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vusb_main>;
regulator-always-on;
regulator-boot-on;
};
vsys_3v3: regulator-vsys3v3 { vsys_3v3: regulator-vsys3v3 {
/* Output of LM5141 */ /* Output of LM5141 */
compatible = "regulator-fixed"; compatible = "regulator-fixed";
@@ -75,7 +86,7 @@
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-boot-on; regulator-boot-on;
vin-supply = <&vsys_3v3>; vin-supply = <&vsys_5v0>;
gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>; gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
states = <1800000 0x0>, states = <1800000 0x0>,
<3300000 0x1>; <3300000 0x1>;

View File

@@ -151,5 +151,6 @@ MRPROPER_FILES += $(HOST_DIR)/include/generated
archclean: archclean:
@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
-o -name '*.gcov' \) -type f -print | xargs rm -f -o -name '*.gcov' \) -type f -print | xargs rm -f
$(Q)$(MAKE) -f $(srctree)/Makefile ARCH=$(HEADER_ARCH) clean
export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING DEV_NULL_PATH export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING DEV_NULL_PATH

View File

@@ -225,7 +225,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp)
struct idxd_wq *wq; struct idxd_wq *wq;
struct device *dev, *fdev; struct device *dev, *fdev;
int rc = 0; int rc = 0;
struct iommu_sva *sva; struct iommu_sva *sva = NULL;
unsigned int pasid; unsigned int pasid;
struct idxd_cdev *idxd_cdev; struct idxd_cdev *idxd_cdev;
@@ -322,7 +322,7 @@ failed_set_pasid:
if (device_user_pasid_enabled(idxd)) if (device_user_pasid_enabled(idxd))
idxd_xa_pasid_remove(ctx); idxd_xa_pasid_remove(ctx);
failed_get_pasid: failed_get_pasid:
if (device_user_pasid_enabled(idxd)) if (device_user_pasid_enabled(idxd) && !IS_ERR_OR_NULL(sva))
iommu_sva_unbind_device(sva); iommu_sva_unbind_device(sva);
failed: failed:
mutex_unlock(&wq->wq_lock); mutex_unlock(&wq->wq_lock);

View File

@@ -145,6 +145,7 @@ void link_blank_dp_stream(struct dc_link *link, bool hw_init)
void link_set_all_streams_dpms_off_for_link(struct dc_link *link) void link_set_all_streams_dpms_off_for_link(struct dc_link *link)
{ {
struct pipe_ctx *pipes[MAX_PIPES]; struct pipe_ctx *pipes[MAX_PIPES];
struct dc_stream_state *streams[MAX_PIPES];
struct dc_state *state = link->dc->current_state; struct dc_state *state = link->dc->current_state;
uint8_t count; uint8_t count;
int i; int i;
@@ -157,10 +158,18 @@ void link_set_all_streams_dpms_off_for_link(struct dc_link *link)
link_get_master_pipes_with_dpms_on(link, state, &count, pipes); link_get_master_pipes_with_dpms_on(link, state, &count, pipes);
/* The subsequent call to dc_commit_updates_for_stream for a full update
* will release the current state and swap to a new state. Releasing the
* current state results in the stream pointers in the pipe_ctx structs
* to be zero'd. Hence, cache all streams prior to dc_commit_updates_for_stream.
*/
for (i = 0; i < count; i++)
streams[i] = pipes[i]->stream;
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
stream_update.stream = pipes[i]->stream; stream_update.stream = streams[i];
dc_commit_updates_for_stream(link->ctx->dc, NULL, 0, dc_commit_updates_for_stream(link->ctx->dc, NULL, 0,
pipes[i]->stream, &stream_update, streams[i], &stream_update,
state); state);
} }

View File

@@ -41,6 +41,10 @@
#define USB_VENDOR_ID_ACTIONSTAR 0x2101 #define USB_VENDOR_ID_ACTIONSTAR 0x2101
#define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011 #define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011
#define USB_VENDOR_ID_ADATA_XPG 0x125f
#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE 0x7505
#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE 0x7506
#define USB_VENDOR_ID_ADS_TECH 0x06e1 #define USB_VENDOR_ID_ADS_TECH 0x06e1
#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155 #define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155

View File

@@ -27,6 +27,8 @@
static const struct hid_device_id hid_quirks[] = { static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD },
{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD },
{ HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL }, { HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL },
{ HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET },
{ HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS },

View File

@@ -2095,7 +2095,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
port->slave.mac_addr); port->slave.mac_addr);
if (!is_valid_ether_addr(port->slave.mac_addr)) { if (!is_valid_ether_addr(port->slave.mac_addr)) {
eth_random_addr(port->slave.mac_addr); eth_random_addr(port->slave.mac_addr);
dev_err(dev, "Use random MAC address\n"); dev_info(dev, "Use random MAC address\n");
} }
} }
} }

View File

@@ -3541,6 +3541,8 @@ static const struct pci_device_id nvme_id_table[] = {
.driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, .driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
{ PCI_DEVICE(0x1e49, 0x0041), /* ZHITAI TiPro7000 NVMe SSD */ { PCI_DEVICE(0x1e49, 0x0041), /* ZHITAI TiPro7000 NVMe SSD */
.driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, .driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
{ PCI_DEVICE(0x025e, 0xf1ac), /* SOLIDIGM P44 pro SSDPFKKW020X7 */
.driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
{ PCI_DEVICE(0xc0a9, 0x540a), /* Crucial P2 */ { PCI_DEVICE(0xc0a9, 0x540a), /* Crucial P2 */
.driver_data = NVME_QUIRK_BOGUS_NID, }, .driver_data = NVME_QUIRK_BOGUS_NID, },
{ PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */ { PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */

View File

@@ -684,8 +684,8 @@ static umode_t arm_cmn_event_attr_is_visible(struct kobject *kobj,
if ((chan == 5 && cmn->rsp_vc_num < 2) || if ((chan == 5 && cmn->rsp_vc_num < 2) ||
(chan == 6 && cmn->dat_vc_num < 2) || (chan == 6 && cmn->dat_vc_num < 2) ||
(chan == 7 && cmn->snp_vc_num < 2) || (chan == 7 && cmn->req_vc_num < 2) ||
(chan == 8 && cmn->req_vc_num < 2)) (chan == 8 && cmn->snp_vc_num < 2))
return 0; return 0;
} }
@@ -841,8 +841,8 @@ static umode_t arm_cmn_event_attr_is_visible(struct kobject *kobj,
_CMN_EVENT_XP(pub_##_name, (_event) | (4 << 5)), \ _CMN_EVENT_XP(pub_##_name, (_event) | (4 << 5)), \
_CMN_EVENT_XP(rsp2_##_name, (_event) | (5 << 5)), \ _CMN_EVENT_XP(rsp2_##_name, (_event) | (5 << 5)), \
_CMN_EVENT_XP(dat2_##_name, (_event) | (6 << 5)), \ _CMN_EVENT_XP(dat2_##_name, (_event) | (6 << 5)), \
_CMN_EVENT_XP(snp2_##_name, (_event) | (7 << 5)), \ _CMN_EVENT_XP(req2_##_name, (_event) | (7 << 5)), \
_CMN_EVENT_XP(req2_##_name, (_event) | (8 << 5)) _CMN_EVENT_XP(snp2_##_name, (_event) | (8 << 5))
#define CMN_EVENT_XP_DAT(_name, _event) \ #define CMN_EVENT_XP_DAT(_name, _event) \
_CMN_EVENT_XP_PORT(dat_##_name, (_event) | (3 << 5)), \ _CMN_EVENT_XP_PORT(dat_##_name, (_event) | (3 << 5)), \
@@ -2443,6 +2443,7 @@ static int arm_cmn_probe(struct platform_device *pdev)
cmn->dev = &pdev->dev; cmn->dev = &pdev->dev;
cmn->part = (unsigned long)device_get_match_data(cmn->dev); cmn->part = (unsigned long)device_get_match_data(cmn->dev);
cmn->cpu = cpumask_local_spread(0, dev_to_node(cmn->dev));
platform_set_drvdata(pdev, cmn); platform_set_drvdata(pdev, cmn);
if (cmn->part == PART_CMN600 && has_acpi_companion(cmn->dev)) { if (cmn->part == PART_CMN600 && has_acpi_companion(cmn->dev)) {
@@ -2470,7 +2471,6 @@ static int arm_cmn_probe(struct platform_device *pdev)
if (err) if (err)
return err; return err;
cmn->cpu = cpumask_local_spread(0, dev_to_node(cmn->dev));
cmn->pmu = (struct pmu) { cmn->pmu = (struct pmu) {
.module = THIS_MODULE, .module = THIS_MODULE,
.attr_groups = arm_cmn_attr_groups, .attr_groups = arm_cmn_attr_groups,

View File

@@ -16,6 +16,8 @@
#include <linux/usb/of.h> #include <linux/usb/of.h>
#define USB_125M_CLK_RATE 125000000 #define USB_125M_CLK_RATE 125000000
#define USB_CLK_MODE_OFF 0x0
#define USB_CLK_MODE_RX_NORMAL_PWR BIT(1)
#define USB_LS_KEEPALIVE_OFF 0x4 #define USB_LS_KEEPALIVE_OFF 0x4
#define USB_LS_KEEPALIVE_ENABLE BIT(4) #define USB_LS_KEEPALIVE_ENABLE BIT(4)
@@ -68,6 +70,7 @@ static int jh7110_usb2_phy_init(struct phy *_phy)
{ {
struct jh7110_usb2_phy *phy = phy_get_drvdata(_phy); struct jh7110_usb2_phy *phy = phy_get_drvdata(_phy);
int ret; int ret;
unsigned int val;
ret = clk_set_rate(phy->usb_125m_clk, USB_125M_CLK_RATE); ret = clk_set_rate(phy->usb_125m_clk, USB_125M_CLK_RATE);
if (ret) if (ret)
@@ -77,6 +80,10 @@ static int jh7110_usb2_phy_init(struct phy *_phy)
if (ret) if (ret)
return ret; return ret;
val = readl(phy->regs + USB_CLK_MODE_OFF);
val |= USB_CLK_MODE_RX_NORMAL_PWR;
writel(val, phy->regs + USB_CLK_MODE_OFF);
return 0; return 0;
} }

View File

@@ -17,13 +17,13 @@
/* /*
* fujitsu-laptop.c - Fujitsu laptop support, providing access to additional * fujitsu-laptop.c - Fujitsu laptop support, providing access to additional
* features made available on a range of Fujitsu laptops including the * features made available on a range of Fujitsu laptops including the
* P2xxx/P5xxx/S6xxx/S7xxx series. * P2xxx/P5xxx/S2xxx/S6xxx/S7xxx series.
* *
* This driver implements a vendor-specific backlight control interface for * This driver implements a vendor-specific backlight control interface for
* Fujitsu laptops and provides support for hotkeys present on certain Fujitsu * Fujitsu laptops and provides support for hotkeys present on certain Fujitsu
* laptops. * laptops.
* *
* This driver has been tested on a Fujitsu Lifebook S6410, S7020 and * This driver has been tested on a Fujitsu Lifebook S2110, S6410, S7020 and
* P8010. It should work on most P-series and S-series Lifebooks, but * P8010. It should work on most P-series and S-series Lifebooks, but
* YMMV. * YMMV.
* *
@@ -102,7 +102,11 @@
#define KEY2_CODE 0x411 #define KEY2_CODE 0x411
#define KEY3_CODE 0x412 #define KEY3_CODE 0x412
#define KEY4_CODE 0x413 #define KEY4_CODE 0x413
#define KEY5_CODE 0x420 #define KEY5_CODE 0x414
#define KEY6_CODE 0x415
#define KEY7_CODE 0x416
#define KEY8_CODE 0x417
#define KEY9_CODE 0x420
/* Hotkey ringbuffer limits */ /* Hotkey ringbuffer limits */
#define MAX_HOTKEY_RINGBUFFER_SIZE 100 #define MAX_HOTKEY_RINGBUFFER_SIZE 100
@@ -450,7 +454,7 @@ static const struct key_entry keymap_default[] = {
{ KE_KEY, KEY2_CODE, { KEY_PROG2 } }, { KE_KEY, KEY2_CODE, { KEY_PROG2 } },
{ KE_KEY, KEY3_CODE, { KEY_PROG3 } }, { KE_KEY, KEY3_CODE, { KEY_PROG3 } },
{ KE_KEY, KEY4_CODE, { KEY_PROG4 } }, { KE_KEY, KEY4_CODE, { KEY_PROG4 } },
{ KE_KEY, KEY5_CODE, { KEY_RFKILL } }, { KE_KEY, KEY9_CODE, { KEY_RFKILL } },
/* Soft keys read from status flags */ /* Soft keys read from status flags */
{ KE_KEY, FLAG_RFKILL, { KEY_RFKILL } }, { KE_KEY, FLAG_RFKILL, { KEY_RFKILL } },
{ KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } }, { KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } },
@@ -474,6 +478,18 @@ static const struct key_entry keymap_p8010[] = {
{ KE_END, 0 } { KE_END, 0 }
}; };
static const struct key_entry keymap_s2110[] = {
{ KE_KEY, KEY1_CODE, { KEY_PROG1 } }, /* "A" */
{ KE_KEY, KEY2_CODE, { KEY_PROG2 } }, /* "B" */
{ KE_KEY, KEY3_CODE, { KEY_WWW } }, /* "Internet" */
{ KE_KEY, KEY4_CODE, { KEY_EMAIL } }, /* "E-mail" */
{ KE_KEY, KEY5_CODE, { KEY_STOPCD } },
{ KE_KEY, KEY6_CODE, { KEY_PLAYPAUSE } },
{ KE_KEY, KEY7_CODE, { KEY_PREVIOUSSONG } },
{ KE_KEY, KEY8_CODE, { KEY_NEXTSONG } },
{ KE_END, 0 }
};
static const struct key_entry *keymap = keymap_default; static const struct key_entry *keymap = keymap_default;
static int fujitsu_laptop_dmi_keymap_override(const struct dmi_system_id *id) static int fujitsu_laptop_dmi_keymap_override(const struct dmi_system_id *id)
@@ -511,6 +527,15 @@ static const struct dmi_system_id fujitsu_laptop_dmi_table[] = {
}, },
.driver_data = (void *)keymap_p8010 .driver_data = (void *)keymap_p8010
}, },
{
.callback = fujitsu_laptop_dmi_keymap_override,
.ident = "Fujitsu LifeBook S2110",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK S2110"),
},
.driver_data = (void *)keymap_s2110
},
{} {}
}; };

View File

@@ -212,6 +212,7 @@ enum tpacpi_hkey_event_t {
/* Thermal events */ /* Thermal events */
TP_HKEY_EV_ALARM_BAT_HOT = 0x6011, /* battery too hot */ TP_HKEY_EV_ALARM_BAT_HOT = 0x6011, /* battery too hot */
TP_HKEY_EV_ALARM_BAT_XHOT = 0x6012, /* battery critically hot */ TP_HKEY_EV_ALARM_BAT_XHOT = 0x6012, /* battery critically hot */
TP_HKEY_EV_ALARM_BAT_LIM_CHANGE = 0x6013, /* battery charge limit changed*/
TP_HKEY_EV_ALARM_SENSOR_HOT = 0x6021, /* sensor too hot */ TP_HKEY_EV_ALARM_SENSOR_HOT = 0x6021, /* sensor too hot */
TP_HKEY_EV_ALARM_SENSOR_XHOT = 0x6022, /* sensor critically hot */ TP_HKEY_EV_ALARM_SENSOR_XHOT = 0x6022, /* sensor critically hot */
TP_HKEY_EV_THM_TABLE_CHANGED = 0x6030, /* windows; thermal table changed */ TP_HKEY_EV_THM_TABLE_CHANGED = 0x6030, /* windows; thermal table changed */
@@ -3942,6 +3943,10 @@ static bool hotkey_notify_6xxx(const u32 hkey,
pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n"); pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n");
/* recommended action: immediate sleep/hibernate */ /* recommended action: immediate sleep/hibernate */
break; break;
case TP_HKEY_EV_ALARM_BAT_LIM_CHANGE:
pr_debug("Battery Info: battery charge threshold changed\n");
/* User changed charging threshold. No action needed */
return true;
case TP_HKEY_EV_ALARM_SENSOR_HOT: case TP_HKEY_EV_ALARM_SENSOR_HOT:
pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n"); pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n");
/* recommended action: warn user through gui, that */ /* recommended action: warn user through gui, that */
@@ -11315,6 +11320,8 @@ static int __must_check __init get_thinkpad_model_data(
tp->vendor = PCI_VENDOR_ID_IBM; tp->vendor = PCI_VENDOR_ID_IBM;
else if (dmi_name_in_vendors("LENOVO")) else if (dmi_name_in_vendors("LENOVO"))
tp->vendor = PCI_VENDOR_ID_LENOVO; tp->vendor = PCI_VENDOR_ID_LENOVO;
else if (dmi_name_in_vendors("NEC"))
tp->vendor = PCI_VENDOR_ID_LENOVO;
else else
return 0; return 0;

View File

@@ -263,6 +263,9 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
else else
reg |= SUN4I_CTL_DHB; reg |= SUN4I_CTL_DHB;
/* Now that the settings are correct, enable the interface */
reg |= SUN4I_CTL_ENABLE;
sun4i_spi_write(sspi, SUN4I_CTL_REG, reg); sun4i_spi_write(sspi, SUN4I_CTL_REG, reg);
/* Ensure that we have a parent clock fast enough */ /* Ensure that we have a parent clock fast enough */
@@ -403,7 +406,7 @@ static int sun4i_spi_runtime_resume(struct device *dev)
} }
sun4i_spi_write(sspi, SUN4I_CTL_REG, sun4i_spi_write(sspi, SUN4I_CTL_REG,
SUN4I_CTL_ENABLE | SUN4I_CTL_MASTER | SUN4I_CTL_TP); SUN4I_CTL_MASTER | SUN4I_CTL_TP);
return 0; return 0;

View File

@@ -42,6 +42,7 @@
#include <linux/timekeeping.h> #include <linux/timekeeping.h>
#include <linux/sysctl.h> #include <linux/sysctl.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <uapi/linux/pidfd.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
@@ -56,6 +57,13 @@
static bool dump_vma_snapshot(struct coredump_params *cprm); static bool dump_vma_snapshot(struct coredump_params *cprm);
static void free_vma_snapshot(struct coredump_params *cprm); static void free_vma_snapshot(struct coredump_params *cprm);
/*
* File descriptor number for the pidfd for the thread-group leader of
* the coredumping task installed into the usermode helper's file
* descriptor table.
*/
#define COREDUMP_PIDFD_NUMBER 3
static int core_uses_pid; static int core_uses_pid;
static unsigned int core_pipe_limit; static unsigned int core_pipe_limit;
static char core_pattern[CORENAME_MAX_SIZE] = "core"; static char core_pattern[CORENAME_MAX_SIZE] = "core";
@@ -332,6 +340,27 @@ static int format_corename(struct core_name *cn, struct coredump_params *cprm,
case 'C': case 'C':
err = cn_printf(cn, "%d", cprm->cpu); err = cn_printf(cn, "%d", cprm->cpu);
break; break;
/* pidfd number */
case 'F': {
/*
* Installing a pidfd only makes sense if
* we actually spawn a usermode helper.
*/
if (!ispipe)
break;
/*
* Note that we'll install a pidfd for the
* thread-group leader. We know that task
* linkage hasn't been removed yet and even if
* this @current isn't the actual thread-group
* leader we know that the thread-group leader
* cannot be reaped until @current has exited.
*/
cprm->pid = task_tgid(current);
err = cn_printf(cn, "%d", COREDUMP_PIDFD_NUMBER);
break;
}
default: default:
break; break;
} }
@@ -488,7 +517,7 @@ static void wait_for_dump_helpers(struct file *file)
} }
/* /*
* umh_pipe_setup * umh_coredump_setup
* helper function to customize the process used * helper function to customize the process used
* to collect the core in userspace. Specifically * to collect the core in userspace. Specifically
* it sets up a pipe and installs it as fd 0 (stdin) * it sets up a pipe and installs it as fd 0 (stdin)
@@ -498,21 +527,61 @@ static void wait_for_dump_helpers(struct file *file)
* is a special value that we use to trap recursive * is a special value that we use to trap recursive
* core dumps * core dumps
*/ */
static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) static int umh_coredump_setup(struct subprocess_info *info, struct cred *new)
{ {
struct file *files[2]; struct file *files[2];
struct file *pidfs_file = NULL;
struct coredump_params *cp = (struct coredump_params *)info->data; struct coredump_params *cp = (struct coredump_params *)info->data;
int err = create_pipe_files(files, 0); int err;
if (cp->pid) {
int fd;
fd = pidfd_prepare(cp->pid, 0, &pidfs_file);
if (fd < 0)
return fd;
/*
* We don't care about the fd. We also cannot simply
* replace it below because dup2() will refuse to close
* this file descriptor if its in a larval state. So
* close it!
*/
put_unused_fd(fd);
/*
* Usermode helpers are childen of either
* system_unbound_wq or of kthreadd. So we know that
* we're starting off with a clean file descriptor
* table. So we should always be able to use
* COREDUMP_PIDFD_NUMBER as our file descriptor value.
*/
err = replace_fd(COREDUMP_PIDFD_NUMBER, pidfs_file, 0);
if (err < 0)
goto out_fail;
pidfs_file = NULL;
}
err = create_pipe_files(files, 0);
if (err) if (err)
return err; goto out_fail;
cp->file = files[1]; cp->file = files[1];
err = replace_fd(0, files[0], 0); err = replace_fd(0, files[0], 0);
fput(files[0]); fput(files[0]);
if (err < 0)
goto out_fail;
/* and disallow core files too */ /* and disallow core files too */
current->signal->rlim[RLIMIT_CORE] = (struct rlimit){1, 1}; current->signal->rlim[RLIMIT_CORE] = (struct rlimit){1, 1};
err = 0;
out_fail:
if (pidfs_file)
fput(pidfs_file);
return err; return err;
} }
@@ -589,7 +658,7 @@ void do_coredump(const kernel_siginfo_t *siginfo)
} }
if (cprm.limit == 1) { if (cprm.limit == 1) {
/* See umh_pipe_setup() which sets RLIMIT_CORE = 1. /* See umh_coredump_setup() which sets RLIMIT_CORE = 1.
* *
* Normally core limits are irrelevant to pipes, since * Normally core limits are irrelevant to pipes, since
* we're not writing to the file system, but we use * we're not writing to the file system, but we use
@@ -634,7 +703,7 @@ void do_coredump(const kernel_siginfo_t *siginfo)
retval = -ENOMEM; retval = -ENOMEM;
sub_info = call_usermodehelper_setup(helper_argv[0], sub_info = call_usermodehelper_setup(helper_argv[0],
helper_argv, NULL, GFP_KERNEL, helper_argv, NULL, GFP_KERNEL,
umh_pipe_setup, NULL, &cprm); umh_coredump_setup, NULL, &cprm);
if (sub_info) if (sub_info)
retval = call_usermodehelper_exec(sub_info, retval = call_usermodehelper_exec(sub_info,
UMH_WAIT_EXEC); UMH_WAIT_EXEC);

View File

@@ -1080,6 +1080,8 @@ struct nfs_server *nfs_create_server(struct fs_context *fc)
if (server->namelen == 0 || server->namelen > NFS2_MAXNAMLEN) if (server->namelen == 0 || server->namelen > NFS2_MAXNAMLEN)
server->namelen = NFS2_MAXNAMLEN; server->namelen = NFS2_MAXNAMLEN;
} }
/* Linux 'subtree_check' borkenness mandates this setting */
server->fh_expire_type = NFS_FH_VOL_RENAME;
if (!(fattr->valid & NFS_ATTR_FATTR)) { if (!(fattr->valid & NFS_ATTR_FATTR)) {
error = ctx->nfs_mod->rpc_ops->getattr(server, ctx->mntfh, error = ctx->nfs_mod->rpc_ops->getattr(server, ctx->mntfh,

View File

@@ -2642,6 +2642,18 @@ nfs_unblock_rename(struct rpc_task *task, struct nfs_renamedata *data)
unblock_revalidate(new_dentry); unblock_revalidate(new_dentry);
} }
static bool nfs_rename_is_unsafe_cross_dir(struct dentry *old_dentry,
struct dentry *new_dentry)
{
struct nfs_server *server = NFS_SB(old_dentry->d_sb);
if (old_dentry->d_parent != new_dentry->d_parent)
return false;
if (server->fh_expire_type & NFS_FH_RENAME_UNSAFE)
return !(server->fh_expire_type & NFS_FH_NOEXPIRE_WITH_OPEN);
return true;
}
/* /*
* RENAME * RENAME
* FIXME: Some nfsds, like the Linux user space nfsd, may generate a * FIXME: Some nfsds, like the Linux user space nfsd, may generate a
@@ -2729,7 +2741,8 @@ int nfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
} }
if (S_ISREG(old_inode->i_mode)) if (S_ISREG(old_inode->i_mode) &&
nfs_rename_is_unsafe_cross_dir(old_dentry, new_dentry))
nfs_sync_inode(old_inode); nfs_sync_inode(old_inode);
task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry, task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry,
must_unblock ? nfs_unblock_rename : NULL); must_unblock ? nfs_unblock_rename : NULL);

View File

@@ -75,6 +75,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
struct page *scratch; struct page *scratch;
struct list_head dsaddrs; struct list_head dsaddrs;
struct nfs4_pnfs_ds_addr *da; struct nfs4_pnfs_ds_addr *da;
struct net *net = server->nfs_client->cl_net;
/* set up xdr stream */ /* set up xdr stream */
scratch = alloc_page(gfp_flags); scratch = alloc_page(gfp_flags);
@@ -158,8 +159,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
mp_count = be32_to_cpup(p); /* multipath count */ mp_count = be32_to_cpup(p); /* multipath count */
for (j = 0; j < mp_count; j++) { for (j = 0; j < mp_count; j++) {
da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net, da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
&stream, gfp_flags);
if (da) if (da)
list_add_tail(&da->da_node, &dsaddrs); list_add_tail(&da->da_node, &dsaddrs);
} }
@@ -169,7 +169,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
goto out_err_free_deviceid; goto out_err_free_deviceid;
} }
dsaddr->ds_list[i] = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags); dsaddr->ds_list[i] = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
if (!dsaddr->ds_list[i]) if (!dsaddr->ds_list[i])
goto out_err_drain_dsaddrs; goto out_err_drain_dsaddrs;

View File

@@ -49,6 +49,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
struct nfs4_pnfs_ds_addr *da; struct nfs4_pnfs_ds_addr *da;
struct nfs4_ff_layout_ds *new_ds = NULL; struct nfs4_ff_layout_ds *new_ds = NULL;
struct nfs4_ff_ds_version *ds_versions = NULL; struct nfs4_ff_ds_version *ds_versions = NULL;
struct net *net = server->nfs_client->cl_net;
u32 mp_count; u32 mp_count;
u32 version_count; u32 version_count;
__be32 *p; __be32 *p;
@@ -80,8 +81,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
for (i = 0; i < mp_count; i++) { for (i = 0; i < mp_count; i++) {
/* multipath ds */ /* multipath ds */
da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net, da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
&stream, gfp_flags);
if (da) if (da)
list_add_tail(&da->da_node, &dsaddrs); list_add_tail(&da->da_node, &dsaddrs);
} }
@@ -149,7 +149,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
new_ds->ds_versions = ds_versions; new_ds->ds_versions = ds_versions;
new_ds->ds_versions_cnt = version_count; new_ds->ds_versions_cnt = version_count;
new_ds->ds = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags); new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
if (!new_ds->ds) if (!new_ds->ds)
goto out_err_drain_dsaddrs; goto out_err_drain_dsaddrs;

View File

@@ -59,6 +59,7 @@ struct nfs4_pnfs_ds {
struct list_head ds_node; /* nfs4_pnfs_dev_hlist dev_dslist */ struct list_head ds_node; /* nfs4_pnfs_dev_hlist dev_dslist */
char *ds_remotestr; /* comma sep list of addrs */ char *ds_remotestr; /* comma sep list of addrs */
struct list_head ds_addrs; struct list_head ds_addrs;
const struct net *ds_net;
struct nfs_client *ds_clp; struct nfs_client *ds_clp;
refcount_t ds_count; refcount_t ds_count;
unsigned long ds_state; unsigned long ds_state;
@@ -405,7 +406,8 @@ int pnfs_generic_commit_pagelist(struct inode *inode,
int pnfs_generic_scan_commit_lists(struct nfs_commit_info *cinfo, int max); int pnfs_generic_scan_commit_lists(struct nfs_commit_info *cinfo, int max);
void pnfs_generic_write_commit_done(struct rpc_task *task, void *data); void pnfs_generic_write_commit_done(struct rpc_task *task, void *data);
void nfs4_pnfs_ds_put(struct nfs4_pnfs_ds *ds); void nfs4_pnfs_ds_put(struct nfs4_pnfs_ds *ds);
struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(struct list_head *dsaddrs, struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(const struct net *net,
struct list_head *dsaddrs,
gfp_t gfp_flags); gfp_t gfp_flags);
void nfs4_pnfs_v3_ds_connect_unload(void); void nfs4_pnfs_v3_ds_connect_unload(void);
int nfs4_pnfs_ds_connect(struct nfs_server *mds_srv, struct nfs4_pnfs_ds *ds, int nfs4_pnfs_ds_connect(struct nfs_server *mds_srv, struct nfs4_pnfs_ds *ds,

View File

@@ -651,12 +651,12 @@ _same_data_server_addrs_locked(const struct list_head *dsaddrs1,
* Lookup DS by addresses. nfs4_ds_cache_lock is held * Lookup DS by addresses. nfs4_ds_cache_lock is held
*/ */
static struct nfs4_pnfs_ds * static struct nfs4_pnfs_ds *
_data_server_lookup_locked(const struct list_head *dsaddrs) _data_server_lookup_locked(const struct net *net, const struct list_head *dsaddrs)
{ {
struct nfs4_pnfs_ds *ds; struct nfs4_pnfs_ds *ds;
list_for_each_entry(ds, &nfs4_data_server_cache, ds_node) list_for_each_entry(ds, &nfs4_data_server_cache, ds_node)
if (_same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs)) if (ds->ds_net == net && _same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs))
return ds; return ds;
return NULL; return NULL;
} }
@@ -763,7 +763,7 @@ out_err:
* uncached and return cached struct nfs4_pnfs_ds. * uncached and return cached struct nfs4_pnfs_ds.
*/ */
struct nfs4_pnfs_ds * struct nfs4_pnfs_ds *
nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags) nfs4_pnfs_ds_add(const struct net *net, struct list_head *dsaddrs, gfp_t gfp_flags)
{ {
struct nfs4_pnfs_ds *tmp_ds, *ds = NULL; struct nfs4_pnfs_ds *tmp_ds, *ds = NULL;
char *remotestr; char *remotestr;
@@ -781,13 +781,14 @@ nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags)
remotestr = nfs4_pnfs_remotestr(dsaddrs, gfp_flags); remotestr = nfs4_pnfs_remotestr(dsaddrs, gfp_flags);
spin_lock(&nfs4_ds_cache_lock); spin_lock(&nfs4_ds_cache_lock);
tmp_ds = _data_server_lookup_locked(dsaddrs); tmp_ds = _data_server_lookup_locked(net, dsaddrs);
if (tmp_ds == NULL) { if (tmp_ds == NULL) {
INIT_LIST_HEAD(&ds->ds_addrs); INIT_LIST_HEAD(&ds->ds_addrs);
list_splice_init(dsaddrs, &ds->ds_addrs); list_splice_init(dsaddrs, &ds->ds_addrs);
ds->ds_remotestr = remotestr; ds->ds_remotestr = remotestr;
refcount_set(&ds->ds_count, 1); refcount_set(&ds->ds_count, 1);
INIT_LIST_HEAD(&ds->ds_node); INIT_LIST_HEAD(&ds->ds_node);
ds->ds_net = net;
ds->ds_clp = NULL; ds->ds_clp = NULL;
list_add(&ds->ds_node, &nfs4_data_server_cache); list_add(&ds->ds_node, &nfs4_data_server_cache);
dprintk("%s add new data server %s\n", __func__, dprintk("%s add new data server %s\n", __func__,

View File

@@ -146,11 +146,8 @@ static struct oplock_info *opinfo_get_list(struct ksmbd_inode *ci)
{ {
struct oplock_info *opinfo; struct oplock_info *opinfo;
if (list_empty(&ci->m_op_list))
return NULL;
down_read(&ci->m_lock); down_read(&ci->m_lock);
opinfo = list_first_entry(&ci->m_op_list, struct oplock_info, opinfo = list_first_entry_or_null(&ci->m_op_list, struct oplock_info,
op_entry); op_entry);
if (opinfo) { if (opinfo) {
if (opinfo->conn == NULL || if (opinfo->conn == NULL ||

View File

@@ -28,6 +28,7 @@ struct coredump_params {
int vma_count; int vma_count;
size_t vma_data_size; size_t vma_data_size;
struct core_vma_metadata *vma_meta; struct core_vma_metadata *vma_meta;
struct pid *pid;
}; };
/* /*

View File

@@ -199,6 +199,15 @@ struct nfs_server {
char *fscache_uniq; /* Uniquifier (or NULL) */ char *fscache_uniq; /* Uniquifier (or NULL) */
#endif #endif
/* The following #defines numerically match the NFSv4 equivalents */
#define NFS_FH_NOEXPIRE_WITH_OPEN (0x1)
#define NFS_FH_VOLATILE_ANY (0x2)
#define NFS_FH_VOL_MIGRATION (0x4)
#define NFS_FH_VOL_RENAME (0x8)
#define NFS_FH_RENAME_UNSAFE (NFS_FH_VOLATILE_ANY | NFS_FH_VOL_RENAME)
u32 fh_expire_type; /* V4 bitmask representing file
handle volatility type for
this filesystem */
u32 pnfs_blksize; /* layout_blksize attr */ u32 pnfs_blksize; /* layout_blksize attr */
#if IS_ENABLED(CONFIG_NFS_V4) #if IS_ENABLED(CONFIG_NFS_V4)
u32 attr_bitmask[3];/* V4 bitmask representing the set u32 attr_bitmask[3];/* V4 bitmask representing the set
@@ -222,9 +231,6 @@ struct nfs_server {
u32 acl_bitmask; /* V4 bitmask representing the ACEs u32 acl_bitmask; /* V4 bitmask representing the ACEs
that are supported on this that are supported on this
filesystem */ filesystem */
u32 fh_expire_type; /* V4 bitmask representing file
handle volatility type for
this filesystem */
struct pnfs_layoutdriver_type *pnfs_curr_ld; /* Active layout driver */ struct pnfs_layoutdriver_type *pnfs_curr_ld; /* Active layout driver */
struct rpc_wait_queue roc_rpcwaitq; struct rpc_wait_queue roc_rpcwaitq;
void *pnfs_ld_data; /* per mount point data */ void *pnfs_ld_data; /* per mount point data */

View File

@@ -175,6 +175,11 @@ struct hfsc_sched {
#define HT_INFINITY 0xffffffffffffffffULL /* infinite time value */ #define HT_INFINITY 0xffffffffffffffffULL /* infinite time value */
static bool cl_in_el_or_vttree(struct hfsc_class *cl)
{
return ((cl->cl_flags & HFSC_FSC) && cl->cl_nactive) ||
((cl->cl_flags & HFSC_RSC) && !RB_EMPTY_NODE(&cl->el_node));
}
/* /*
* eligible tree holds backlogged classes being sorted by their eligible times. * eligible tree holds backlogged classes being sorted by their eligible times.
@@ -1040,6 +1045,8 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
if (cl == NULL) if (cl == NULL)
return -ENOBUFS; return -ENOBUFS;
RB_CLEAR_NODE(&cl->el_node);
err = tcf_block_get(&cl->block, &cl->filter_list, sch, extack); err = tcf_block_get(&cl->block, &cl->filter_list, sch, extack);
if (err) { if (err) {
kfree(cl); kfree(cl);
@@ -1573,7 +1580,7 @@ hfsc_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free)
sch->qstats.backlog += len; sch->qstats.backlog += len;
sch->q.qlen++; sch->q.qlen++;
if (first && !cl->cl_nactive) { if (first && !cl_in_el_or_vttree(cl)) {
if (cl->cl_flags & HFSC_RSC) if (cl->cl_flags & HFSC_RSC)
init_ed(cl, len); init_ed(cl, len);
if (cl->cl_flags & HFSC_FSC) if (cl->cl_flags & HFSC_FSC)