6.1.120-rc1 review
Subsystems (7)
Greg Kroah-Hartman
maintainercover 6.1.120-rc1 review
This is the start of the stable review cycle for the 6.1.120 release. There are 772 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sat, 14 Dec 2024 14:41:35 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.120-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.1.120-rc1
Luiz Augusto von Dentz <[email protected]>
Bluetooth: MGMT: Fix possible deadlocks
Kaixin Wang <[email protected]>
i3c: master: svc: Fix use after free vulnerability in svc_i3c_master Driver Due to Race Condition
Konstantin Komarov <[email protected]>
fs/ntfs3: Sequential field availability check in mi_enum_attr()
Randy Dunlap <[email protected]>
drm/msm: DEVFREQ_GOV_SIMPLE_ONDEMAND is no longer needed
Rob Clark <[email protected]>
PM / devfreq: Fix build issues with devfreq disabled
Frank Li <[email protected]>
i3c: master: svc: fix possible assignment of the same address to two devices
Frank Li <[email protected]>
i3c: master: Remove i3c_dev_disable_ibi_locked(olddev) on device hotjoin
Arnd Bergmann <[email protected]>
serial: amba-pl011: fix build regression
Thinh Nguyen <[email protected]>
usb: dwc3: ep0: Don't reset resource alloc flag
Alex Deucher <[email protected]>
drm/amdgpu: rework resume handling for display (v2)
Zack Rusin <[email protected]>
drm/ttm: Print the memory decryption status just once
Zack Rusin <[email protected]>
drm/ttm: Make sure the mapped tt pages are decrypted when needed
Peilin Ye <[email protected]>
veth: Use tstats per-CPU traffic counters
Peilin Ye <[email protected]>
bpf: Fix dev's rx stats for bpf_redirect_peer traffic
Daniel Borkmann <[email protected]>
net: Move {l,t,d}stats allocation to core and convert veth & vrf
Daniel Borkmann <[email protected]>
bpf: Fix helper writes to read-only maps
Shu Han <[email protected]>
mm: call the security_mmap_file() LSM hook in remap_file_pages()
Amadeusz Sławiński <[email protected]>
ASoC: Intel: avs: Fix return status of avs_pcm_hw_constraints_init()
Mark Rutland <[email protected]>
arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint
Mark Brown <[email protected]>
arm64/sve: Discard stale CPU state when handling SVE traps
Ziwei Xiao <[email protected]>
gve: Fixes for napi_poll when budget is 0
Zhang Zekun <[email protected]>
Revert "drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()"
Heming Zhao <[email protected]>
ocfs2: Revert "ocfs2: fix the la space leak when unmounting an ocfs2 volume"
Alex Hung <[email protected]>
drm/amd/display: Check BIOS images before it is used
Andy-ld Lu <[email protected]>
mmc: mtk-sd: Fix error handle of probe function
Mathias Nyman <[email protected]>
xhci: dbc: Fix STALL transfer event handling
Pavel Begunkov <[email protected]>
io_uring: wake up optimisations
Zheng Yejian <[email protected]>
mm/damon/vaddr: fix issue in damon_va_evenly_split_region()
Richard Weinberger <[email protected]>
jffs2: Fix rtime decompressor
Kinsey Moore <[email protected]>
jffs2: Prevent rtime decompress memory corruption
Nikolay Kuratov <[email protected]>
KVM: x86/mmu: Ensure that kvm_release_pfn_clean() takes exact pfn from kvm_faultin_pfn()
Kunkun Jiang <[email protected]>
KVM: arm64: vgic-its: Clear ITE when DISCARD frees an ITE
Kunkun Jiang <[email protected]>
KVM: arm64: vgic-its: Clear DTE when MAPD unmaps a device
Jing Zhang <[email protected]>
KVM: arm64: vgic-its: Add a data length check in vgic_its_save_*
Jan Kara <[email protected]>
udf: Fold udf_getblk() into udf_bread()
Yishai Hadas <[email protected]>
vfio/mlx5: Align the page tracking max message size with the device capability
Linus Torvalds <[email protected]>
Revert "unicode: Don't special case ignorable code points"
Masami Hiramatsu (Google) <[email protected]>
tracing/eprobe: Fix to release eprobe when failed to add dyn_event
Filipe Manana <[email protected]>
btrfs: fix missing snapshot drew unlock when root is dead during swap activation
K Prateek Nayak <[email protected]>
sched/core: Prevent wakeup of ksoftirqd during idle load balance
K Prateek Nayak <[email protected]>
sched/fair: Check idle_cpu() before need_resched() to detect ilb CPU turning busy
K Prateek Nayak <[email protected]>
sched/core: Remove the unnecessary need_resched() check in nohz_csd_func()
Jared Kangas <[email protected]>
kasan: make report_lock a raw spinlock
Andrey Konovalov <[email protected]>
kasan: suppress recursive reports for HW_TAGS
Jens Axboe <[email protected]>
io_uring/tctx: work around xa_store() allocation error issue
Inochi Amaoto <[email protected]>
serial: 8250_dw: Add Sophgo SG2044 quirk
Dmitry Torokhov <[email protected]>
rtc: cmos: avoid taking rtc_lock for extended period of time
Parker Newman <[email protected]>
misc: eeprom: eeprom_93cx6: Add quirk for extra read clock cycle
Michael Ellerman <[email protected]>
powerpc/prom_init: Fixup missing powermac #size-cells
Uwe Kleine-König <[email protected]>
ASoC: amd: yc: Add quirk for microphone on Lenovo Thinkpad T14s Gen 6 21M1CTO1WW
Xi Ruoyao <[email protected]>
MIPS: Loongson64: DTS: Really fix PCIe port nodes for ls7a
Andy Shevchenko <[email protected]>
iio: light: ltr501: Add LTER0303 to the supported devices
Xu Yang <[email protected]>
usb: chipidea: udc: handle USB Error Interrupt if IOC not set
Huacai Chen <[email protected]>
LoongArch: Fix sleeping in atomic context for PREEMPT_RT
Defa Li <[email protected]>
i3c: Use i3cdev->desc->info instead of calling i3c_device_get_info() to avoid deadlock
Mengyuan Lou <[email protected]>
PCI: Add ACS quirk for Wangxun FF5xxx NICs
Keith Busch <[email protected]>
PCI: Add 'reset_subordinate' to reset hierarchy below bridge
Esther Shimanovich <[email protected]>
PCI: Detect and trust built-in Thunderbolt chips
Jarkko Nikula <[email protected]>
i3c: mipi-i3c-hci: Mask ring interrupts before ring stop request
Qi Han <[email protected]>
f2fs: fix f2fs_bug_on when uninstalling filesystem call f2fs_evict_inode.
Gabriele Monaco <[email protected]>
verification/dot2: Improve dot parser robustness
Kees Cook <[email protected]>
smb: client: memcpy() with surrounding object base address
Yi Yang <[email protected]>
nvdimm: rectify the illogical code within nd_dax_probe()
Barnabás Czémán <[email protected]>
pinctrl: qcom: spmi-mpp: Add PM8937 compatible
Barnabás Czémán <[email protected]>
pinctrl: qcom-pmic-gpio: add support for PM8937
Kai Mäkisara <[email protected]>
scsi: st: Add MTIOCGET and MTLOAD to ioctls allowed after device reset
Kai Mäkisara <[email protected]>
scsi: st: Don't modify unknown block number in MTIOCGET
Mukesh Ojha <[email protected]>
leds: class: Protect brightness_show() with led_cdev->led_access mutex
Bart Van Assche <[email protected]>
scsi: ufs: core: Make DMA mask configuration more flexible
Yihang Li <[email protected]>
scsi: hisi_sas: Add cond_resched() for no forced preemption model
Jan Stancek <[email protected]>
tools/rtla: fix collision with glibc sched_attr/sched_set_attr
Uros Bizjak <[email protected]>
tracing: Use atomic64_inc_return() in trace_clock_counter()
Mathieu Desnoyers <[email protected]>
tracing/ftrace: disable preemption in syscall probe
Esben Haabendal <[email protected]>
pinctrl: freescale: fix COMPILE_TEST error with PINCTRL_IMX_SCU
Breno Leitao <[email protected]>
netpoll: Use rcu_access_pointer() in __netpoll_setup
Jakub Kicinski <[email protected]>
net/neighbor: clear error in case strict check is not set
Dmitry Antipov <[email protected]>
rocker: fix link status detection in rocker_carrier_init()
Jonas Karlman <[email protected]>
ASoC: hdmi-codec: reorder channel allocation list
Luiz Augusto von Dentz <[email protected]>
Bluetooth: hci_core: Fix not checking skb length on hci_acldata_packet
Hilda Wu <[email protected]>
Bluetooth: btusb: Add RTL8852BE device 0489:e123 to device tables
Andrew Lunn <[email protected]>
dsa: qca8k: Use nested lock to avoid splat
Norbert van Bolhuis <[email protected]>
wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw()
Jiapeng Chong <[email protected]>
wifi: ipw2x00: libipw_rx_any(): fix bad alignment
Prike Liang <[email protected]>
drm/amdgpu: set the right AMDGPU sg segment limitation
Takashi Iwai <[email protected]>
ALSA: usb-audio: Make mic volume workarounds globally applicable
Victor Zhao <[email protected]>
drm/amdgpu: skip amdgpu_device_cache_pci_state under sriov
Nihar Chaithanya <[email protected]>
jfs: add a check to prevent array-index-out-of-bounds in dbAdjTree
Ghanshyam Agrawal <[email protected]>
jfs: fix array-index-out-of-bounds in jfs_readdir
Ghanshyam Agrawal <[email protected]>
jfs: fix shift-out-of-bounds in dbSplit
Ghanshyam Agrawal <[email protected]>
jfs: array-index-out-of-bounds fix in dtReadFirst
Levi Yun <[email protected]>
dma-debug: fix a possible deadlock on radix_lock
Lang Yu <[email protected]>
drm/amdgpu: refine error handling in amdgpu_ttm_tt_pin_userptr
Prike Liang <[email protected]>
drm/amdgpu: Dereference the ATCS ACPI buffer
Victor Lu <[email protected]>
drm/amdgpu: clear RB_OVERFLOW bit when enabling interrupts for vega20_ih
Philipp Stanner <[email protected]>
drm/sched: memset() 'job' in drm_sched_job_init()
Shengyu Qu <[email protected]>
net: sfp: change quirks for Alcatel Lucent G-010S-P
Manikandan Muralidharan <[email protected]>
drm/panel: simple: Add Microchip AC69T88A LVDS Display panel
Rosen Penev <[email protected]>
wifi: ath5k: add PCI ID for Arcadyan devices
Rosen Penev <[email protected]>
wifi: ath5k: add PCI ID for SX76X
Ignat Korchagin <[email protected]>
net: inet6: do not leave a dangling sk pointer in inet6_create()
Ignat Korchagin <[email protected]>
net: inet: do not leave a dangling sk pointer in inet_create()
Ignat Korchagin <[email protected]>
net: ieee802154: do not leave a dangling sk pointer in ieee802154_create()
Ignat Korchagin <[email protected]>
net: af_can: do not leave a dangling sk pointer in can_create()
Ignat Korchagin <[email protected]>
Bluetooth: RFCOMM: avoid leaving dangling sk pointer in rfcomm_sock_alloc()
Ignat Korchagin <[email protected]>
Bluetooth: L2CAP: do not leave dangling sk pointer on error in l2cap_sock_create()
Ignat Korchagin <[email protected]>
af_packet: avoid erroring out after sock_init_data() in packet_create()
Elena Salomatkina <[email protected]>
net/sched: cbs: Fix integer overflow in cbs_set_port_rate()
Simon Horman <[email protected]>
net: ethernet: fs_enet: Use %pa to format resource_size_t
Simon Horman <[email protected]>
net: fec_mpc52xx_phy: Use %pa to format resource_size_t
Zhu Jun <[email protected]>
samples/bpf: Fix a resource leak
Heiner Kallweit <[email protected]>
r8169: don't apply UDP padding quirk on RTL8126A
Brahmajit Das <[email protected]>
drm/display: Fix building with GCC 15
Igor Artemiev <[email protected]>
drm/radeon/r600_cs: Fix possible int overflow in r600_packet3_check()
Liao Chen <[email protected]>
drm/mcde: Enable module autoloading
Liao Chen <[email protected]>
drm/bridge: it6505: Enable module autoloading
Joaquín Ignacio Aramendía <[email protected]>
drm: panel-orientation-quirks: Add quirk for AYA NEO GEEK
Joaquín Ignacio Aramendía <[email protected]>
drm: panel-orientation-quirks: Add quirk for AYA NEO Founder edition
Joaquín Ignacio Aramendía <[email protected]>
drm: panel-orientation-quirks: Add quirk for AYA NEO 2 model
Dave Stevenson <[email protected]>
drm/vc4: hvs: Set AXI panic modes for the HVS
Dom Cobley <[email protected]>
drm/vc4: hdmi: Avoid log spam for audio start failure
Callahan Kovacs <[email protected]>
HID: magicmouse: Apple Magic Trackpad 2 USB-C driver support
Marek Vasut <[email protected]>
soc: imx8m: Probe the SoC driver as platform driver
Keita Aihara <[email protected]>
mmc: core: Add SD card quirk for broken poweroff notification
Rohan Barar <[email protected]>
media: cx231xx: Add support for Dexatek USB Video Grabber 1d19:6108
David Given <[email protected]>
media: uvcvideo: Add a quirk for the Kaiweets KTI-W02 infrared camera
Breno Leitao <[email protected]>
perf/x86/amd: Warn only on new bits set
Marco Elver <[email protected]>
kcsan: Turn report_filterlist_lock into a raw_spinlock
Mark Brown <[email protected]>
kselftest/arm64: Don't leak pipe fds in pac.exec_sign_all()
Boris Burkov <[email protected]>
btrfs: do not clear read-only when adding sprout device
Qu Wenruo <[email protected]>
btrfs: avoid unnecessary device path update for the same device
Thomas Richter <[email protected]>
s390/cpum_sf: Handle CPU hotplug remove during sampling
Christian Brauner <[email protected]>
epoll: annotate racy check
Pratyush Brahma <[email protected]>
iommu/arm-smmu: Defer probe of clients after smmu device bound
Kees Cook <[email protected]>
lib: stackinit: hide never-taken branch from compiler
Wengang Wang <[email protected]>
ocfs2: update seq_file index in ocfs2_dlm_seq_next
Ulf Hansson <[email protected]>
mmc: core: Further prevent card detect during shutdown
Hans de Goede <[email protected]>
mmc: sdhci-pci: Add DMI quirk for missing CD GPIO on Vexia Edu Atla 10 tablet
Cosmin Tanislav <[email protected]>
regmap: detach regmap from dev on regmap_exit
Maciej Fijalkowski <[email protected]>
xsk: fix OOB map writes when deleting elements
Tvrtko Ursulin <[email protected]>
dma-fence: Use kernel's sort for merging fences
Tvrtko Ursulin <[email protected]>
dma-fence: Fix reference leak on fence merge failure path
Christian König <[email protected]>
dma-buf: fix dma_fence_array_signaled v4
Maciej Fijalkowski <[email protected]>
bpf: fix OOB devmap writes when deleting elements
Thomas Gleixner <[email protected]>
modpost: Add .irqentry.text to OTHER_SECTIONS
Alex Deucher <[email protected]>
drm/amdgpu/hdp5.2: do a posting read when flushing HDP
Imre Deak <[email protected]>
drm/dp_mst: Fix resetting msg rx state after topology removal
Imre Deak <[email protected]>
drm/dp_mst: Verify request type in the corresponding down message reply
Imre Deak <[email protected]>
drm/dp_mst: Fix MST sideband message body length check
Liequan Che <[email protected]>
bcache: revert replacing IS_ERR_OR_NULL with IS_ERR again
Ryusuke Konishi <[email protected]>
nilfs2: fix potential out-of-bounds memory access in nilfs_find_entry()
Peter Wang <[email protected]>
scsi: ufs: core: Add missing post notify for power mode change
Gwendal Grignou <[email protected]>
scsi: ufs: core: sysfs: Prevent div by zero
Saurav Kashyap <[email protected]>
scsi: qla2xxx: Remove check req_sg_cnt should be equal to rsp_sg_cnt
Quinn Tran <[email protected]>
scsi: qla2xxx: Fix use after free on unload
Anil Gurumurthy <[email protected]>
scsi: qla2xxx: Supported speed displayed incorrectly for VPorts
Quinn Tran <[email protected]>
scsi: qla2xxx: Fix NVMe and NPIV connect issue
Quinn Tran <[email protected]>
scsi: qla2xxx: Fix abort in bsg timeout
Sahas Leelodharry <[email protected]>
ALSA: hda/realtek: Add support for Samsung Galaxy Book3 360 (NP730QFG)
Nazar Bilinskyi <[email protected]>
ALSA: hda/realtek: Enable mute and micmute LED on HP ProBook 430 G8
Marie Ramlow <[email protected]>
ALSA: usb-audio: add mixer mapping for Corsair HS80
Mark Rutland <[email protected]>
arm64: ptrace: fix partial SETREGSET for NT_ARM_TAGGED_ADDR_CTRL
Catalin Marinas <[email protected]>
arm64: Ensure bits ASID[15:8] are masked out when the kernel uses 8-bit ASIDs
Kuan-Wei Chiu <[email protected]>
tracing: Fix cmp_entries_dup() to respect sort() comparison rules
Marc Kleine-Budde <[email protected]>
can: mcp251xfd: mcp251xfd_get_tef_len(): work around erratum DS80000789E 6.
Marc Kleine-Budde <[email protected]>
can: dev: can_set_termination(): allow sleeping GPIOs
Alexander Sverdlin <[email protected]>
watchdog: rti: of: honor timeout-sec property
Jordy Zomer <[email protected]>
ksmbd: fix Out-of-Bounds Write in ksmbd_vfs_stream_write
Jordy Zomer <[email protected]>
ksmbd: fix Out-of-Bounds Read in ksmbd_vfs_stream_read
Bibo Mao <[email protected]>
LoongArch: Add architecture specific huge_pte_clear()
WangYuli <[email protected]>
HID: wacom: fix when get product name maybe null pointer
Roman Gushchin <[email protected]>
mm: page_alloc: move mlocked flag clearance into free_pages_prepare()
Hou Tao <[email protected]>
bpf: Fix exact match conditions in trie_get_next_key()
Hou Tao <[email protected]>
bpf: Handle in-place update for full LPM trie correctly
Hou Tao <[email protected]>
bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem
Hou Tao <[email protected]>
bpf: Handle BPF_EXIST and BPF_NOEXIST for LPM trie
Jakob Hauser <[email protected]>
iio: magnetometer: yas530: use signed integer type for clamp limits
Randy Dunlap <[email protected]>
scatterlist: fix incorrect func name in kernel-doc
Tetsuo Handa <[email protected]>
ocfs2: free inode when ocfs2_get_init_inode() fails
Maíra Canal <[email protected]>
drm/v3d: Enable Performance Counters before clearing them
John Garry <[email protected]>
scsi: scsi_debug: Fix hrtimer support for ndelay
Pei Xiao <[email protected]>
spi: mpc52xx: Add cancel_work_sync before module remove
Björn Töpel <[email protected]>
tools: Override makefile ARCH variable if defined, but empty
Takashi Iwai <[email protected]>
ALSA: usb-audio: Notify xrun for low-latency mode
Zijian Zhang <[email protected]>
tcp_bpf: Fix the sk_mem_uncharge logic in tcp_bpf_sendmsg
Pei Xiao <[email protected]>
drm/sti: Add __iomem for mixer_dbg_mxn's parameter
Amir Mohammadi <[email protected]>
bpftool: fix potential NULL pointer dereferencing in prog_dump()
Quentin Monnet <[email protected]>
bpftool: Remove asserts from JIT disassembler
Larysa Zaremba <[email protected]>
xsk: always clear DMA mapping information when unmapping the pool
Chen-Yu Tsai <[email protected]>
drm/bridge: it6505: Fix inverted reset polarity
Kuro Chung <[email protected]>
drm/bridge: it6505: update usleep_range for RC circuit charge time
Javier Carrasco <[email protected]>
leds: flash: mt6360: Fix device_for_each_child_node() refcounting in error paths
Jonathan Cameron <[email protected]>
device property: Introduce device_for_each_child_node_scoped()
Jonathan Cameron <[email protected]>
device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.
Andy Shevchenko <[email protected]>
device property: Constify device child node APIs
Zijun Hu <[email protected]>
PCI: endpoint: Clear secondary (not primary) EPC in pci_epc_remove_epf()
Manivannan Sadhasivam <[email protected]>
PCI: endpoint: Use a separate lock for protecting epc->pci_epf list
Frank Li <[email protected]>
i3c: master: Fix dynamic address leak when 'assigned-address' is present
Frank Li <[email protected]>
i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED
Frank Li <[email protected]>
i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_STATUS_BITS
Frank Li <[email protected]>
i3c: master: svc: Modify enabled_events bit 7:0 to act as IBI enable counter
Carlos Song <[email protected]>
i3c: master: svc: use slow speed for first broadcast address
Carlos Song <[email protected]>
i3c: master: support to adjust first broadcast address speed
Frank Li <[email protected]>
i3c: master: fix kernel-doc check warning
Frank Li <[email protected]>
i3c: master: svc: add hot join support
Frank Li <[email protected]>
i3c: master: add enable(disable) hot join in sys entry
Uwe Kleine-König <[email protected]>
i3c: Make i3c_master_unregister() return void
Saravana Kannan <[email protected]>
driver core: fw_devlink: Stop trying to optimize cycle detection logic
Saravana Kannan <[email protected]>
driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link
Saravana Kannan <[email protected]>
driver core: fw_devlink: Improve logs for cycle detection
Marcelo Dalmas <[email protected]>
ntp: Remove invalid cast in time offset math
Nathan Chancellor <[email protected]>
powerpc/vdso: Drop -mstack-protector-guard flags in 32-bit files with clang
Christophe Leroy <[email protected]>
powerpc/vdso: Refactor CFLAGS for CVDSO build
Nathan Chancellor <[email protected]>
powerpc/vdso: Include CLANG_FLAGS explicitly in ldflags-y
Nathan Chancellor <[email protected]>
powerpc/vdso: Remove an unsupported flag from vgettimeofday-32.o with clang
Nathan Chancellor <[email protected]>
powerpc/vdso: Improve linker flags
Nathan Chancellor <[email protected]>
powerpc/vdso: Remove unused '-s' flag from ASFLAGS
Sathvika Vasireddy <[email protected]>
powerpc/vdso: Skip objtool from running on VDSO files
Thinh Nguyen <[email protected]>
usb: dwc3: ep0: Don't clear ep0 DWC3_EP_TRANSFER_STARTED
Michael Grzeschik <[email protected]>
usb: dwc3: ep0: Don't reset resource alloc flag (including ep0)
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Rewrite endpoint allocation flow
Kartik Rajput <[email protected]>
serial: amba-pl011: Fix RX stall when DMA is used
Thomas Gleixner <[email protected]>
serial: amba-pl011: Use port lock wrappers
Charles Han <[email protected]>
gpio: grgpio: Add NULL check in grgpio_probe
Bartosz Golaszewski <[email protected]>
gpio: grgpio: use a helper variable to store the address of ofdev->dev
Oliver Upton <[email protected]>
KVM: arm64: Don't retire aborted MMIO instruction
Fuad Tabba <[email protected]>
KVM: arm64: Change kvm_handle_mmio_return() return polarity
Jianbo Liu <[email protected]>
net/mlx5e: Remove workaround to avoid syndrome for internal port
Eric Dumazet <[email protected]>
geneve: do not assume mac header is set in geneve_xmit_skb()
Kory Maincent <[email protected]>
ethtool: Fix wrong mod state in case of verbose and no_mask bitset
Pablo Neira Ayuso <[email protected]>
netfilter: nft_set_hash: skip duplicated elements pending gc run
Phil Sutter <[email protected]>
netfilter: ipset: Hold module reference while requesting a module
Xin Long <[email protected]>
net: sched: fix erspan_opt settings in cls_flower
Yuan Can <[email protected]>
igb: Fix potential invalid memory access in igb_init_module()
Jacob Keller <[email protected]>
ixgbe: downgrade logging of unsupported VF API version to debug
Jacob Keller <[email protected]>
ixgbevf: stop attempting IPSEC offload on Mailbox API 1.5
Louis Leseur <[email protected]>
net/qed: allow old cards not supporting "num_images" to work
Wen Gu <[email protected]>
net/smc: fix LGR and link use-after-free issue
Kuniyuki Iwashima <[email protected]>
tipc: Fix use-after-free of kernel socket in cleanup_bearer().
Ivan Solodovnikov <[email protected]>
dccp: Fix memory leak in dccp_feat_change_recv
Jiri Wiesner <[email protected]>
net/ipv6: release expired exception dst cached in socket
Vadim Fedorenko <[email protected]>
net-timestamp: make sk_tskey more predictable in error path
Dmitry Antipov <[email protected]>
can: j1939: j1939_session_new(): fix skb reference counting
Eric Dumazet <[email protected]>
net: hsr: avoid potential out-of-bound access in fill_frame_info()
Martin Ottens <[email protected]>
net/sched: tbf: correct backlog statistic for GSO packets
Ajay Kaher <[email protected]>
ptp: Add error handling for adjfine callback in ptp_clock_adjtime
Jacob Keller <[email protected]>
ptp: convert remaining drivers to adjfine interface
Pablo Neira Ayuso <[email protected]>
netfilter: nft_socket: remove WARN_ON_ONCE on maximum cgroup level
Dmitry Antipov <[email protected]>
netfilter: x_tables: fix LED ID check in led_tg_check()
Jinghao Jia <[email protected]>
ipvs: fix UB due to uninitialized stack access in ip_vs_protocol_init()
Dario Binacchi <[email protected]>
can: ems_usb: ems_usb_rx_err(): fix {rx,tx}_errors statistics
Dario Binacchi <[email protected]>
can: sun4i_can: sun4i_can_err(): fix {rx,tx}_errors statistics
Dario Binacchi <[email protected]>
can: sja1000: sja1000_err(): fix {rx,tx}_errors statisticsDario Binacchi <[email protected]>
can: hi311x: hi3110_can_ist(): fix {rx,tx}_errors statisticsDario Binacchi <[email protected]>
can: ifi_canfd: ifi_canfd_handle_lec_err(): fix {rx,tx}_errors statistics
Dario Binacchi <[email protected]>
can: m_can: m_can_handle_lec_err(): fix {rx,tx}_errors statistics
Dario Binacchi <[email protected]>
can: hi311x: hi3110_can_ist(): fix potential use-after-free
Dario Binacchi <[email protected]>
can: sun4i_can: sun4i_can_err(): call can_change_state() even if cf is NULL
Dario Binacchi <[email protected]>
can: c_can: c_can_handle_bus_err(): update statistics if skb allocation fails
Alexander Kozhinov <[email protected]>
can: gs_usb: add usb endpoint address detection at driver probe step
Marc Kleine-Budde <[email protected]>
can: gs_usb: add VID/PID for Xylanta SAINT3 product family
Marc Kleine-Budde <[email protected]>
can: gs_usb: uniformly use "parent" as variable name for struct gs_usb
Marc Kleine-Budde <[email protected]>
can: gs_usb: gs_usb_probe(): align block comment
Marc Kleine-Budde <[email protected]>
can: gs_usb: remove leading space from goto labels
Yassine Oudjana <[email protected]>
watchdog: mediatek: Make sure system reset gets asserted in mtk_wdt_restart()
Nick Chan <[email protected]>
watchdog: apple: Actually flush writes after requesting watchdog restart
Oleksandr Ocheretnyi <[email protected]>
iTCO_wdt: mask NMI_NOW bit for update_no_reboot_bit() call
Umio Yasuno <[email protected]>
drm/amd/pm: update current_socclk and current_uclk in gpu_metrics on smu v13.0.7
Lucas Stach <[email protected]>
drm/etnaviv: flush shader L1 cache after user commandstream
Ma Ke <[email protected]>
drm/sti: avoid potential dereference of error pointers
Ma Ke <[email protected]>
drm/sti: avoid potential dereference of error pointers in sti_gdp_atomic_check
Ma Ke <[email protected]>
drm/sti: avoid potential dereference of error pointers in sti_hqvdp_atomic_check
Josef Bacik <[email protected]>
btrfs: don't BUG_ON on ENOMEM from btrfs_lookup_extent_info() in walk_down_proc()
Nathan Chancellor <[email protected]>
powerpc: Adjust adding stack protector flags to KBUILD_CLAGS for clang
Nathan Chancellor <[email protected]>
powerpc: Fix stack protector Kconfig test for clang
Nuno Sa <[email protected]>
iio: adc: ad7923: Fix buffer overflow for tx_buf and ring_xfer
Zicheng Qu <[email protected]>
iio: Fix fwnode_handle in __fwnode_iio_channel_get_by_name()
Yang Erkun <[email protected]>
nfsd: fix nfs4_openowner leak when concurrent nfsd4_open occur
Yang Erkun <[email protected]>
nfsd: make sure exp active before svc_export_show
Damien Le Moal <[email protected]>
PCI: rockchip-ep: Fix address translation unit programming
Yuan Can <[email protected]>
dm thin: Add missing destroy_work_on_stack()
Oleksandr Tymoshenko <[email protected]>
ovl: properly handle large files in ovl_security_fileattr
Srinivas Pandruvada <[email protected]>
thermal: int3400: Fix reading of current_uuid for active policy
Jiri Olsa <[email protected]>
fs/proc/kcore.c: Clear ret value in read_kcore_iter after successful iov_iter_zero
Kishon Vijay Abraham I <[email protected]>
PCI: keystone: Add link up check to ks_pcie_other_map_bus()
Kishon Vijay Abraham I <[email protected]>
PCI: keystone: Set mode as Root Complex for "ti,keystone-pcie" compatible
Frank Li <[email protected]>
i3c: master: Fix miss free init_dyn_addr at i3c_master_put_i3c_addrs()
Jinjie Ruan <[email protected]>
i3c: master: svc: Fix pm_runtime_set_suspended() with runtime pm enabled
Peter Griffin <[email protected]>
scsi: ufs: exynos: Fix hibern8 notify callbacks
Alexandru Ardelean <[email protected]>
util_macros.h: fix/rework find_closest() macros
Patrick Donnelly <[email protected]>
ceph: extract entity name from device id
Linus Walleij <[email protected]>
ARM: 9431/1: mm: Pair atomic_set_release() with _read_acquire()
Linus Walleij <[email protected]>
ARM: 9430/1: entry: Do a dummy read from VMAP shadow
Vasily Gorbik <[email protected]>
s390/entry: Mark IRQ entries to fix stack depot warnings
Linus Walleij <[email protected]>
ARM: 9429/1: ioremap: Sync PGDs for VMALLOC shadow
Zicheng Qu <[email protected]>
ad7780: fix division by zero in ad7780_write_raw()
Gabor Juhos <[email protected]>
clk: qcom: gcc-qcs404: fix initial rate of GPLL3
Michal Vokáč <[email protected]>
leds: lp55xx: Remove redundant test for invalid channel number
Mostafa Saleh <[email protected]>
iommu/io-pgtable-arm: Fix stage-2 map/unmap for concatenated tables
MengEn Sun <[email protected]>
vmstat: call fold_vm_zone_numa_events() before show per zone NUMA event
guoweikang <[email protected]>
ftrace: Fix regression with module command in stack_trace_filter
Wei Yang <[email protected]>
maple_tree: refine mas_store_root() on storing NULL
Vasiliy Kovalev <[email protected]>
ovl: Filter invalid inodes with missing lookup function
Thadeu Lima de Souza Cascardo <[email protected]>
media: uvcvideo: Require entities to have a non-zero unique ID
Ricardo Ribalda <[email protected]>
media: uvcvideo: Stop stream during unregister
Gaosheng Cui <[email protected]>
media: platform: allegro-dvt: Fix possible memory leak in allocate_buffers_internal()
Jinjie Ruan <[email protected]>
media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate()
Jinjie Ruan <[email protected]>
media: venus: Fix pm_runtime_set_suspended() with runtime pm enabled
Jinjie Ruan <[email protected]>
media: amphion: Fix pm_runtime_set_suspended() with runtime pm enabled
Joe Hattori <[email protected]>
media: platform: exynos4-is: Fix an OF node reference leak in fimc_md_is_isp_available
Li Zetao <[email protected]>
media: ts2020: fix null-ptr-deref in ts2020_probe()
Ming Qian <[email protected]>
media: imx-jpeg: Ensure power suppliers be suspended before detach them
Alexander Shiyan <[email protected]>
media: i2c: tc358743: Fix crash in the probe error path when using polling
Francesco Dolcini <[email protected]>
arm64: dts: freescale: imx8mp-verdin: Fix SD regulator startup delay
Jinjie Ruan <[email protected]>
media: i2c: dw9768: Fix pm_runtime_set_suspended() with runtime pm enabled
Ming Qian <[email protected]>
media: imx-jpeg: Set video drvdata before register video device
Ming Qian <[email protected]>
media: amphion: Set video drvdata before register video device
Francesco Dolcini <[email protected]>
arm64: dts: freescale: imx8mm-verdin: Fix SD regulator startup delay
Dragan Simic <[email protected]>
arm64: dts: allwinner: pinephone: Add mount matrix to accelerometer
Filipe Manana <[email protected]>
btrfs: ref-verify: fix use-after-free after invalid ref action
Lizhi Xu <[email protected]>
btrfs: add a sanity check for btrfs root in btrfs_search_slot()
ChenXiaoSong <[email protected]>
btrfs: add might_sleep() annotations
Filipe Manana <[email protected]>
btrfs: don't loop for nowait writes when checking for cross references
Ojaswin Mujoo <[email protected]>
quota: flush quota_release_work upon quota writeback
Long Li <[email protected]>
xfs: remove unknown compat feature check in superblock write validation
Dan Carpenter <[email protected]>
sh: intc: Fix use-after-free bug in register_intc_controller()
Liu Jian <[email protected]>
sunrpc: clear XPRT_SOCK_UPD_TIMEOUT when reset transport
Li Lingfeng <[email protected]>
nfs: ignore SB_RDONLY when mounting nfs
Masahiro Yamada <[email protected]>
modpost: remove incorrect code in do_eisa_entry()
Maxime Chevallier <[email protected]>
rtc: ab-eoz9: don't fail temperature reads on undervoltage notification
Namhyung Kim <[email protected]>
perf/arm-cmn: Ensure port and device id bits are set properly
Chun-Tse Shao <[email protected]>
perf/arm-smmuv3: Fix lockdep assert in ->event_init()
Alex Zenla <[email protected]>
9p/xen: fix release of IRQ
Alex Zenla <[email protected]>
9p/xen: fix init sequence
Christoph Hellwig <[email protected]>
block: return unsigned int from bdev_io_min
Wolfram Sang <[email protected]>
rtc: rzn1: fix BCD to rtc_time conversion errors
Qingfang Deng <[email protected]>
jffs2: fix use of uninitialized variable
Waqar Hameed <[email protected]>
ubifs: authentication: Fix use-after-free in ubifs_tnc_end_commit
Zhihao Cheng <[email protected]>
ubi: fastmap: Fix duplicate slab cache names while attaching
Zhihao Cheng <[email protected]>
ubifs: Correct the total block count by deducting journal reservation
Zhihao Cheng <[email protected]>
ubi: fastmap: wl: Schedule fm_work if wear-leveling pool is empty
Yongliang Gao <[email protected]>
rtc: check if __rtc_read_time was successful in rtc_timer_do_work()
Nobuhiro Iwamatsu <[email protected]>
rtc: abx80x: Fix WDT bit position of the status register
Jinjie Ruan <[email protected]>
rtc: st-lpc: Use IRQF_NO_AUTOEN flag in request_irq()
Trond Myklebust <[email protected]>
NFSv4.0: Fix a use-after-free problem in the asynchronous open()
Tiwei Bie <[email protected]>
um: Always dump trace for specified task in show_stack
Tiwei Bie <[email protected]>
um: Fix the return value of elf_core_copy_task_fpregs
Tiwei Bie <[email protected]>
um: Fix potential integer overflow during physmem setup
Yang Erkun <[email protected]>
SUNRPC: make sure cache entry active before cache_show
Chuck Lever <[email protected]>
NFSD: Prevent a potential integer overflow
Ma Wupeng <[email protected]>
ipc: fix memleak if msg_init_ns failed in create_ipc_ns
Bartosz Golaszewski <[email protected]>
lib: string_helpers: silence snprintf() output truncation warning
Ming Lei <[email protected]>
ublk: fix error code for unsupported command
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Fix looping of queued SG entries
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Fix checking for number of TRBs left
Hubert Wiśniewski <[email protected]>
usb: musb: Fix hardware lockup on first Rx endpoint request
Steve French <[email protected]>
smb3: request handle caching when caching directories
Takashi Iwai <[email protected]>
ALSA: hda/realtek: Apply quirk for Medion E15433
Dinesh Kumar <[email protected]>
ALSA: hda/realtek: Fix Internal Speaker and Mic boost of Infinix Y4 Max
Kailang Yang <[email protected]>
ALSA: hda/realtek: Set PCBeep to default value for ALC274
Kailang Yang <[email protected]>
ALSA: hda/realtek: Update ALC225 depop procedure
Takashi Iwai <[email protected]>
ALSA: pcm: Add sanity NULL check for the default mmap fault handler
Hans Verkuil <[email protected]>
media: v4l2-core: v4l2-dv-timings: check cvt/gtf result
Javier Carrasco <[email protected]>
soc: fsl: rcpm: fix missing of_node_put() in copy_ippdexpcr1_setting()
Qiu-ji Chen <[email protected]>
media: wl128x: Fix atomicity violation in fmc_send_cmd()
Jason Gerecke <[email protected]>
HID: wacom: Interpret tilt data from Intuos Pro BT as signed values
Muchun Song <[email protected]>
block: fix ordering between checking BLK_MQ_S_STOPPED request adding
Will Deacon <[email protected]>
arm64: tls: Fix context-switching of tpidrro_el0 when kpti is enabled
Ming Lei <[email protected]>
ublk: fix ublk_ch_mmap() for 64K page size
Huacai Chen <[email protected]>
sh: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
Tiwei Bie <[email protected]>
um: vector: Do not use drvdata in release
Bin Liu <[email protected]>
serial: 8250: omap: Move pm_runtime_get_sync
Filip Brozovic <[email protected]>
serial: 8250_fintek: Add support for F81216E
Michal Simek <[email protected]>
dt-bindings: serial: rs485: Fix rs485-rts-delay property
Tiwei Bie <[email protected]>
um: net: Do not use drvdata in release
Tiwei Bie <[email protected]>
um: ubd: Do not use drvdata in release
Zhihao Cheng <[email protected]>
ubi: wl: Put source PEB into correct list if trying locking LEB failed
Javier Carrasco <[email protected]>
platform/chrome: cros_ec_typec: fix missing fwnode reference decrement
Josh Poimboeuf <[email protected]>
parisc/ftrace: Fix function graph tracing disablement
Jinjie Ruan <[email protected]>
cpufreq: mediatek-hw: Fix wrong return value in mtk_cpufreq_get_cpu_power()
Cheng Ming Lin <[email protected]>
mtd: spi-nor: core: replace dummy buswidth from addr to data
Stanislaw Gruszka <[email protected]>
spi: Fix acpi deferred irq probe
Jeongjun Park <[email protected]>
netfilter: ipset: add missing range check in bitmap_ip_uadt
Sai Kumar Cholleti <[email protected]>
gpio: exar: set value when external pull-up or pull-down is present
Greg Kroah-Hartman <[email protected]>
Revert "serial: sh-sci: Clean sci_ports[0] after at earlycon exit"
Claudiu Beznea <[email protected]>
serial: sh-sci: Clean sci_ports[0] after at earlycon exit
Michal Vrastil <[email protected]>
Revert "usb: gadget: composite: fix OS descriptors w_value logic"
Javier Carrasco <[email protected]>
wifi: brcmfmac: release 'root' node in all execution paths
Guilherme G. Piccoli <[email protected]>
wifi: rtlwifi: Drastically reduce the attempts to read efuse in case of failures
Zijun Hu <[email protected]>
driver core: bus: Fix double free in driver API bus_register()
Michal Pecio <[email protected]>
usb: xhci: Fix TD invalidation under pending Set TR Dequeue
Andrej Shadura <[email protected]>
Bluetooth: Fix type of len in rfcomm_sock_getsockopt{,_old}()
Namjae Jeon <[email protected]>
exfat: fix uninit-value in __exfat_get_dentry_set
Angelo Dureghello <[email protected]>
dt-bindings: iio: dac: ad3552r: fix maximum spi speed
Johan Hovold <[email protected]>
pinctrl: qcom: spmi: fix debugfs drive strength
Ahmed Ehab <[email protected]>
locking/lockdep: Avoid creating new name string literals in lockdep_set_subclass()
Nicolas Bouchinet <[email protected]>
tty: ldsic: fix tty_ldisc_autoload sysctl's proc_handler
Jinjie Ruan <[email protected]>
apparmor: test: Fix memory leak for aa_unpack_strdup()
Jann Horn <[email protected]>
comedi: Flush partial mappings in error case
Amir Goldstein <[email protected]>
fsnotify: fix sending inotify event with unexpected filename
Lukas Wunner <[email protected]>
PCI: Fix use-after-free of slot->bus on hot remove
Raghavendra Rao Ananta <[email protected]>
KVM: arm64: Ignore PMCNTENSET_EL0 while checking for overflow status
Marc Zyngier <[email protected]>
KVM: arm64: vgic-v3: Sanitise guest writes to GICR_INVLPIR
Gautam Menghani <[email protected]>
powerpc/pseries: Fix KVM guest detection for disabling hardlockup detector
Sean Christopherson <[email protected]>
KVM: x86/mmu: Skip the "try unsync" path iff the old SPTE was a leaf SPTE
Eric Biggers <[email protected]>
crypto: x86/aegis128 - access 32-bit arguments as 32-bit
Adrian Hunter <[email protected]>
perf/x86/intel/pt: Fix buffer full but size is 0 case
Qiu-ji Chen <[email protected]>
ASoC: codecs: Fix atomicity violation in snd_soc_component_get_drvdata()
Ilya Zverev <[email protected]>
ASoC: amd: yc: Add a quirk for microfone on Lenovo ThinkPad P14s Gen 5 21MES00B00
Artem Sadovnikov <[email protected]>
jfs: xattr: check invalid xattr size more strictly
Theodore Ts'o <[email protected]>
ext4: fix FS_IOC_GETFSMAP handling
Jeongjun Park <[email protected]>
ext4: supress data-race warnings in ext4_free_inodes_{count,set}()
Manikanta Mylavarapu <[email protected]>
soc: qcom: socinfo: fix revision check in qcom_socinfo_probe()
Hans de Goede <[email protected]>
ASoC: Intel: sst: Fix used of uninitialized ctx to log an error
Catalin Marinas <[email protected]>
dma: allow dma_get_cache_alignment() to be overridden by the arch code
Catalin Marinas <[email protected]>
mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN
Chen-Yu Tsai <[email protected]>
arm64: dts: mediatek: mt8195-cherry: Mark USB 3.0 on xhci1 as disabled
Chen-Yu Tsai <[email protected]>
Revert "arm64: dts: mediatek: mt8195-cherry: Mark USB 3.0 on xhci1 as disabled"
Benoît Sevens <[email protected]>
ALSA: usb-audio: Fix potential out-of-bound accesses for Extigy and Mbox devices
Ido Schimmel <[email protected]>
mlxsw: spectrum_acl_tcam: Fix NULL pointer dereference in error path
Kan Liang <[email protected]>
perf/x86/intel: Hide Topdown metrics events if the feature is not enumerated
Boris Burkov <[email protected]>
btrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations
Zqiang <[email protected]>
rcu-tasks: Fix access non-existent percpu rtpcp variable in rcu_tasks_need_gpcb()
Alex Hung <[email protected]>
drm/amd/display: Check phantom_stream before it is used
Srinivasan Shanmugam <[email protected]>
drm/amd/display: Add NULL check for function pointer in dcn20_set_output_transfer_func
Srinivasan Shanmugam <[email protected]>
drm/amd/display: Add NULL check for clk_mgr in dcn32_init_hw
Srinivasan Shanmugam <[email protected]>
drm/amd/display: Add NULL check for clk_mgr and clk_mgr->funcs in dcn30_init_hw
Miri Korenblit <[email protected]>
wifi: iwlwifi: mvm: avoid NULL pointer dereference
Jammy Huang <[email protected]>
media: aspeed: Fix memory overwrite if timing is 1600x900
Vitalii Mordan <[email protected]>
usb: ehci-spear: fix call balance of sehci clk handling routines
Takashi Iwai <[email protected]>
ALSA: usb-audio: Fix out of bounds reads when finding clock sources
Qiu-ji Chen <[email protected]>
xen: Fix the issue of resource not being properly released in xenbus_dev_probe()
lei lu <[email protected]>
xfs: add bounds checking to xlog_recover_process_data
Justin Tee <[email protected]>
scsi: lpfc: Validate hdwq pointers before dereferencing in reset/errata paths
lei lu <[email protected]>
ntfs3: Add bounds checking to mi_enum_attr()
Konstantin Komarov <[email protected]>
fs/ntfs3: Fixed overflow check in mi_enum_attr()
Jason-JH.Lin <[email protected]>
mailbox: mtk-cmdq: Move devm_mbox_controller_register() after devm_pm_runtime_enable()
Venkata Prasad Potturu <[email protected]>
ASoC: amd: yc: Fix for enabling DMIC on acp6x via _DSD entry
chao liu <[email protected]>
apparmor: fix 'Do simple duplicate message elimination'
Kailang Yang <[email protected]>
ALSA: hda/realtek: Update ALC256 depop procedure
Jiasheng Jiang <[email protected]>
counter: ti-ecap-capture: Add check for clk_enable()
Jiasheng Jiang <[email protected]>
counter: stm32-timer-cnt: Add check for clk_enable()
Jinjie Ruan <[email protected]>
misc: apds990x: Fix missing pm_runtime_disable()
Edward Adam Davis <[email protected]>
USB: chaoskey: Fix possible deadlock chaoskey_list_lock
Oliver Neukum <[email protected]>
USB: chaoskey: fail open after removal
Oliver Neukum <[email protected]>
usb: yurex: make waiting on yurex_write interruptible
Jeongjun Park <[email protected]>
usb: using mutex lock and supporting O_NONBLOCK flag in iowarrior_read()
Christophe JAILLET <[email protected]>
iio: light: al3010: Fix an error handling path in al3010_probe()
Paolo Abeni <[email protected]>
ipmr: fix tables suspicious RCU usage
Paolo Abeni <[email protected]>
ip6mr: fix tables suspicious RCU usage
Kuniyuki Iwashima <[email protected]>
tcp: Fix use-after-free of nreq in reqsk_timer_handler().
Michal Luczaj <[email protected]>
rxrpc: Improve setsockopt() handling of malformed user input
Michal Luczaj <[email protected]>
llc: Improve setsockopt() handling of malformed user input
Herbert Xu <[email protected]>
crypto: api - Add crypto_clone_tfm
Herbert Xu <[email protected]>
crypto: api - Add crypto_tfm_get
Luiz Augusto von Dentz <[email protected]>
Bluetooth: MGMT: Fix slab-use-after-free Read in set_powered_sync
Saravanan Vajravel <[email protected]>
bnxt_en: Reserve rings after PCIe AER recovery if NIC interface is down
Eric Dumazet <[email protected]>
net: hsr: fix hsr_init_sk() vs network/transport headers.
Csókás, Bence <[email protected]>
spi: atmel-quadspi: Fix register name in verbose logging function
Hariprasad Kelam <[email protected]>
octeontx2-af: RPM: Fix mismatch in lmac type
Maxime Chevallier <[email protected]>
net: stmmac: dwmac-socfpga: Set RX watchdog interrupt as broken
Vitalii Mordan <[email protected]>
marvell: pxa168_eth: fix call balance of pep->clk handling routines
Rosen Penev <[email protected]>
net: mdio-ipq4019: add missing error check
Hangbin Liu <[email protected]>
net/ipv6: delete temporary address if mngtmpaddr is removed or unmanaged
Sidraya Jayagond <[email protected]>
s390/iucv: MSG_PEEK causes memory leak in iucv_sock_destruct()
Oleksij Rempel <[email protected]>
net: usb: lan78xx: Fix refcounting and autosuspend on invalid WoL configuration
Pavan Chebbi <[email protected]>
tg3: Set coherent DMA mask bits to 31 for BCM57766 chipsets
Oleksij Rempel <[email protected]>
net: usb: lan78xx: Fix memory leak on device unplug by freeing PHY device
Oleksij Rempel <[email protected]>
net: usb: lan78xx: Fix double free issue with interrupt buffer allocation
Barnabás Czémán <[email protected]>
power: supply: bq27xxx: Fix registers of bq27426
Bart Van Assche <[email protected]>
power: supply: core: Remove might_sleep() from power_supply_put()
Tiezhu Yang <[email protected]>
LoongArch: BPF: Sign-extend return values
Tiezhu Yang <[email protected]>
LoongArch: Fix build failure with GCC 15 (-std=gnu23)
WANG Xuerui <[email protected]>
LoongArch: Tweak CFLAGS for Clang compatibility
Randy Dunlap <[email protected]>
fs_parser: update mount_api doc to match function signature
Avihai Horon <[email protected]>
vfio/pci: Properly hide first-in-list PCIe extended capability
Michael Ellerman <[email protected]>
selftests/mount_setattr: Fix failures on 64K PAGE_SIZE kernels
Si-Wei Liu <[email protected]>
vdpa/mlx5: Fix suboptimal range on iotlb iteration
Murad Masimov <[email protected]>
hwmon: (tps23861) Fix reporting of negative temperatures
Chuck Lever <[email protected]>
NFSD: Fix nfsd4_shutdown_copy()
Ye Bin <[email protected]>
svcrdma: fix miss destroy percpu_counter in svc_rdma_proc_init()
Luis Chamberlain <[email protected]>
sunrpc: simplify two-level sysctl registration for svcrdma_parm_table
Chuck Lever <[email protected]>
NFSD: Cap the number of bytes copied by nfs4_reset_recoverydir()
Chuck Lever <[email protected]>
NFSD: Prevent NULL dereference in nfsd4_process_cb_update()
Sibi Sankar <[email protected]>
remoteproc: qcom_q6v5_mss: Re-order writes to the IMEM region
Jonathan Marek <[email protected]>
rpmsg: glink: use only lower 16-bits of param2 for CMD_OPEN name length
Bjorn Andersson <[email protected]>
rpmsg: glink: Fix GLINK command prefix
Dmitry Baryshkov <[email protected]>
remoteproc: qcom: pas: add minidump_id to SM8350 resources
Abel Vesa <[email protected]>
remoteproc: qcom: q6v5: Use _clk_get_optional for aggre2_clk
Benjamin Peterson <[email protected]>
perf trace: Avoid garbage when not printing a syscall's arguments
Benjamin Peterson <[email protected]>
perf trace: Do not lose last events in a race
Chuck Lever <[email protected]>
svcrdma: Address an integer overflow
Antonio Quartulli <[email protected]>
m68k: coldfire/device.c: only build FEC when HW macros are defined
Jean-Michel Hautbois <[email protected]>
m68k: mcfgpio: Fix incorrect register offset for CONFIG_M5441x
Benjamin Peterson <[email protected]>
perf trace: avoid garbage when not printing a trace event's arguments
Chao Yu <[email protected]>
f2fs: fix to avoid forcing direct write to use buffered IO on inline_data inode
Zhiguo Niu <[email protected]>
f2fs: fix to avoid use GC_AT when setting gc_mode as GC_URGENT_LOW or GC_URGENT_MID
Yongpeng Yang <[email protected]>
f2fs: check curseg->inited before write_sum_page in change_curseg
Christoph Hellwig <[email protected]>
f2fs: remove the unused flush argument to change_curseg
Christoph Hellwig <[email protected]>
f2fs: open code allocate_segment_by_default
Christoph Hellwig <[email protected]>
f2fs: remove struct segment_allocation default_salloc_ops
LongPing Wei <[email protected]>
f2fs: fix the wrong f2fs_bug_on condition in f2fs_do_replace_block
Arnaldo Carvalho de Melo <[email protected]>
perf ftrace latency: Fix unit on histogram first entry when using --use-nsec
Ilpo Järvinen <[email protected]>
PCI: cpqphp: Fix PCIBIOS_* return value confusion
weiyufeng <[email protected]>
PCI: cpqphp: Use PCI_POSSIBLE_ERROR() to check config reads
Leo Yan <[email protected]>
perf probe: Correct demangled symbols in C++ program
Ian Rogers <[email protected]>
perf probe: Fix libdw memory leak
Chao Yu <[email protected]>
f2fs: fix to account dirty data in __get_secs_required()
Qi Han <[email protected]>
f2fs: compress: fix inconsistent update of i_blocks in release_compress_blocks and reserve_compress_blocks
Ian Rogers <[email protected]>
perf stat: Fix affinity memory leaks on error path
Levi Yun <[email protected]>
perf stat: Close cork_fd when create_perf_stat_counter() failed
Todd Kjos <[email protected]>
PCI: Fix reset_method_store() memory leak
James Clark <[email protected]>
perf cs-etm: Don't flush when packet_queue fills up
Dan Carpenter <[email protected]>
mailbox: arm_mhuv2: clean up loop in get_irq_chan_comb()
Paul Aurich <[email protected]>
smb: cached directories can be more than root file handle
zhang jiao <[email protected]>
pinctrl: k210: Undef K210_PC_DEFAULT
Nuno Sa <[email protected]>
clk: clk-axi-clkgen: make sure to enable the AXI bus clock
Nuno Sa <[email protected]>
dt-bindings: clock: axi-clkgen: include AXI clk
Charles Han <[email protected]>
clk: clk-apple-nco: Add NULL check in applnco_probe
Zhen Lei <[email protected]>
fbdev: sh7760fb: Fix a possible memory leak in sh7760fb_alloc_mem()
Thomas Zimmermann <[email protected]>
fbdev/sh7760fb: Alloc DMA memory from hardware device
Zhang Zekun <[email protected]>
powerpc/kexec: Fix return of uninitialized variable
Michal Suchanek <[email protected]>
powerpc/sstep: make emulate_vsx_load and emulate_vsx_store static
Gautam Menghani <[email protected]>
KVM: PPC: Book3S HV: Avoid returning to nested hypervisor on pending doorbells
Gautam Menghani <[email protected]>
KVM: PPC: Book3S HV: Stop using vc->dpdes for nested KVM guests
Harshit Mogalapalli <[email protected]>
dax: delete a stale directory pmem
Dmitry Antipov <[email protected]>
ocfs2: fix uninitialized value in ocfs2_file_read_iter()
Jinjie Ruan <[email protected]>
cpufreq: CPPC: Fix wrong return value in cppc_get_cpu_power()
Jinjie Ruan <[email protected]>
cpufreq: CPPC: Fix wrong return value in cppc_get_cpu_cost()
Junxian Huang <[email protected]>
RDMA/hns: Fix NULL pointer derefernce in hns_roce_map_mr_sg()
Junxian Huang <[email protected]>
RDMA/hns: Fix out-of-order issue of requester when setting FENCE
Zhen Lei <[email protected]>
scsi: qedi: Fix a possible memory leak in qedi_alloc_and_init_sb()
Zhen Lei <[email protected]>
scsi: qedf: Fix a possible memory leak in qedf_alloc_and_init_sb()
Zeng Heng <[email protected]>
scsi: fusion: Remove unused variable 'rc'
Ye Bin <[email protected]>
scsi: bfa: Fix use-after-free in bfad_im_module_exit()
Mirsad Todorovac <[email protected]>
fs/proc/kcore.c: fix coccinelle reported ERROR instances
Zhang Changzhong <[email protected]>
mfd: rt5033: Fix missing regmap_del_irq_chip()
Zhenzhong Duan <[email protected]>
iommu/vt-d: Fix checks and print in pgtable_walk()
Zhenzhong Duan <[email protected]>
iommu/vt-d: Fix checks and print in dmar_fault_dump_ptes()
Dong Aisheng <[email protected]>
clk: imx: clk-scu: fix clk enable state save and restore
Peng Fan <[email protected]>
clk: imx: fracn-gppll: fix pll power up
Peng Fan <[email protected]>
clk: imx: fracn-gppll: correct PLL initialization flow
Peng Fan <[email protected]>
clk: imx: lpcg-scu: SW workaround for errata (e10858)
Biju Das <[email protected]>
clk: renesas: rzg2l: Fix FOUTPOSTDIV clk
Andre Przywara <[email protected]>
clk: sunxi-ng: d1: Fix PLL_AUDIO0 preset
Kashyap Desai <[email protected]>
RDMA/bnxt_re: Check cqe flags to know imm_data vs inv_irkey
wenglianfa <[email protected]>
RDMA/hns: Fix cpu stuck caused by printings during reset
Junxian Huang <[email protected]>
RDMA/hns: Remove unnecessary QP type checks
Junxian Huang <[email protected]>
RDMA/hns: Use dev_* printings in hem code instead of ibdev_*
Chengchang Tang <[email protected]>
RDMA/hns: Add clear_hem return value to log
wenglianfa <[email protected]>
RDMA/hns: Fix an AEQE overflow error caused by untimely update of eq_db_ci
Jinjie Ruan <[email protected]>
cpufreq: CPPC: Fix possible null-ptr-deref for cppc_get_cpu_cost()
Jinjie Ruan <[email protected]>
cpufreq: CPPC: Fix possible null-ptr-deref for cpufreq_cpu_get_raw()
Michael Ellerman <[email protected]>
powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore
Ritesh Harjani (IBM) <[email protected]>
powerpc/mm/fault: Fix kfence page fault reporting
Miquel Raynal <[email protected]>
mtd: rawnand: atmel: Fix possible memory leak
Biju Das <[email protected]>
mtd: hyperbus: rpc-if: Add missing MODULE_DEVICE_TABLE
Uwe Kleine-König <[email protected]>
mtd: hyperbus: rpc-if: Convert to platform remove callback returning void
Geert Uytterhoeven <[email protected]>
memory: renesas-rpc-if: Remove Runtime PM wrappers
Geert Uytterhoeven <[email protected]>
memory: renesas-rpc-if: Pass device instead of rpcif to rpcif_*()
Geert Uytterhoeven <[email protected]>
memory: renesas-rpc-if: Improve Runtime PM handling
Ritesh Harjani (IBM) <[email protected]>
powerpc/fadump: Move fadump_cma_init to setup_arch() after initmem_init()
Ritesh Harjani (IBM) <[email protected]>
powerpc/fadump: Refactor and prepare fadump_cma_init for late init
Yuan Can <[email protected]>
cpufreq: loongson2: Unregister platform_driver on failure
Andy Shevchenko <[email protected]>
mfd: intel_soc_pmic_bxtwc: Use IRQ domain for PMIC devices
Andy Shevchenko <[email protected]>
mfd: intel_soc_pmic_bxtwc: Use IRQ domain for TMU device
Andy Shevchenko <[email protected]>
mfd: intel_soc_pmic_bxtwc: Use IRQ domain for USB Type-C device
Marcus Folkesson <[email protected]>
mfd: da9052-spi: Change read-mask to write-mask
Jinjie Ruan <[email protected]>
mfd: tps65010: Use IRQF_NO_AUTOEN flag in request_irq() to fix race
Christophe Leroy <[email protected]>
powerpc/vdso: Flag VDSO64 entry points as functions
Bartosz Golaszewski <[email protected]>
pinctrl: zynqmp: drop excess struct member description
Levi Yun <[email protected]>
trace/trace_event_perf: remove duplicate samples on the first tracepoint event
André Almeida <[email protected]>
unicode: Fix utf8_load() error path
Jiayuan Chen <[email protected]>
bpf: fix recursive lock when verdict program return SK_PASS
Hangbin Liu <[email protected]>
wireguard: selftests: load nf_conntrack if not present
Breno Leitao <[email protected]>
netpoll: Use rcu_access_pointer() in netpoll_poll_lock
Dmitry Antipov <[email protected]>
Bluetooth: fix use-after-free in device_for_each_child()
Takashi Iwai <[email protected]>
ALSA: 6fire: Release resources at card release
Takashi Iwai <[email protected]>
ALSA: caiaq: Use snd_card_free_when_closed() at disconnection
Takashi Iwai <[email protected]>
ALSA: us122l: Use snd_card_free_when_closed() at disconnection
Takashi Iwai <[email protected]>
ALSA: usx2y: Use snd_card_free_when_closed() at disconnection
Mingwei Zheng <[email protected]>
net: rfkill: gpio: Add check for clk_enable()
Yuan Can <[email protected]>
drm/amdkfd: Fix wrong usage of INIT_WORK()
Paolo Abeni <[email protected]>
selftests: net: really check for bg process completion
Paolo Abeni <[email protected]>
ipv6: release nexthop on device removal
Eric Dumazet <[email protected]>
net: use unrcu_pointer() helper
Eric Dumazet <[email protected]>
sock_diag: allow concurrent operation in sock_diag_rcv_msg()
Eric Dumazet <[email protected]>
sock_diag: allow concurrent operations
Eric Dumazet <[email protected]>
sock_diag: add module pointer to "struct sock_diag_handler"
Zijian Zhang <[email protected]>
bpf, sockmap: Fix sk_msg_reset_curr
Zijian Zhang <[email protected]>
bpf, sockmap: Several fixes to bpf_msg_pop_data
Zijian Zhang <[email protected]>
bpf, sockmap: Several fixes to bpf_msg_push_data
Zijian Zhang <[email protected]>
selftests/bpf: Add push/pop checking for msg_verify_data in test_sockmap
Zijian Zhang <[email protected]>
selftests/bpf: Fix total_bytes in msg_loop_rx in test_sockmap
Zijian Zhang <[email protected]>
selftests/bpf: Fix SENDPAGE data logic in test_sockmap
Zijian Zhang <[email protected]>
selftests/bpf: Add txmsg_pass to pull/push/pop in test_sockmap
Maurice Lambert <[email protected]>
netlink: typographical error in nlmsg_type constants definition
Florian Westphal <[email protected]>
netfilter: nf_tables: must hold rcu read lock while iterating object type list
Pablo Neira Ayuso <[email protected]>
netfilter: nf_tables: skip transaction if update object is not implemented
Zichen Xie <[email protected]>
drm/msm/dpu: cast crtc_clk calculation to u64 in _dpu_core_perf_calc_clk()
Yuan Can <[email protected]>
wifi: wfx: Fix error handling in wfx_core_init()
Lucas Stach <[email protected]>
drm/etnaviv: hold GPU lock across perfmon sampling
Doug Brown <[email protected]>
drm/etnaviv: fix power register offset on GC300
Xiaolei Wang <[email protected]>
drm/etnaviv: Request pages from DMA32 zone on addressing_limited
Lukasz Luba <[email protected]>
drm/msm/gpu: Check the status of registration to PM QoS
Rob Clark <[email protected]>
drm/msm/gpu: Bypass PM QoS constraint for idle clamp
Rob Clark <[email protected]>
drm/msm/gpu: Add devfreq tuning debugfs
Jinjie Ruan <[email protected]>
drm/msm/adreno: Use IRQF_NO_AUTOEN flag in request_irq()
Xu Kuohai <[email protected]>
bpf, arm64: Remove garbage frame for struct_ops trampoline
Steven Price <[email protected]>
drm/panfrost: Remove unused id_mask from struct panfrost_model
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_dcbnl.c
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_dmac_flt.c
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in cn10k.c
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_flows.c
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_ethtool.c
Dipendra Khadka <[email protected]>
octeontx2-pf: handle otx2_mbox_get_rsp errors in otx2_common.c
Matthias Schiffer <[email protected]>
drm: fsl-dcu: enable PIXCLK on LS1021A
Alper Nebi Yasak <[email protected]>
wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_config_scan()
Zijian Zhang <[email protected]>
selftests/bpf: Fix txmsg_redir of test_txmsg_pull in test_sockmap
Zijian Zhang <[email protected]>
selftests/bpf: Fix msg_verify_data in test_sockmap
Tomi Valkeinen <[email protected]>
drm/bridge: tc358767: Fix link properties discovery
Hangbin Liu <[email protected]>
netdevsim: copy addresses for both in and out paths
Andrii Nakryiko <[email protected]>
libbpf: never interpret subprogs in .text as entry programs
Andrii Nakryiko <[email protected]>
libbpf: fix sym_is_subprog() logic for weak global subprogs
Alexis Lothoré (eBPF Foundation) <[email protected]>
selftests/bpf: add missing header include for htons
Eduard Zingerman <[email protected]>
selftests/bpf: Fix backtrace printing for selftests crashes
Stanislav Fomichev <[email protected]>
selftests/bpf: Add csum helpers
Yuan Chen <[email protected]>
bpf: Fix the xdp_adjust_tail sample prog issue
Tony Ambardar <[email protected]>
libbpf: Fix output .symtab byte-order during linking
Pin-yen Lin <[email protected]>
drm/bridge: anx7625: Drop EDID cache on bridge power off
Macpaul Lin <[email protected]>
ASoC: dt-bindings: mt6359: Update generic node name and dmic-mode
Shengjiu Wang <[email protected]>
ASoC: fsl_micfil: fix regmap_write_bits usage
Igor Prusov <[email protected]>
dt-bindings: vendor-prefixes: Add NeoFidelity, Inc
Baochen Qiang <[email protected]>
wifi: ath10k: fix invalid VHT parameters in supported_vht_mcs_rate_nss2
Baochen Qiang <[email protected]>
wifi: ath10k: fix invalid VHT parameters in supported_vht_mcs_rate_nss1
Maíra Canal <[email protected]>
drm/v3d: Address race-condition in MMU flush
Jinjie Ruan <[email protected]>
drm/imx/ipuv3: Use IRQF_NO_AUTOEN flag in request_irq()
Jinjie Ruan <[email protected]>
drm/imx/dcss: Use IRQF_NO_AUTOEN flag in request_irq()
Jinjie Ruan <[email protected]>
wifi: mwifiex: Use IRQF_NO_AUTOEN flag in request_irq()
Jinjie Ruan <[email protected]>
wifi: p54: Use IRQF_NO_AUTOEN flag in request_irq()
Tomi Valkeinen <[email protected]>
drm/omap: Fix locking in omap_gem_new_dmabuf()
Tomi Valkeinen <[email protected]>
drm/omap: Fix possible NULL dereference
Jeongjun Park <[email protected]>
wifi: ath9k: add range check for conn_rsp_epid in htc_connect_service()
Dave Stevenson <[email protected]>
drm/vc4: hvs: Correct logic on stopping an HVS channel
Dave Stevenson <[email protected]>
drm/vc4: hvs: Remove incorrect limit from hvs_dlist debugfs function
Dave Stevenson <[email protected]>
drm/vc4: hvs: Fix dlist debug not resetting the next entry pointer
Dom Cobley <[email protected]>
drm/vc4: hdmi: Avoid hang with debug registers when suspended
Dave Stevenson <[email protected]>
drm/vc4: hvs: Don't write gamma luts on 2711
Andy Shevchenko <[email protected]>
drm/mm: Mark drm_mm_interval_tree*() functions with __maybe_unused
Yao Zi <[email protected]>
platform/x86: panasonic-laptop: Return errno correctly in show callback
Li Huafei <[email protected]>
media: atomisp: Add check for rgby_data memory allocation failure
Sergey Senozhatsky <[email protected]>
media: venus: provide ctx queue lock for ioctl synchronization
Dikshita Agarwal <[email protected]>
venus: venc: add handling for VIDIOC_ENCODER_CMD
Luo Qiu <[email protected]>
firmware: arm_scpi: Check the DVFS OPP count returned by the firmware
Reinette Chatre <[email protected]>
selftests/resctrl: Protect against array overrun during iMC config parsing
Chen-Yu Tsai <[email protected]>
arm64: dts: mediatek: mt8183-kukui-jacuzzi: Add supplies for fixed regulators
Chen-Yu Tsai <[email protected]>
arm64: dts: mediatek: mt8183-kukui-jacuzzi: Fix DP bridge supply names
Hsin-Yi Wang <[email protected]>
arm64: dts: mt8183: jacuzzi: Move panel under aux-bus
Andy Shevchenko <[email protected]>
regmap: irq: Set lockdep class for hierarchical IRQ domains
Jinjie Ruan <[email protected]>
spi: zynqmp-gqspi: Undo runtime PM changes at driver exit time
Breno Leitao <[email protected]>
spi: tegra210-quad: Avoid shift-out-of-bounds
Zhang Zekun <[email protected]>
pmdomain: ti-sci: Add missing of_node_put() for args.np
Andre Przywara <[email protected]>
ARM: dts: cubieboard4: Fix DCDC5 regulator constraints
Clark Wang <[email protected]>
pwm: imx27: Workaround of the pwm output bug when decrease the duty cycle
Daolong Zhu <[email protected]>
arm64: dts: mt8183: Damu: add i2c2's i2c-scl-internal-delay-ns
Daolong Zhu <[email protected]>
arm64: dts: mt8183: cozmo: add i2c2's i2c-scl-internal-delay-ns
Daolong Zhu <[email protected]>
arm64: dts: mt8183: burnet: add i2c2's i2c-scl-internal-delay-ns
Daolong Zhu <[email protected]>
arm64: dts: mt8183: fennel: add i2c2's i2c-scl-internal-delay-ns
Chen Ridong <[email protected]>
cgroup/bpf: only cgroup v2 can be attached by bpf programs
Chen Ridong <[email protected]>
Revert "cgroup: Fix memory leak caused by missing cgroup_bpf_offline"
Chen-Yu Tsai <[email protected]>
arm64: dts: mediatek: mt8173-elm-hana: Add vdd-supply to second source trackpad
Hsin-Te Yuan <[email protected]>
arm64: dts: mt8183: kukui: Fix the address of eeprom at i2c4
Hsin-Te Yuan <[email protected]>
arm64: dts: mt8183: krane: Fix the address of eeprom at i2c4
Gregory Price <[email protected]>
tpm: fix signed/unsigned bug when checking event logs
Bartosz Golaszewski <[email protected]>
mmc: mmc_spi: drop buggy snprintf()
Dan Carpenter <[email protected]>
soc: qcom: geni-se: fix array underflow in geni_se_clk_tbl_get()
Jinjie Ruan <[email protected]>
soc: ti: smartreflex: Use IRQF_NO_AUTOEN flag in request_irq()
Macpaul Lin <[email protected]>
arm64: dts: mt8195: Fix dtbs_check error for infracfg_ao node
Michal Simek <[email protected]>
microblaze: Export xmb_manager functions
Gaosheng Cui <[email protected]>
drivers: soc: xilinx: add the missing kfree in xlnx_add_cb_for_suspend()
Jinjie Ruan <[email protected]>
spi: spi-fsl-lpspi: Use IRQF_NO_AUTOEN flag in request_irq()
Alexander Stein <[email protected]>
spi: spi-fsl-lpspi: downgrade log level for pio mode
Javier Carrasco <[email protected]>
clocksource/drivers/timer-ti-dm: Fix child node refcount handling
Mark Brown <[email protected]>
clocksource/drivers:sp804: Make user selectable
Marco Elver <[email protected]>
kcsan, seqlock: Fix incorrect assumption in read_seqbegin()
Marco Elver <[email protected]>
kcsan, seqlock: Support seqcount_latch_t
Peter Zijlstra <[email protected]>
seqlock/latch: Provide raw_read_seqcount_latch_retry()
Miguel Ojeda <[email protected]>
time: Fix references to _msecs_to_jiffies() handling of values
Daniel Lezcano <[email protected]>
thermal/lib: Fix memory leak on error in thermal_genl_auto()
Daniel Lezcano <[email protected]>
tools/lib/thermal: Make more generic the command encoding function
Christophe JAILLET <[email protected]>
crypto: cavium - Fix an error handling path in cpt_ucode_load_fw()
Chen Ridong <[email protected]>
crypto: bcm - add error check in the ahash_hmac_init function
Chen Ridong <[email protected]>
crypto: caam - add error check to caam_rsa_set_priv_key_form
Lifeng Zheng <[email protected]>
ACPI: CPPC: Fix _CPC register setting issue
Pei Xiao <[email protected]>
hwmon: (nct6775-core) Fix overflows seen when writing limit attributes
Baruch Siach <[email protected]>
doc: rcu: update printed dynticks counter bits
Li Huafei <[email protected]>
crypto: inside-secure - Fix the return value of safexcel_xcbcmac_cra_init()
Orange Kao <[email protected]>
EDAC/igen6: Avoid segmentation fault on module unload
Weili Qian <[email protected]>
crypto: hisilicon/qm - disable same error report before resetting
Everest K.C <[email protected]>
crypto: cavium - Fix the if condition to exit loop after timeout
Yi Yang <[email protected]>
crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY
Priyanka Singh <[email protected]>
EDAC/fsl_ddr: Fix bad bit shift operations
Rafael J. Wysocki <[email protected]>
thermal: core: Initialize thermal zones before registering them
Ahsan Atta <[email protected]>
crypto: qat - remove faulty arbiter config reset
David Thompson <[email protected]>
EDAC/bluefield: Fix potential integer overflow
Yuan Can <[email protected]>
firmware: google: Unregister driver_info on failure
Christophe JAILLET <[email protected]>
crypto: caam - Fix the pointer passed to caam_qi_shutdown()
Christoph Hellwig <[email protected]>
virtio_blk: reverse request order in virtio_queue_rqs
Christoph Hellwig <[email protected]>
nvme-pci: reverse request order in nvme_queue_rqs
Thadeu Lima de Souza Cascardo <[email protected]>
hfsplus: don't query the device logical block size multiple times
Masahiro Yamada <[email protected]>
s390/syscalls: Avoid creation of arch/arch/ directory
Christoph Hellwig <[email protected]>
block: fix bio_split_rw_at to take zone_write_granularity into account
Zizhi Wo <[email protected]>
netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING
Zizhi Wo <[email protected]>
cachefiles: Fix missing pos updates in cachefiles_ondemand_fd_write_iter()
Aleksandr Mishin <[email protected]>
acpi/arm64: Adjust error handling procedure in gtdt_parse_timer_block()
Masahiro Yamada <[email protected]>
arm64: fix .data.rel.ro size assertion when CONFIG_LTO_CLANG
Daniel Palmer <[email protected]>
m68k: mvme147: Reinstate early console
Geert Uytterhoeven <[email protected]>
m68k: mvme16x: Add and use "mvme16x.h"
Daniel Palmer <[email protected]>
m68k: mvme147: Fix SCSI controller IRQ numbers
Christoph Hellwig <[email protected]>
nvme-pci: fix freeing of the HMB descriptor table
David Disseldorp <[email protected]>
initramfs: avoid filename buffer overrun
Jonas Gorski <[email protected]>
mips: asm: fix warning when disabling MIPS_FP_SUPPORT
Jan Kara <[email protected]>
ext4: avoid remount errors with 'abort' mount option
Jan Kara <[email protected]>
ext4: make 'abort' mount option handling standard
Yang Erkun <[email protected]>
brd: defer automatic disk creation until module initialization succeeds
Vineeth Vijayan <[email protected]>
s390/cio: Do not unregister the subchannel based on DNV
Andre Przywara <[email protected]>
kselftest/arm64: mte: fix printf type warnings about longs
Andre Przywara <[email protected]>
kselftest/arm64: mte: fix printf type warnings about __u64
Borislav Petkov (AMD) <[email protected]>
x86/barrier: Do not serialize MSR accesses on AMD
Li Zhijian <[email protected]>
fs/inode: Prevent dump_mapping() accessing invalid dentry.d_name.name
Alex Hung <[email protected]>
drm/amd/display: Initialize denominators' default to 1
Chih-Kang Chang <[email protected]>
wifi: rtw89: avoid to add interface to list twice when SER
Dmitry Kandybka <[email protected]>
mptcp: fix possible integer overflow in mptcp_reset_tout_timer
Thomas Weißschuh <[email protected]>
fbdev: efifb: Register sysfs groups through driver core
Luiz Augusto von Dentz <[email protected]>
Bluetooth: MGMT: Fix possible crash on mgmt_index_removed
Luiz Augusto von Dentz <[email protected]>
Bluetooth: hci_sync: Add helper functions to manipulate cmd_sync queue
Alex Hung <[email protected]>
drm/amd/display: Check null-initialized variables
Srinivasan Shanmugam <[email protected]>
drm/amd/display: Add NULL check for function pointer in dcn32_set_output_transfer_func
Marco Pagani <[email protected]>
fpga: manager: add owner module and take its refcount
Marco Pagani <[email protected]>
fpga: bridge: add owner module and take its refcount
Pali Rohár <[email protected]>
cifs: Fix buffer overflow when parsing NFS reparse points
Ard Biesheuvel <[email protected]>
x86/stackprotector: Work around strict Clang TLS symbol requirements
Hugo Villeneuve <[email protected]>
serial: sc16is7xx: fix invalid FIFO access with special register set
Wang Liang <[email protected]>
net: fix crash when config small gso_max_size/gso_ipv4_max_size
Kent Overstreet <[email protected]>
closures: Change BUG_ON() to WARN_ON()
Breno Leitao <[email protected]>
ipmr: Fix access to mfc_cache_list without lock held
Harith G <[email protected]>
ARM: 9420/1: smp: Fix SMP for xip kernels
Eryk Zagorski <[email protected]>
ALSA: usb-audio: Fix Yamaha P-125 Quirk Entry
Yuli Wang <[email protected]>
LoongArch: Define a default value for VM_DATA_DEFAULT_FLAGS
John Watts <[email protected]>
ASoC: audio-graph-card2: Purge absent supplies for device tree nodes
David Wang <[email protected]>
proc/softirqs: replace seq_printf with seq_put_decimal_ull_width
Hans de Goede <[email protected]>
drm: panel-orientation-quirks: Make Lenovo Yoga Tab 3 X90F DMI match less strict
Luo Yifan <[email protected]>
ASoC: stm: Prevent potential division by zero in stm32_sai_get_clk_div()
Luo Yifan <[email protected]>
ASoC: stm: Prevent potential division by zero in stm32_sai_mclk_round_rate()
Markus Petri <[email protected]>
ASoC: amd: yc: Support dmic on another model of Lenovo Thinkpad E14 Gen 6
Vishnu Sankar <[email protected]>
platform/x86: thinkpad_acpi: Fix for ThinkPad's with ECFW showing incorrect fan speed
Alexander Hölzl <[email protected]>
can: j1939: fix error in J1939 documentation.
zhang jiao <[email protected]>
tools/lib/thermal: Remove the thermal.h soft link when doing make clean
Kurt Borja <[email protected]>
platform/x86: dell-wmi-base: Handle META key Lock/Unlock events
Kurt Borja <[email protected]>
platform/x86: dell-smbios-base: Extends support to Alienware products
Mikhail Rudenko <[email protected]>
regulator: rk808: Add apply_bit for BUCK3 on RK809
Charles Han <[email protected]>
soc: qcom: Add check devm_kasprintf() returned value
Benoît Monin <[email protected]>
net: usb: qmi_wwan: add Quectel RG650V
Jiayuan Chen <[email protected]>
bpf: fix filed access without lock
Arnd Bergmann <[email protected]>
x86/amd_nb: Fix compile-testing without CONFIG_AMD_NB
Piyush Raj Chouhan <[email protected]>
ALSA: hda/realtek: Add subwoofer quirk for Infinix ZERO BOOK 13
Li Zhijian <[email protected]>
selftests/watchdog-test: Fix system accidentally reset after watchdog-test
Benjamin Große <[email protected]>
usb: add support for new USB device ID 0x17EF:0x3098 for the r8152 driver
Ben Greear <[email protected]>
mac80211: fix user-power when emulating chanctx
Daniel Gabay <[email protected]>
wifi: iwlwifi: mvm: Use the sync timepoint API in suspend
Hans de Goede <[email protected]>
ASoC: Intel: sst: Support LPE0F28 ACPI HID
Hans de Goede <[email protected]>
ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet
Hans de Goede <[email protected]>
ASoC: Intel: bytcr_rt5640: Add support for non ACPI instantiated codec
-------------
Diffstat:
Documentation/ABI/testing/sysfs-bus-pci | 11 + Documentation/ABI/testing/sysfs-fs-f2fs | 7 +- Documentation/RCU/stallwarn.rst | 2 +- .../devicetree/bindings/clock/adi,axi-clkgen.yaml | 22 +- .../devicetree/bindings/iio/dac/adi,ad3552r.yaml | 2 +- .../devicetree/bindings/serial/rs485.yaml | 19 +- .../devicetree/bindings/sound/mt6359.yaml | 10 +- .../devicetree/bindings/vendor-prefixes.yaml | 2 + Documentation/driver-api/fpga/fpga-bridge.rst | 7 +- Documentation/driver-api/fpga/fpga-mgr.rst | 34 +- Documentation/filesystems/mount_api.rst | 3 +- Documentation/locking/seqlock.rst | 2 +- Documentation/networking/j1939.rst | 2 +- Makefile | 4 +- arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 4 +- arch/arm/kernel/entry-armv.S | 8 + arch/arm/kernel/head.S | 4 + arch/arm/kernel/psci_smp.c | 7 + arch/arm/mm/idmap.c | 7 + arch/arm/mm/ioremap.c | 35 +- .../boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 3 + arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 2 +- arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 2 +- arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtsi | 8 + .../dts/mediatek/mt8183-kukui-jacuzzi-burnet.dts | 3 + .../dts/mediatek/mt8183-kukui-jacuzzi-cozmo.dts | 2 + .../dts/mediatek/mt8183-kukui-jacuzzi-damu.dts | 3 + .../dts/mediatek/mt8183-kukui-jacuzzi-fennel.dtsi | 3 + .../boot/dts/mediatek/mt8183-kukui-jacuzzi.dtsi | 56 +- .../boot/dts/mediatek/mt8183-kukui-kakadu.dtsi | 4 +- .../boot/dts/mediatek/mt8183-kukui-kodama.dtsi | 4 +- .../boot/dts/mediatek/mt8183-kukui-krane.dtsi | 4 +- arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi | 2 +- arch/arm64/boot/dts/mediatek/mt8195.dtsi | 2 +- arch/arm64/kernel/fpsimd.c | 1 + arch/arm64/kernel/process.c | 2 +- arch/arm64/kernel/ptrace.c | 6 +- arch/arm64/kernel/smccc-call.S | 35 +- arch/arm64/kernel/vmlinux.lds.S | 6 +- arch/arm64/kvm/arm.c | 2 +- arch/arm64/kvm/mmio.c | 36 +- arch/arm64/kvm/pmu-emul.c | 1 - arch/arm64/kvm/vgic/vgic-its.c | 32 +- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 7 +- arch/arm64/kvm/vgic/vgic.h | 24 + arch/arm64/mm/context.c | 4 +- arch/arm64/net/bpf_jit_comp.c | 47 +- arch/loongarch/Makefile | 21 +- arch/loongarch/include/asm/hugetlb.h | 10 + arch/loongarch/include/asm/page.h | 5 +- arch/loongarch/include/asm/percpu.h | 6 +- arch/loongarch/mm/tlb.c | 2 +- arch/loongarch/net/bpf_jit.c | 2 +- arch/loongarch/vdso/Makefile | 2 +- arch/m68k/coldfire/device.c | 8 +- arch/m68k/include/asm/mcfgpio.h | 2 +- arch/m68k/include/asm/mvme147hw.h | 4 +- arch/m68k/kernel/early_printk.c | 9 +- arch/m68k/mvme147/config.c | 30 + arch/m68k/mvme147/mvme147.h | 6 + arch/m68k/mvme16x/config.c | 2 + arch/m68k/mvme16x/mvme16x.h | 6 + arch/microblaze/kernel/microblaze_ksyms.c | 10 + arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 73 +- arch/mips/include/asm/switch_to.h | 2 +- arch/parisc/kernel/ftrace.c | 2 +- arch/powerpc/Kconfig | 4 +- arch/powerpc/Makefile | 13 +- arch/powerpc/include/asm/dtl.h | 4 +- arch/powerpc/include/asm/fadump.h | 7 + arch/powerpc/include/asm/sstep.h | 5 - arch/powerpc/include/asm/vdso.h | 1 + arch/powerpc/kernel/fadump.c | 23 +- arch/powerpc/kernel/prom_init.c | 29 +- arch/powerpc/kernel/setup-common.c | 6 +- arch/powerpc/kernel/setup_64.c | 1 + arch/powerpc/kernel/vdso/Makefile | 55 +- arch/powerpc/kexec/file_load_64.c | 9 +- arch/powerpc/kvm/book3s_hv.c | 10 +- arch/powerpc/kvm/book3s_hv_nested.c | 14 +- arch/powerpc/lib/sstep.c | 12 +- arch/powerpc/mm/fault.c | 10 +- arch/powerpc/platforms/pseries/dtl.c | 8 +- arch/powerpc/platforms/pseries/lpar.c | 8 +- arch/s390/kernel/entry.S | 4 + arch/s390/kernel/kprobes.c | 6 + arch/s390/kernel/perf_cpum_sf.c | 4 +- arch/s390/kernel/syscalls/Makefile | 2 +- arch/sh/kernel/cpu/proc.c | 2 +- arch/um/drivers/net_kern.c | 2 +- arch/um/drivers/ubd_kern.c | 2 +- arch/um/drivers/vector_kern.c | 3 +- arch/um/kernel/physmem.c | 6 +- arch/um/kernel/process.c | 2 +- arch/um/kernel/sysrq.c | 2 +- arch/x86/Makefile | 3 +- arch/x86/crypto/aegis128-aesni-asm.S | 29 +- arch/x86/entry/entry.S | 15 + arch/x86/events/amd/core.c | 10 +- arch/x86/events/intel/core.c | 34 +- arch/x86/events/intel/pt.c | 11 +- arch/x86/events/intel/pt.h | 2 + arch/x86/include/asm/amd_nb.h | 5 +- arch/x86/include/asm/asm-prototypes.h | 3 + arch/x86/include/asm/barrier.h | 18 - arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/processor.h | 18 + arch/x86/kernel/cpu/amd.c | 3 + arch/x86/kernel/cpu/common.c | 9 + arch/x86/kernel/cpu/hygon.c | 3 + arch/x86/kernel/vmlinux.lds.S | 3 + arch/x86/kvm/mmu/mmu.c | 5 +- arch/x86/kvm/mmu/paging_tmpl.h | 5 +- arch/x86/kvm/mmu/spte.c | 18 +- arch/x86/pci/acpi.c | 119 + block/blk-merge.c | 10 +- block/blk-mq.c | 6 + block/blk-mq.h | 13 + crypto/api.c | 63 +- crypto/internal.h | 8 + crypto/pcrypt.c | 12 +- drivers/acpi/arm64/gtdt.c | 2 +- drivers/acpi/cppc_acpi.c | 1 - drivers/base/bus.c | 2 + drivers/base/core.c | 69 +- drivers/base/property.c | 6 +- drivers/base/regmap/regmap-irq.c | 4 + drivers/base/regmap/regmap.c | 12 + drivers/block/brd.c | 66 +- drivers/block/ublk_drv.c | 17 +- drivers/block/virtio_blk.c | 46 +- drivers/bluetooth/btusb.c | 2 + drivers/clk/clk-apple-nco.c | 3 + drivers/clk/clk-axi-clkgen.c | 22 +- drivers/clk/imx/clk-fracn-gppll.c | 10 +- drivers/clk/imx/clk-lpcg-scu.c | 37 +- drivers/clk/imx/clk-scu.c | 2 +- drivers/clk/qcom/gcc-qcs404.c | 1 + drivers/clk/renesas/rzg2l-cpg.c | 11 +- drivers/clk/sunxi-ng/ccu-sun20i-d1.c | 2 +- drivers/clocksource/Kconfig | 3 +- drivers/clocksource/timer-ti-dm-systimer.c | 4 +- drivers/comedi/comedi_fops.c | 12 + drivers/counter/stm32-timer-cnt.c | 16 +- drivers/counter/ti-ecap-capture.c | 7 +- drivers/cpufreq/cppc_cpufreq.c | 6 + drivers/cpufreq/loongson2_cpufreq.c | 4 +- drivers/cpufreq/mediatek-cpufreq-hw.c | 2 +- drivers/crypto/bcm/cipher.c | 5 +- drivers/crypto/caam/caampkc.c | 11 +- drivers/crypto/caam/qi.c | 2 +- drivers/crypto/cavium/cpt/cptpf_main.c | 6 +- drivers/crypto/hisilicon/hpre/hpre_main.c | 35 +- drivers/crypto/hisilicon/qm.c | 47 +- drivers/crypto/hisilicon/sec2/sec_main.c | 35 +- drivers/crypto/hisilicon/zip/zip_main.c | 35 +- drivers/crypto/inside-secure/safexcel_hash.c | 2 +- drivers/crypto/qat/qat_common/adf_hw_arbiter.c | 4 - drivers/dax/pmem/Makefile | 7 - drivers/dax/pmem/pmem.c | 10 - drivers/dma-buf/dma-fence-array.c | 28 +- drivers/dma-buf/dma-fence-unwrap.c | 126 +- drivers/edac/bluefield_edac.c | 2 +- drivers/edac/fsl_ddr_edac.c | 22 +- drivers/edac/igen6_edac.c | 2 + drivers/firmware/arm_scpi.c | 3 + drivers/firmware/efi/tpm.c | 17 +- drivers/firmware/google/gsmi.c | 6 +- drivers/firmware/smccc/smccc.c | 4 - drivers/fpga/fpga-bridge.c | 57 +- drivers/fpga/fpga-mgr.c | 82 +- drivers/gpio/gpio-exar.c | 10 +- drivers/gpio/gpio-grgpio.c | 26 +- drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 48 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 +- drivers/gpu/drm/amd/amdgpu/hdp_v5_2.c | 6 +- drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 27 + drivers/gpu/drm/amd/amdkfd/kfd_process.c | 5 +- drivers/gpu/drm/amd/display/dc/bios/bios_parser.c | 14 + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 3 +- drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 7 +- drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 11 +- .../gpu/drm/amd/display/dc/dcn32/dcn32_resource.c | 3 + .../display/dc/dml/dcn20/display_rq_dlg_calc_20.c | 2 +- .../gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 7 +- .../amd/display/dc/dml/dml1_display_rq_dlg_calc.c | 2 +- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 2 + drivers/gpu/drm/bridge/analogix/anx7625.c | 2 + drivers/gpu/drm/bridge/ite-it6505.c | 11 +- drivers/gpu/drm/bridge/tc358767.c | 7 + drivers/gpu/drm/display/drm_dp_dual_mode_helper.c | 4 +- drivers/gpu/drm/display/drm_dp_mst_topology.c | 55 +- drivers/gpu/drm/drm_mm.c | 2 +- drivers/gpu/drm/drm_panel_orientation_quirks.c | 19 +- drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 3 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 10 + drivers/gpu/drm/etnaviv/etnaviv_dump.c | 7 +- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 48 +- drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 21 + drivers/gpu/drm/fsl-dcu/Kconfig | 1 + drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 15 + drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 3 + drivers/gpu/drm/imx/dcss/dcss-crtc.c | 6 +- drivers/gpu/drm/imx/ipuv3-crtc.c | 6 +- drivers/gpu/drm/mcde/mcde_drv.c | 1 + drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 2 +- drivers/gpu/drm/msm/msm_debugfs.c | 12 + drivers/gpu/drm/msm/msm_drv.h | 9 + drivers/gpu/drm/msm/msm_gpu.h | 15 +- drivers/gpu/drm/msm/msm_gpu_devfreq.c | 148 +- drivers/gpu/drm/omapdrm/dss/base.c | 25 +- drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 +- drivers/gpu/drm/omapdrm/omap_drv.c | 4 +- drivers/gpu/drm/omapdrm/omap_gem.c | 10 +- drivers/gpu/drm/panel/panel-simple.c | 28 + drivers/gpu/drm/panfrost/panfrost_gpu.c | 1 - drivers/gpu/drm/radeon/r600_cs.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 8 + drivers/gpu/drm/sti/sti_cursor.c | 3 + drivers/gpu/drm/sti/sti_gdp.c | 3 + drivers/gpu/drm/sti/sti_hqvdp.c | 3 + drivers/gpu/drm/sti/sti_mixer.c | 2 +- drivers/gpu/drm/ttm/ttm_bo_util.c | 13 +- drivers/gpu/drm/ttm/ttm_tt.c | 12 + drivers/gpu/drm/v3d/v3d_mmu.c | 29 +- drivers/gpu/drm/v3d/v3d_perfmon.c | 2 +- drivers/gpu/drm/vc4/vc4_drv.h | 1 + drivers/gpu/drm/vc4/vc4_hdmi.c | 6 +- drivers/gpu/drm/vc4/vc4_hvs.c | 31 +- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-magicmouse.c | 56 +- drivers/hid/wacom_sys.c | 3 +- drivers/hid/wacom_wac.c | 4 +- drivers/hwmon/nct6775-core.c | 7 +- drivers/hwmon/tps23861.c | 2 +- drivers/i3c/master.c | 201 +- drivers/i3c/master/dw-i3c-master.c | 5 +- drivers/i3c/master/i3c-master-cdns.c | 5 +- drivers/i3c/master/mipi-i3c-hci/core.c | 4 +- drivers/i3c/master/mipi-i3c-hci/dma.c | 2 +- drivers/i3c/master/svc-i3c-master.c | 148 +- drivers/iio/adc/ad7780.c | 2 +- drivers/iio/adc/ad7923.c | 4 +- drivers/iio/inkern.c | 2 +- drivers/iio/light/al3010.c | 11 +- drivers/iio/light/ltr501.c | 2 + drivers/iio/magnetometer/yamaha-yas530.c | 13 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 7 +- drivers/infiniband/hw/bnxt_re/qplib_fp.h | 2 +- drivers/infiniband/hw/hns/hns_roce_cq.c | 4 +- drivers/infiniband/hw/hns/hns_roce_device.h | 1 + drivers/infiniband/hw/hns/hns_roce_hem.c | 74 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 172 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 6 + drivers/infiniband/hw/hns/hns_roce_mr.c | 11 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 56 +- drivers/infiniband/hw/hns/hns_roce_srq.c | 4 +- drivers/iommu/arm/arm-smmu/arm-smmu.c | 11 + drivers/iommu/intel/iommu.c | 40 +- drivers/iommu/io-pgtable-arm.c | 18 +- drivers/leds/flash/leds-mt6360.c | 3 +- drivers/leds/led-class.c | 14 +- drivers/leds/leds-lp55xx-common.c | 3 - drivers/mailbox/arm_mhuv2.c | 8 +- drivers/mailbox/mtk-cmdq-mailbox.c | 12 +- drivers/md/bcache/closure.c | 10 +- drivers/md/bcache/super.c | 2 +- drivers/md/dm-thin.c | 1 + drivers/media/dvb-frontends/ts2020.c | 8 +- drivers/media/i2c/adv7604.c | 5 +- drivers/media/i2c/adv7842.c | 13 +- drivers/media/i2c/dw9768.c | 10 +- drivers/media/i2c/tc358743.c | 4 +- drivers/media/platform/allegro-dvt/allegro-core.c | 4 +- drivers/media/platform/amphion/vpu_drv.c | 2 +- drivers/media/platform/amphion/vpu_v4l2.c | 2 +- drivers/media/platform/aspeed/aspeed-video.c | 4 +- drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 4 +- drivers/media/platform/qcom/venus/core.c | 2 +- drivers/media/platform/qcom/venus/core.h | 11 + drivers/media/platform/qcom/venus/vdec.c | 4 + drivers/media/platform/qcom/venus/venc.c | 72 + .../media/platform/samsung/exynos4-is/media-dev.h | 5 +- drivers/media/radio/wl128x/fmdrv_common.c | 3 +- drivers/media/test-drivers/vivid/vivid-vid-cap.c | 15 +- drivers/media/usb/cx231xx/cx231xx-cards.c | 2 + drivers/media/usb/gspca/ov534.c | 2 +- drivers/media/usb/uvc/uvc_driver.c | 113 +- drivers/media/v4l2-core/v4l2-dv-timings.c | 132 +- drivers/memory/renesas-rpc-if.c | 42 +- drivers/message/fusion/mptsas.c | 4 +- drivers/mfd/da9052-spi.c | 2 +- drivers/mfd/intel_soc_pmic_bxtwc.c | 138 +- drivers/mfd/rt5033.c | 4 +- drivers/mfd/tps65010.c | 8 +- drivers/misc/apds990x.c | 12 +- drivers/misc/eeprom/eeprom_93cx6.c | 10 + drivers/mmc/core/bus.c | 2 + drivers/mmc/core/card.h | 7 + drivers/mmc/core/core.c | 3 + drivers/mmc/core/quirks.h | 9 + drivers/mmc/core/sd.c | 2 +- drivers/mmc/host/mmc_spi.c | 9 +- drivers/mmc/host/mtk-sd.c | 9 +- drivers/mmc/host/sdhci-pci-core.c | 72 + drivers/mmc/host/sdhci-pci.h | 1 + drivers/mtd/hyperbus/rpc-if.c | 31 +- drivers/mtd/nand/raw/atmel/pmecc.c | 8 +- drivers/mtd/nand/raw/atmel/pmecc.h | 2 - drivers/mtd/spi-nor/core.c | 2 +- drivers/mtd/ubi/attach.c | 12 +- drivers/mtd/ubi/fastmap-wl.c | 19 +- drivers/mtd/ubi/wl.c | 11 +- drivers/mtd/ubi/wl.h | 3 +- drivers/net/can/c_can/c_can_main.c | 26 +- drivers/net/can/dev/dev.c | 2 +- drivers/net/can/ifi_canfd/ifi_canfd.c | 58 +- drivers/net/can/m_can/m_can.c | 33 +- drivers/net/can/sja1000/sja1000.c | 65 +- drivers/net/can/spi/hi311x.c | 48 +- drivers/net/can/spi/mcp251xfd/mcp251xfd-tef.c | 29 +- drivers/net/can/sun4i_can.c | 22 +- drivers/net/can/usb/ems_usb.c | 58 +- drivers/net/can/usb/gs_usb.c | 104 +- drivers/net/dsa/qca/qca8k-8xxx.c | 2 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +- drivers/net/ethernet/broadcom/tg3.c | 3 + drivers/net/ethernet/cavium/liquidio/lio_main.c | 11 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c | 13 +- drivers/net/ethernet/freescale/fec_mpc52xx_phy.c | 2 +- drivers/net/ethernet/freescale/fec_ptp.c | 13 +- .../net/ethernet/freescale/fs_enet/mii-bitbang.c | 2 +- drivers/net/ethernet/google/gve/gve_main.c | 7 + drivers/net/ethernet/google/gve/gve_rx.c | 4 - drivers/net/ethernet/google/gve/gve_tx.c | 4 - drivers/net/ethernet/intel/igb/igb_main.c | 4 + drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 2 + drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 2 +- drivers/net/ethernet/intel/ixgbevf/ipsec.c | 1 - drivers/net/ethernet/marvell/octeontx2/af/rpm.c | 2 +- drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c | 5 + .../ethernet/marvell/octeontx2/nic/otx2_common.c | 4 + .../ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 5 + .../ethernet/marvell/octeontx2/nic/otx2_dmac_flt.c | 9 + .../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 10 + .../ethernet/marvell/octeontx2/nic/otx2_flows.c | 10 + drivers/net/ethernet/marvell/pxa168_eth.c | 14 +- .../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c | 13 +- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 + drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c | 5 + .../ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 4 +- drivers/net/ethernet/qlogic/qed/qed_mcp.c | 4 +- drivers/net/ethernet/qlogic/qede/qede_ptp.c | 13 +- drivers/net/ethernet/realtek/r8169_main.c | 14 +- drivers/net/ethernet/rocker/rocker_main.c | 2 +- drivers/net/ethernet/sfc/ptp.c | 7 +- drivers/net/ethernet/sfc/siena/ptp.c | 7 +- .../net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 2 + drivers/net/ethernet/ti/am65-cpts.c | 5 +- drivers/net/geneve.c | 2 +- drivers/net/mdio/mdio-ipq4019.c | 5 +- drivers/net/netdevsim/ipsec.c | 11 +- drivers/net/phy/sfp.c | 3 +- drivers/net/usb/lan78xx.c | 42 +- drivers/net/usb/qmi_wwan.c | 1 + drivers/net/usb/r8152.c | 1 + drivers/net/veth.c | 44 +- drivers/net/vrf.c | 24 +- drivers/net/wireless/ath/ath10k/mac.c | 4 +- drivers/net/wireless/ath/ath5k/pci.c | 2 + drivers/net/wireless/ath/ath9k/htc_hst.c | 3 + .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 2 +- .../net/wireless/broadcom/brcm80211/brcmfmac/of.c | 3 +- drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 8 +- drivers/net/wireless/intel/iwlwifi/fw/init.c | 4 +- drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 2 + drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 12 +- drivers/net/wireless/intersil/p54/p54spi.c | 4 +- drivers/net/wireless/marvell/mwifiex/fw.h | 2 +- drivers/net/wireless/marvell/mwifiex/main.c | 4 +- drivers/net/wireless/realtek/rtlwifi/efuse.c | 11 +- drivers/net/wireless/realtek/rtw89/mac80211.c | 4 +- drivers/net/wireless/realtek/rtw89/util.h | 18 + drivers/net/wireless/silabs/wfx/main.c | 17 +- drivers/nvdimm/dax_devs.c | 4 +- drivers/nvdimm/nd.h | 7 + drivers/nvme/host/pci.c | 55 +- drivers/pci/controller/dwc/pci-keystone.c | 12 + drivers/pci/controller/pcie-rockchip-ep.c | 16 +- drivers/pci/controller/pcie-rockchip.h | 4 + drivers/pci/endpoint/pci-epc-core.c | 13 +- drivers/pci/hotplug/cpqphp_pci.c | 19 +- drivers/pci/pci-sysfs.c | 26 + drivers/pci/pci.c | 7 +- drivers/pci/pci.h | 1 + drivers/pci/probe.c | 30 +- drivers/pci/quirks.c | 15 +- drivers/pci/slot.c | 4 +- drivers/perf/arm-cmn.c | 4 +- drivers/perf/arm_smmuv3_pmu.c | 19 +- drivers/pinctrl/freescale/Kconfig | 2 +- drivers/pinctrl/pinctrl-k210.c | 2 +- drivers/pinctrl/pinctrl-zynqmp.c | 1 - drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 4 +- drivers/pinctrl/qcom/pinctrl-spmi-mpp.c | 1 + drivers/platform/chrome/cros_ec_typec.c | 1 + drivers/platform/x86/dell/dell-smbios-base.c | 1 + drivers/platform/x86/dell/dell-wmi-base.c | 6 + drivers/platform/x86/intel/bxtwc_tmu.c | 22 +- drivers/platform/x86/panasonic-laptop.c | 10 +- drivers/platform/x86/thinkpad_acpi.c | 28 +- drivers/power/supply/bq27xxx_battery.c | 37 +- drivers/power/supply/power_supply_core.c | 2 - drivers/ptp/ptp_clock.c | 3 +- drivers/ptp/ptp_dte.c | 5 +- drivers/pwm/pwm-imx27.c | 98 +- drivers/regulator/rk808-regulator.c | 2 + drivers/remoteproc/qcom_q6v5_mss.c | 6 +- drivers/remoteproc/qcom_q6v5_pas.c | 44 +- drivers/rpmsg/qcom_glink_native.c | 101 +- drivers/rtc/interface.c | 7 +- drivers/rtc/rtc-ab-eoz9.c | 7 - drivers/rtc/rtc-abx80x.c | 2 +- drivers/rtc/rtc-cmos.c | 37 +- drivers/rtc/rtc-rzn1.c | 8 +- drivers/rtc/rtc-st-lpc.c | 5 +- drivers/s390/cio/cio.c | 6 +- drivers/s390/cio/device.c | 18 +- drivers/scsi/bfa/bfad.c | 3 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 + drivers/scsi/lpfc/lpfc_hbadisc.c | 3 +- drivers/scsi/lpfc/lpfc_scsi.c | 13 +- drivers/scsi/lpfc/lpfc_sli.c | 11 + drivers/scsi/qedf/qedf_main.c | 1 + drivers/scsi/qedi/qedi_main.c | 1 + drivers/scsi/qla2xxx/qla_attr.c | 1 + drivers/scsi/qla2xxx/qla_bsg.c | 124 +- drivers/scsi/qla2xxx/qla_mid.c | 1 + drivers/scsi/qla2xxx/qla_os.c | 15 +- drivers/scsi/scsi_debug.c | 2 +- drivers/scsi/st.c | 31 +- drivers/sh/intc/core.c | 2 +- drivers/soc/fsl/rcpm.c | 1 + drivers/soc/imx/soc-imx8m.c | 107 +- drivers/soc/qcom/qcom-geni-se.c | 3 +- drivers/soc/qcom/socinfo.c | 8 +- drivers/soc/ti/smartreflex.c | 4 +- drivers/soc/ti/ti_sci_pm_domains.c | 4 + drivers/soc/xilinx/xlnx_event_manager.c | 4 +- drivers/spi/atmel-quadspi.c | 2 +- drivers/spi/spi-fsl-lpspi.c | 14 +- drivers/spi/spi-mpc52xx.c | 1 + drivers/spi/spi-rpc-if.c | 14 +- drivers/spi/spi-tegra210-quad.c | 2 +- drivers/spi/spi-zynqmp-gqspi.c | 2 + drivers/spi/spi.c | 13 +- drivers/staging/media/atomisp/pci/sh_css_params.c | 2 + .../intel/int340x_thermal/int3400_thermal.c | 2 +- drivers/thermal/thermal_core.c | 2 +- drivers/tty/serial/8250/8250_dw.c | 5 +- drivers/tty/serial/8250/8250_fintek.c | 14 +- drivers/tty/serial/8250/8250_omap.c | 4 +- drivers/tty/serial/amba-pl011.c | 79 +- drivers/tty/serial/sc16is7xx.c | 5 + drivers/tty/tty_ldisc.c | 2 +- drivers/ufs/core/ufs-sysfs.c | 6 + drivers/ufs/core/ufshcd.c | 11 +- drivers/ufs/host/ufs-exynos.c | 16 +- drivers/ufs/host/ufs-renesas.c | 9 +- drivers/usb/chipidea/udc.c | 2 +- drivers/usb/dwc3/core.h | 1 + drivers/usb/dwc3/ep0.c | 7 +- drivers/usb/dwc3/gadget.c | 104 +- drivers/usb/dwc3/gadget.h | 1 + drivers/usb/gadget/composite.c | 18 +- drivers/usb/host/ehci-spear.c | 7 +- drivers/usb/host/xhci-dbgcap.c | 135 +- drivers/usb/host/xhci-dbgcap.h | 2 +- drivers/usb/host/xhci-ring.c | 18 +- drivers/usb/misc/chaoskey.c | 35 +- drivers/usb/misc/iowarrior.c | 50 +- drivers/usb/misc/yurex.c | 5 +- drivers/usb/musb/musb_gadget.c | 13 +- drivers/usb/typec/tcpm/wcove.c | 4 - drivers/vdpa/mlx5/core/mr.c | 4 +- drivers/vfio/pci/mlx5/cmd.c | 47 +- drivers/vfio/pci/vfio_pci_config.c | 16 +- drivers/video/fbdev/efifb.c | 11 +- drivers/video/fbdev/sh7760fb.c | 11 +- drivers/watchdog/apple_wdt.c | 2 +- drivers/watchdog/iTCO_wdt.c | 21 +- drivers/watchdog/mtk_wdt.c | 6 + drivers/watchdog/rti_wdt.c | 3 +- drivers/xen/xenbus/xenbus_probe.c | 8 +- fs/btrfs/ctree.c | 10 +- fs/btrfs/ctree.h | 2 - fs/btrfs/extent-tree.c | 3 +- fs/btrfs/inode.c | 14 +- fs/btrfs/ioctl.c | 36 +- fs/btrfs/ref-verify.c | 1 + fs/btrfs/root-tree.c | 10 - fs/btrfs/volumes.c | 42 +- fs/cachefiles/ondemand.c | 4 +- fs/ceph/super.c | 10 +- fs/eventpoll.c | 6 +- fs/exfat/namei.c | 1 + fs/ext4/ext4.h | 1 + fs/ext4/fsmap.c | 54 +- fs/ext4/mballoc.c | 18 +- fs/ext4/mballoc.h | 1 + fs/ext4/super.c | 33 +- fs/f2fs/file.c | 8 +- fs/f2fs/gc.c | 2 + fs/f2fs/inode.c | 4 +- fs/f2fs/segment.c | 74 +- fs/f2fs/segment.h | 41 +- fs/fscache/volume.c | 3 +- fs/hfsplus/hfsplus_fs.h | 3 +- fs/hfsplus/wrapper.c | 2 + fs/inode.c | 10 +- fs/jffs2/compr_rtime.c | 3 + fs/jffs2/erase.c | 7 +- fs/jfs/jfs_dmap.c | 6 + fs/jfs/jfs_dtree.c | 15 + fs/jfs/xattr.c | 2 +- fs/nfs/internal.h | 2 +- fs/nfs/nfs4proc.c | 8 +- fs/nfsd/export.c | 5 +- fs/nfsd/nfs4callback.c | 16 +- fs/nfsd/nfs4proc.c | 7 +- fs/nfsd/nfs4recover.c | 3 +- fs/nfsd/nfs4state.c | 19 + fs/nilfs2/dir.c | 2 +- fs/notify/fsnotify.c | 23 +- fs/ntfs3/record.c | 32 +- fs/ocfs2/aops.h | 2 + fs/ocfs2/dlmglue.c | 1 + fs/ocfs2/file.c | 4 + fs/ocfs2/localalloc.c | 19 - fs/ocfs2/namei.c | 4 +- fs/overlayfs/inode.c | 7 +- fs/overlayfs/util.c | 3 + fs/proc/kcore.c | 11 +- fs/proc/softirqs.c | 2 +- fs/quota/dquot.c | 2 + fs/smb/client/cached_dir.c | 2 +- fs/smb/client/cifssmb.c | 2 +- fs/smb/client/smb2ops.c | 8 +- fs/smb/server/smb2pdu.c | 6 + fs/ubifs/super.c | 6 +- fs/ubifs/tnc_commit.c | 2 + fs/udf/inode.c | 46 +- fs/unicode/mkutf8data.c | 70 + fs/unicode/utf8-core.c | 2 +- fs/unicode/utf8data.c_shipped | 6703 ++++++++++---------- fs/xfs/libxfs/xfs_sb.c | 7 - fs/xfs/xfs_log_recover.c | 5 +- include/drm/display/drm_dp_mst_helper.h | 7 + include/drm/ttm/ttm_tt.h | 7 + include/linux/arm-smccc.h | 30 +- include/linux/blkdev.h | 2 +- include/linux/bpf.h | 7 +- include/linux/cache.h | 6 + include/linux/crypto.h | 1 + include/linux/devfreq.h | 7 +- include/linux/dma-mapping.h | 5 +- include/linux/eeprom_93cx6.h | 11 + include/linux/eventpoll.h | 2 +- include/linux/fpga/fpga-bridge.h | 10 +- include/linux/fpga/fpga-mgr.h | 26 +- include/linux/fwnode.h | 2 + include/linux/hisi_acc_qm.h | 8 +- include/linux/i3c/master.h | 35 +- include/linux/jiffies.h | 2 +- include/linux/leds.h | 2 +- include/linux/lockdep.h | 2 +- include/linux/mmc/card.h | 1 + include/linux/netdevice.h | 30 +- include/linux/netpoll.h | 2 +- include/linux/pci-epc.h | 2 + include/linux/pci.h | 6 + include/linux/property.h | 20 +- include/linux/rbtree_latch.h | 2 +- include/linux/scatterlist.h | 2 +- include/linux/seqlock.h | 107 +- include/linux/slab.h | 14 +- include/linux/sock_diag.h | 10 +- include/linux/util_macros.h | 56 +- include/media/v4l2-dv-timings.h | 18 +- include/memory/renesas-rpc-if.h | 18 +- include/net/bluetooth/hci_sync.h | 12 + include/net/sock.h | 2 +- include/trace/trace_events.h | 36 +- include/uapi/linux/rtnetlink.h | 2 +- include/ufs/ufshcd.h | 19 +- init/initramfs.c | 15 + io_uring/io_uring.c | 12 +- io_uring/tctx.c | 13 +- ipc/namespace.c | 4 +- kernel/bpf/devmap.c | 6 +- kernel/bpf/helpers.c | 6 +- kernel/bpf/lpm_trie.c | 55 +- kernel/bpf/syscall.c | 3 +- kernel/bpf/verifier.c | 41 +- kernel/cgroup/cgroup.c | 21 +- kernel/dma/debug.c | 8 +- kernel/kcsan/debugfs.c | 74 +- kernel/printk/printk.c | 2 +- kernel/rcu/tasks.h | 82 +- kernel/sched/core.c | 4 +- kernel/sched/fair.c | 2 +- kernel/time/ntp.c | 2 +- kernel/time/sched_clock.c | 2 +- kernel/time/time.c | 2 +- kernel/time/timekeeping.c | 4 +- kernel/trace/bpf_trace.c | 6 +- kernel/trace/ftrace.c | 3 + kernel/trace/trace_clock.c | 2 +- kernel/trace/trace_eprobe.c | 5 + kernel/trace/trace_event_perf.c | 6 + kernel/trace/trace_syscalls.c | 12 + kernel/trace/tracing_map.c | 6 +- lib/maple_tree.c | 13 +- lib/stackinit_kunit.c | 1 + lib/string_helpers.c | 2 +- mm/damon/vaddr-test.h | 1 + mm/damon/vaddr.c | 4 +- mm/kasan/report.c | 65 +- mm/mmap.c | 4 + mm/page_alloc.c | 15 + mm/swap.c | 20 - mm/vmstat.c | 1 + net/9p/trans_xen.c | 9 +- net/bluetooth/hci_core.c | 13 +- net/bluetooth/hci_sync.c | 132 +- net/bluetooth/hci_sysfs.c | 15 +- net/bluetooth/l2cap_sock.c | 1 + net/bluetooth/mgmt.c | 61 +- net/bluetooth/rfcomm/sock.c | 20 +- net/can/af_can.c | 1 + net/can/j1939/transport.c | 2 +- net/core/dev.c | 61 +- net/core/filter.c | 95 +- net/core/gen_estimator.c | 2 +- net/core/neighbour.c | 1 + net/core/netpoll.c | 2 +- net/core/rtnetlink.c | 2 +- net/core/skmsg.c | 4 +- net/core/sock_diag.c | 114 +- net/dccp/feat.c | 6 +- net/ethtool/bitset.c | 48 +- net/hsr/hsr_device.c | 4 +- net/hsr/hsr_forward.c | 2 + net/ieee802154/socket.c | 12 +- net/ipv4/af_inet.c | 22 +- net/ipv4/cipso_ipv4.c | 2 +- net/ipv4/inet_connection_sock.c | 2 +- net/ipv4/inet_diag.c | 11 +- net/ipv4/ip_output.c | 13 +- net/ipv4/ipmr.c | 44 +- net/ipv4/ipmr_base.c | 3 +- net/ipv4/tcp.c | 2 +- net/ipv4/tcp_bpf.c | 18 +- net/ipv4/tcp_fastopen.c | 7 +- net/ipv4/udp.c | 2 +- net/ipv6/addrconf.c | 41 +- net/ipv6/af_inet6.c | 24 +- net/ipv6/ip6_fib.c | 2 +- net/ipv6/ip6_output.c | 13 +- net/ipv6/ip6mr.c | 40 +- net/ipv6/ipv6_sockglue.c | 3 +- net/ipv6/route.c | 16 +- net/iucv/af_iucv.c | 26 +- net/llc/af_llc.c | 2 +- net/mac80211/main.c | 2 + net/mptcp/protocol.c | 4 +- net/netfilter/ipset/ip_set_bitmap_ip.c | 7 +- net/netfilter/ipset/ip_set_core.c | 5 + net/netfilter/ipvs/ip_vs_proto.c | 4 +- net/netfilter/nf_tables_api.c | 19 +- net/netfilter/nft_set_hash.c | 16 + net/netfilter/nft_socket.c | 2 +- net/netfilter/xt_LED.c | 4 +- net/netlink/diag.c | 1 + net/packet/af_packet.c | 12 +- net/packet/diag.c | 1 + net/rfkill/rfkill-gpio.c | 8 +- net/rxrpc/af_rxrpc.c | 7 +- net/sched/act_api.c | 2 +- net/sched/cls_flower.c | 5 +- net/sched/sch_cbs.c | 2 +- net/sched/sch_tbf.c | 18 +- net/smc/af_smc.c | 2 + net/smc/smc_diag.c | 1 + net/sunrpc/cache.c | 4 +- net/sunrpc/xprtrdma/svc_rdma.c | 40 +- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 8 +- net/sunrpc/xprtsock.c | 1 + net/tipc/diag.c | 1 + net/tipc/udp_media.c | 2 +- net/unix/diag.c | 1 + net/vmw_vsock/diag.c | 1 + net/xdp/xsk_buff_pool.c | 5 +- net/xdp/xsk_diag.c | 1 + net/xdp/xskmap.c | 2 +- samples/bpf/test_cgrp2_sock.c | 4 +- samples/bpf/xdp_adjust_tail_kern.c | 1 + scripts/mod/file2alias.c | 5 +- scripts/mod/modpost.c | 2 +- security/apparmor/capability.c | 2 + security/apparmor/policy_unpack_test.c | 6 + sound/core/pcm_native.c | 6 +- sound/hda/intel-dsp-config.c | 4 + sound/pci/hda/patch_realtek.c | 157 +- sound/soc/amd/yc/acp6x-mach.c | 39 +- sound/soc/codecs/da7219.c | 9 +- sound/soc/codecs/hdmi-codec.c | 144 +- sound/soc/fsl/fsl_micfil.c | 4 +- sound/soc/generic/audio-graph-card2.c | 3 + sound/soc/intel/atom/sst/sst_acpi.c | 64 +- sound/soc/intel/avs/pcm.c | 2 +- sound/soc/intel/boards/bytcr_rt5640.c | 48 +- sound/soc/stm/stm32_sai_sub.c | 6 +- sound/usb/6fire/chip.c | 10 +- sound/usb/caiaq/audio.c | 10 +- sound/usb/caiaq/audio.h | 1 + sound/usb/caiaq/device.c | 19 +- sound/usb/caiaq/input.c | 12 +- sound/usb/caiaq/input.h | 1 + sound/usb/clock.c | 24 +- sound/usb/endpoint.c | 14 +- sound/usb/mixer.c | 58 +- sound/usb/mixer_maps.c | 10 + sound/usb/quirks-table.h | 14 +- sound/usb/quirks.c | 58 +- sound/usb/usbaudio.h | 4 + sound/usb/usx2y/us122l.c | 5 +- sound/usb/usx2y/usbusx2y.c | 2 +- tools/bpf/bpftool/jit_disasm.c | 51 +- tools/bpf/bpftool/main.h | 25 +- tools/bpf/bpftool/map.c | 1 - tools/bpf/bpftool/prog.c | 22 +- tools/lib/bpf/libbpf.c | 4 +- tools/lib/bpf/linker.c | 2 + tools/lib/thermal/Makefile | 4 +- tools/lib/thermal/commands.c | 52 +- tools/perf/builtin-ftrace.c | 2 +- tools/perf/builtin-stat.c | 52 +- tools/perf/builtin-trace.c | 16 +- tools/perf/util/cs-etm.c | 25 +- tools/perf/util/evlist.c | 19 +- tools/perf/util/evlist.h | 1 + tools/perf/util/probe-finder.c | 21 +- tools/perf/util/probe-finder.h | 4 +- tools/scripts/Makefile.arch | 4 +- .../selftests/arm64/mte/check_tags_inclusion.c | 4 +- .../testing/selftests/arm64/mte/mte_common_util.c | 4 +- tools/testing/selftests/arm64/pauth/pac.c | 3 + tools/testing/selftests/bpf/network_helpers.h | 44 + tools/testing/selftests/bpf/test_progs.c | 9 +- tools/testing/selftests/bpf/test_sockmap.c | 165 +- .../selftests/mount_setattr/mount_setattr_test.c | 2 +- tools/testing/selftests/net/pmtu.sh | 2 +- tools/testing/selftests/resctrl/resctrl_val.c | 3 +- tools/testing/selftests/vDSO/parse_vdso.c | 3 +- tools/testing/selftests/watchdog/watchdog-test.c | 6 + tools/testing/selftests/wireguard/netns.sh | 1 + tools/tracing/rtla/src/utils.c | 4 +- tools/tracing/rtla/src/utils.h | 2 + tools/verification/dot2/automata.py | 18 +- 775 files changed, 11374 insertions(+), 7070 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/772 ASoC: Intel: bytcr_rt5640: Add support for non ACPI instantiated codec
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
[ Upstream commit d48696b915527b5bcdd207a299aec03fb037eb17 ]
On some x86 Bay Trail tablets which shipped with Android as factory OS, the DSDT is so broken that the codec needs to be manually instantatiated by the special x86-android-tablets.ko "fixup" driver for cases like this.
This means that the codec-dev cannot be retrieved through its ACPI fwnode, add support to the bytcr_rt5640 machine driver for such manually instantiated rt5640 i2c_clients.
An example of a tablet which needs this is the Vexia EDU ATLA 10 tablet, which has been distributed to schools in the Spanish Andalucía region.
--- sound/soc/intel/boards/bytcr_rt5640.c | 33 ++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-)
sound/soc/intel/boards/bytcr_rt5640.c +30 -3
@@ -17,6 +17,7 @@#include <linux/acpi.h> #include <linux/clk.h> #include <linux/device.h> +#include <linux/device/bus.h> #include <linux/dmi.h> #include <linux/gpio/consumer.h> #include <linux/gpio/machine.h>
@@ -32,6 +33,8 @@#include "../atom/sst-atom-controls.h" #include "../common/soc-intel-quirks.h" +#define BYT_RT5640_FALLBACK_CODEC_DEV_NAME "i2c-rt5640" +enum {BYT_RT5640_DMIC1_MAP ,BYT_RT5640_DMIC2_MAP ,
@@ -1687,9 +1690,33 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) codec_dev =acpi_get_first_physical_node (adev);acpi_dev_put (adev); -if (!codec_dev) -return -EPROBE_DEFER ; - priv->codec_dev =get_device (codec_dev); + +if (codec_dev) { + priv->codec_dev =get_device (codec_dev); + }else { +/* +* Special case for Android tablets where the codec i2c_client +* has been manually instantiated by x86_android_tablets.ko due +* to a broken DSDT. +*/ + codec_dev =bus_find_device_by_name (&i2c_bus_type,NULL , +BYT_RT5640_FALLBACK_CODEC_DEV_NAME ); +if (!codec_dev) +return -EPROBE_DEFER ; + +if (!i2c_verify_client (codec_dev)) { +dev_err (dev,"Error '%s' is not an i2c_client\n" , +BYT_RT5640_FALLBACK_CODEC_DEV_NAME ); +put_device (codec_dev); + } + +/* fixup codec name */ +strscpy (byt_rt5640_codec_name,BYT_RT5640_FALLBACK_CODEC_DEV_NAME , +sizeof (byt_rt5640_codec_name)); + +/* bus_find_device() returns a reference no need to get() */ + priv->codec_dev = codec_dev; + }/* * swap SSP0 if bytcr is detected
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 2/772 ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
[ Upstream commit 0107f28f135231da22a9ad5756bb16bd5cada4d5 ]
The Vexia Edu Atla 10 tablet mostly uses the BYTCR tablet defaults, but as happens on more models it is using IN1 instead of IN3 for its internal mic and JD_SRC_JD2_IN4N instead of JD_SRC_JD1_IN4P for jack-detection.
Add a DMI quirk for this to fix the internal-mic and jack-detection.
--- sound/soc/intel/boards/bytcr_rt5640.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
sound/soc/intel/boards/bytcr_rt5640.c +15 -0
@@ -1122,6 +1122,21 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {BYT_RT5640_SSP0_AIF2 | BYT_RT5640_MCLK_EN), }, + { /* Vexia Edu Atla 10 tablet */ + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"AMI Corporation" ), +DMI_MATCH (DMI_BOARD_NAME ,"Aptio CRB" ), +/* Above strings are too generic, also match on BIOS date */ + DMI_MATCH(DMI_BIOS_DATE, "08/25/2014"), + }, + .driver_data = (void *)(BYT_RT5640_IN1_MAP | +BYT_RT5640_JD_SRC_JD2_IN4N | +BYT_RT5640_OVCD_TH_2000UA | +BYT_RT5640_OVCD_SF_0P75 | +BYT_RT5640_DIFF_MIC | +BYT_RT5640_SSP0_AIF2 | + BYT_RT5640_MCLK_EN), + }, { /* Voyo Winpad A15 */ .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 3/772 ASoC: Intel: sst: Support LPE0F28 ACPI HID
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
[ Upstream commit 6668610b4d8ce9a3ee3ed61a9471f62fb5f05bf9 ]
Some old Bay Trail tablets which shipped with Android as factory OS have the SST/LPE audio engine described by an ACPI device with a HID (Hardware-ID) of LPE0F28 instead of 80860F28.
Add support for this. Note this uses a new sst_res_info for just the LPE0F28 case because it has a different layout for the IO-mem ACPI resources then the 80860F28.
An example of a tablet which needs this is the Vexia EDU ATLA 10 tablet, which has been distributed to schools in the Spanish Andalucía region.
--- sound/hda/intel-dsp-config.c | 4 ++ sound/soc/intel/atom/sst/sst_acpi.c | 64 +++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 9 deletions(-)
sound/hda/intel-dsp-config.c +4 -0
@@ -675,6 +675,10 @@ static const struct config_entry acpi_config_table[] = { #if IS_ENABLED(CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI) || \ IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL) /* BayTrail */ + { + .flags = FLAG_SST_OR_SOF_BYT, + .acpi_hid = "LPE0F28", + }, { .flags = FLAG_SST_OR_SOF_BYT, .acpi_hid = "80860F28",
sound/soc/intel/atom/sst/sst_acpi.c +55 -9
88 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 4/772 wifi: iwlwifi: mvm: Use the sync timepoint API in suspend
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Gabay <[email protected]>
[ Upstream commit 9715246ca0bfc9feaec1b4ff5b3d38de65a7025d ]
When starting the suspend flow, HOST_D3_START triggers an _async_ firmware dump collection for debugging purposes. The async worker may race with suspend flow and fail to get NIC access, resulting in the following warning:
"Timeout waiting for hardware access (CSR_GP_CNTRL 0xffffffff)"
Fix this by switching to the sync version to ensure the dump completes before proceeding with the suspend flow, avoiding potential race issues.
--- drivers/net/wireless/intel/iwlwifi/fw/init.c | 4 +++- drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-)
drivers/net/wireless/intel/iwlwifi/fw/init.c +3 -1
@@ -39,10 +39,12 @@ void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, }IWL_EXPORT_SYMBOL (iwl_fw_runtime_init); +/* Assumes the appropriate lock is held by the caller */ void iwl_fw_runtime_suspend (struct iwl_fw_runtime *fwrt) {iwl_fw_suspend_timestamp (fwrt); -iwl_dbg_tlv_time_point (fwrt,IWL_FW_INI_TIME_POINT_HOST_D3_START ,NULL ); +iwl_dbg_tlv_time_point_sync (fwrt,IWL_FW_INI_TIME_POINT_HOST_D3_START , +NULL ); }IWL_EXPORT_SYMBOL (iwl_fw_runtime_suspend);
drivers/net/wireless/intel/iwlwifi/mvm/d3.c +2 -0
@@ -1375,7 +1375,9 @@ int iwl_mvm_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)iwl_mvm_pause_tcm (mvm, true); +mutex_lock (&mvm->mutex);iwl_fw_runtime_suspend (&mvm->fwrt); +mutex_unlock (&mvm->mutex);return __iwl_mvm_suspend (hw, wowlan, false); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 5/772 mac80211: fix user-power when emulating chanctx
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Greear <[email protected]>
[ Upstream commit 9b15c6cf8d2e82c8427cd06f535d8de93b5b995c ]
ieee80211_calc_hw_conf_chan was ignoring the configured user_txpower. If it is set, use it to potentially decrease txpower as requested.
--- net/mac80211/main.c | 2 ++ 1 file changed, 2 insertions(+)
net/mac80211/main.c +2 -0
@@ -144,6 +144,8 @@ static u32 ieee80211_hw_conf_chan(struct ieee80211_local *local) } power =ieee80211_chandef_max_power (&chandef); +if (local->user_power_level !=IEEE80211_UNSET_POWER_LEVEL ) + power =min (local->user_power_level, power);rcu_read_lock ();list_for_each_entry_rcu (sdata, &local->interfaces, list) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 6/772 usb: add support for new USB device ID 0x17EF:0x3098 for the r8152 driver
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Große <[email protected]>
[ Upstream commit 94c11e852955b2eef5c4f0b36cfeae7dcf11a759 ]
This patch adds support for another Lenovo Mini dock 0x17EF:0x3098 to the r8152 driver. The device has been tested on NixOS, hotplugging and sleep included.
--- drivers/net/usb/r8152.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/usb/r8152.c +1 -0
@@ -9870,6 +9870,7 @@ static const struct usb_device_id rtl8152_table[] = { { USB_DEVICE(VENDOR_ID_LENOVO, 0x3062) }, { USB_DEVICE(VENDOR_ID_LENOVO, 0x3069) }, { USB_DEVICE(VENDOR_ID_LENOVO, 0x3082) }, + { USB_DEVICE(VENDOR_ID_LENOVO, 0x3098) }, { USB_DEVICE(VENDOR_ID_LENOVO, 0x7205) }, { USB_DEVICE(VENDOR_ID_LENOVO, 0x720c) }, { USB_DEVICE(VENDOR_ID_LENOVO, 0x7214) },
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 7/772 selftests/watchdog-test: Fix system accidentally reset after watchdog-test
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Zhijian <[email protected]>
[ Upstream commit dc1308bee1ed03b4d698d77c8bd670d399dcd04d ]
When running watchdog-test with 'make run_tests', the watchdog-test will be terminated by a timeout signal(SIGTERM) due to the test timemout.
And then, a system reboot would happen due to watchdog not stop. see the dmesg as below:
``` [ 1367.185172] watchdog: watchdog0: watchdog did not stop! ```
Fix it by registering more signals(including SIGTERM) in watchdog-test, where its signal handler will stop the watchdog.
After that
# timeout 1 ./watchdog-test Watchdog Ticking Away! . Stopping watchdog ticks...
--- tools/testing/selftests/watchdog/watchdog-test.c | 6 ++++++ 1 file changed, 6 insertions(+)
tools/testing/selftests/watchdog/watchdog-test.c +6 -0
@@ -242,7 +242,13 @@ int main(int argc, char *argv[])printf ("Watchdog Ticking Away!\n" ); +/* +* Register the signals +*/ signal (SIGINT , term); +signal (SIGTERM , term); +signal (SIGKILL , term); +signal (SIGQUIT , term);while (1 ) {keep_alive ();
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 8/772 ALSA: hda/realtek: Add subwoofer quirk for Infinix ZERO BOOK 13
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Piyush Raj Chouhan <[email protected]>
[ Upstream commit ef5fbdf732a158ec27eeba69d8be851351f29f73 ]
Infinix ZERO BOOK 13 has a 2+2 speaker system which isn't probed correctly. This patch adds a quirk with the proper pin connections.
Also The mic in this laptop suffers too high gain resulting in mostly fan noise being recorded,
This patch Also limit mic boost.
HW Probe for device; https://linux-hardware.org/?probe=a2e892c47b
Test: All 4 speaker works, Mic has low noise.
--- sound/pci/hda/patch_realtek.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
sound/pci/hda/patch_realtek.c +12 -0
@@ -7190,6 +7190,7 @@ enum {ALC290_FIXUP_SUBWOOFER_HSJACK ,ALC269_FIXUP_THINKPAD_ACPI ,ALC269_FIXUP_DMIC_THINKPAD_ACPI , +ALC269VB_FIXUP_INFINIX_ZERO_BOOK_13 ,ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO ,ALC255_FIXUP_ACER_MIC_NO_PRESENCE , ALC255_FIXUP_ASUS_MIC_NO_PRESENCE,
@@ -7542,6 +7543,16 @@ static const struct hda_fixup alc269_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = alc269_fixup_pincfg_U7x7_headset_mic, }, + [ALC269VB_FIXUP_INFINIX_ZERO_BOOK_13] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl []) { + {0x14 ,0x90170151 },/* use as internal speaker (LFE) */ + {0x1b ,0x90170152 },/* use as internal speaker (back) */ + { } + }, + .chained = true, + .chain_id =ALC269_FIXUP_LIMIT_INT_MIC_BOOST + }, [ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl []) {
@@ -10224,6 +10235,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1d72 ,0x1945 ,"Redmi G" ,ALC256_FIXUP_ASUS_HEADSET_MIC ),SND_PCI_QUIRK (0x1d72 ,0x1947 ,"RedmiBook Air" ,ALC255_FIXUP_XIAOMI_HEADSET_MIC ),SND_PCI_QUIRK (0x2782 ,0x0214 ,"VAIO VJFE-CL" ,ALC269_FIXUP_LIMIT_INT_MIC_BOOST ), +SND_PCI_QUIRK (0x2782 ,0x0228 ,"Infinix ZERO BOOK 13" ,ALC269VB_FIXUP_INFINIX_ZERO_BOOK_13 ),SND_PCI_QUIRK (0x2782 ,0x0232 ,"CHUWI CoreBook XPro" ,ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO ),SND_PCI_QUIRK (0x2782 ,0x1707 ,"Vaio VJFE-ADL" ,ALC298_FIXUP_SPK_VOLUME ), SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 9/772 x86/amd_nb: Fix compile-testing without CONFIG_AMD_NB
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
[ Upstream commit fce9642c765a18abd1db0339a7d832c29b68456a ]
node_to_amd_nb() is defined to NULL in non-AMD configs:
drivers/platform/x86/amd/hsmp/plat.c: In function 'init_platform_device':
drivers/platform/x86/amd/hsmp/plat.c:165:68: error: dereferencing 'void *' pointer [-Werror]
165 | sock->root = node_to_amd_nb(i)->root;
| ^~ drivers/platform/x86/amd/hsmp/plat.c:165:68: error: request for member 'root' in something not a structure or union
Users of the interface who also allow COMPILE_TEST will cause the above build error so provide an inline stub to fix that.
[ bp: Massage commit message. ]
--- arch/x86/include/asm/amd_nb.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
arch/x86/include/asm/amd_nb.h +4 -1
@@ -116,7 +116,10 @@ static inline bool amd_gart_present(void)#define amd_nb_num (x) 0#define amd_nb_has_feature (x) false -#define node_to_amd_nb (x) NULL +static inline struct amd_northbridge *node_to_amd_nb (int node) +{ +return NULL ; +}#define amd_gart_present (x) false#endif
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 10/772 bpf: fix filed access without lock
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiayuan Chen <[email protected]>
[ Upstream commit a32aee8f0d987a7cba7fcc28002553361a392048 ]
The tcp_bpf_recvmsg_parser() function, running in user context, retrieves seq_copied from tcp_sk without holding the socket lock, and stores it in a local variable seq. However, the softirq context can modify tcp_sk->seq_copied concurrently, for example, n tcp_read_sock().
As a result, the seq value is stale when it is assigned back to tcp_sk->copied_seq at the end of tcp_bpf_recvmsg_parser(), leading to incorrect behavior.
Due to concurrency, the copied_seq field in tcp_bpf_recvmsg_parser() might be set to an incorrect value (less than the actual copied_seq) at the end of function: 'WRITE_ONCE(tcp->copied_seq, seq)'. This causes the 'offset' to be negative in tcp_read_sock()->tcp_recv_skb() when processing new incoming packets (sk->copied_seq - skb->seq becomes less than 0), and all subsequent packets will be dropped.
--- net/ipv4/tcp_bpf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
net/ipv4/tcp_bpf.c +4 -3
@@ -216,11 +216,11 @@ static int tcp_bpf_recvmsg_parser(struct sock *sk,int flags, int *addr_len) { - struct tcp_sock *tcp = tcp_sk(sk); int peek = flags & MSG_PEEK; -u32 seq = tcp->copied_seq;struct sk_psock *psock; +struct tcp_sock *tcp;int copied =0 ; +u32 seq;if (unlikely (flags &MSG_ERRQUEUE ))return inet_recv_error (sk, msg, len, addr_len);
@@ -233,7 +233,8 @@ static int tcp_bpf_recvmsg_parser(struct sock *sk,return tcp_recvmsg (sk, msg, len, flags, addr_len);lock_sock (sk); - + tcp =tcp_sk (sk); + seq = tcp->copied_seq;/* We may have received data on the sk_receive_queue pre-accept and * then we can not use read_skb in this context because we haven't * assigned a sk_socket yet so have no link to the ops. The work-around
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 11/772 net: usb: qmi_wwan: add Quectel RG650V
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benoît Monin <[email protected]>
[ Upstream commit 6b3f18a76be6bbd237c7594cf0bf2912b68084fe ]
Add support for Quectel RG650V which is based on Qualcomm SDX65 chip. The composition is DIAG / NMEA / AT / AT / QMI.
T: Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 4 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=2c7c ProdID=0122 Rev=05.15
S: Manufacturer=Quectel
S: Product=RG650V-EU
S: SerialNumber=xxxxxxx
C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=9ms
I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=9ms
I: If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=87(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=9ms
--- drivers/net/usb/qmi_wwan.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1083,6 +1083,7 @@ static const struct usb_device_id products[] = { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7), .driver_info = (unsigned long )&qmi_wwan_info, }, + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)}, /* Quectel RG650V */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 12/772 soc: qcom: Add check devm_kasprintf() returned value
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Han <[email protected]>
[ Upstream commit e694d2b5c58ba2d1e995d068707c8d966e7f5f2a ]
devm_kasprintf() can return a NULL pointer on failure but this returned value in qcom_socinfo_probe() is not checked.
--- drivers/soc/qcom/socinfo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/soc/qcom/socinfo.c +7 -1
@@ -649,10 +649,16 @@ static int qcom_socinfo_probe(struct platform_device *pdev) qs->attr.revision =devm_kasprintf (&pdev->dev,GFP_KERNEL ,"%u.%u" ,SOCINFO_MAJOR (le32_to_cpu (info->ver)),SOCINFO_MINOR (le32_to_cpu (info->ver))); -if (offsetof(struct socinfo , serial_num) <= item_size) +if (!qs->attr.soc_id || qs->attr.revision) +return -ENOMEM ; + +if (offsetof(struct socinfo , serial_num) <= item_size) { qs->attr.serial_number =devm_kasprintf (&pdev->dev,GFP_KERNEL ,"%u" ,le32_to_cpu (info->serial_num)); +if (!qs->attr.serial_number) +return -ENOMEM ; + } qs->soc_dev =soc_device_register (&qs->attr);if (IS_ERR (qs->soc_dev))
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 13/772 regulator: rk808: Add apply_bit for BUCK3 on RK809
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikhail Rudenko <[email protected]>
[ Upstream commit 5e53e4a66bc7430dd2d11c18a86410e3a38d2940 ]
Currently, RK809's BUCK3 regulator is modelled in the driver as a configurable regulator with 0.5-2.4V voltage range. But the voltage setting is not actually applied, because when bit 6 of PMIC_POWER_CONFIG register is set to 0 (default), BUCK3 output voltage is determined by the external feedback resistor. Fix this, by setting bit 6 when voltage selection is set. Existing users which do not specify voltage constraints in their device trees will not be affected by this change, since no voltage setting is applied in those cases, and bit 6 is not enabled.
--- drivers/regulator/rk808-regulator.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/regulator/rk808-regulator.c +2 -0
@@ -906,6 +906,8 @@ static const struct regulator_desc rk809_reg[] = { .n_linear_ranges = ARRAY_SIZE(rk817_buck1_voltage_ranges), .vsel_reg = RK817_BUCK3_ON_VSEL_REG, .vsel_mask = RK817_BUCK_VSEL_MASK, + .apply_reg = RK817_POWER_CONFIG, + .apply_bit = RK817_BUCK3_FB_RES_INTER, .enable_reg = RK817_POWER_EN_REG(0), .enable_mask = ENABLE_MASK(RK817_ID_DCDC3), .enable_val = ENABLE_MASK(RK817_ID_DCDC3),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 14/772 platform/x86: dell-smbios-base: Extends support to Alienware products
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kurt Borja <[email protected]>
[ Upstream commit a36b8b84ac4327b90ef5a22bc97cc96a92073330 ]
Fixes the following error:
dell_smbios: Unable to run on non-Dell system
Which is triggered after dell-wmi driver fails to initialize on Alienware systems, as it depends on dell-smbios.
This effectively extends dell-wmi, dell-smbios and dcdbas support to Alienware devices, that might share some features of the SMBIOS intereface calling interface with other Dell products.
Tested on an Alienware X15 R1.
--- drivers/platform/x86/dell/dell-smbios-base.c | 1 + 1 file changed, 1 insertion(+)
drivers/platform/x86/dell/dell-smbios-base.c +1 -0
@@ -544,6 +544,7 @@ static int __init dell_smbios_init(void)int ret, wmi, smm;if (!dmi_find_device (DMI_DEV_TYPE_OEM_STRING ,"Dell System" ,NULL ) && + !dmi_find_device (DMI_DEV_TYPE_OEM_STRING ,"Alienware" ,NULL ) && !dmi_find_device (DMI_DEV_TYPE_OEM_STRING ,"www.dell.com" ,NULL )) {pr_err ("Unable to run on non-Dell system\n" );return -ENODEV ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 15/772 platform/x86: dell-wmi-base: Handle META key Lock/Unlock events
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kurt Borja <[email protected]>
[ Upstream commit ec61f0bb4feec3345626a2b93b970b6719743997 ]
Some Alienware devices have a key that locks/unlocks the Meta key. This key triggers a WMI event that should be ignored by the kernel, as it's handled by internally the firmware.
There is no known way of changing this default behavior. The firmware would lock/unlock the Meta key, regardless of how the event is handled.
Tested on an Alienware x15 R1.
--- drivers/platform/x86/dell/dell-wmi-base.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
@@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {static const struct key_entry dell_wmi_keymap_type_0000[] = { {KE_IGNORE ,0x003a , {KEY_CAPSLOCK } }, +/* Meta key lock */ + {KE_IGNORE ,0xe000 , {KEY_RIGHTMETA } }, + +/* Meta key unlock */ + {KE_IGNORE ,0xe001 , {KEY_RIGHTMETA } }, +/* Key code is followed by brightness level */ {KE_KEY ,0xe005 , {KEY_BRIGHTNESSDOWN } }, {KE_KEY ,0xe006 , {KEY_BRIGHTNESSUP } },
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 16/772 tools/lib/thermal: Remove the thermal.h soft link when doing make clean
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: zhang jiao <[email protected]>
[ Upstream commit c5426dcc5a3a064bbd2de383e29035a14fe933e0 ]
Run "make -C tools thermal" can create a soft link for thermal.h in tools/include/uapi/linux. Just rm it when make clean.
--- tools/lib/thermal/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
tools/lib/thermal/Makefile +3 -1
@@ -121,7 +121,9 @@ all: fixdep clean: $(call QUIET_CLEAN, libthermal) $(RM) $(LIBTHERMAL_A) \ - *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBTHERMAL_VERSION) .*.d .*.cmd LIBTHERMAL-CFLAGS $(LIBTHERMAL_PC) + *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBTHERMAL_VERSION) \ + .*.d .*.cmd LIBTHERMAL-CFLAGS $(LIBTHERMAL_PC) \ + $(srctree)/tools/$(THERMAL_UAPI) $(LIBTHERMAL_PC): $(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 17/772 can: j1939: fix error in J1939 documentation.
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Hölzl <[email protected]>
[ Upstream commit b6ec62e01aa4229bc9d3861d1073806767ea7838 ]
The description of PDU1 format usage mistakenly referred to PDU2 format.
--- Documentation/networking/j1939.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Documentation/networking/j1939.rst +1 -1
@@ -121,7 +121,7 @@ format, the Group Extension is set in the PS-field. On the other hand, when using PDU1 format, the PS-field contains a so-called Destination Address, which is _not_ part of the PGN. When communicating a PGN -from user space to kernel (or vice versa) and PDU2 format is used, the PS-field +from user space to kernel (or vice versa) and PDU1 format is used, the PS-field of the PGN shall be set to zero. The Destination Address shall be set elsewhere.
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 18/772 platform/x86: thinkpad_acpi: Fix for ThinkPads with ECFW showing incorrect fan speed
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vishnu Sankar <[email protected]>
[ Upstream commit 1be765b292577c752e0b87bf8c0e92aff6699d8e ]
Fix for Thinkpad's with ECFW showing incorrect fan speed. Some models use decimal instead of hexadecimal for the speed stored in the EC registers. For example the rpm register will have 0x4200 instead of 0x1068, here the actual RPM is "4200" in decimal.
Add a quirk to handle this.
--- drivers/platform/x86/thinkpad_acpi.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-)
drivers/platform/x86/thinkpad_acpi.c +25 -3
@@ -8213,6 +8213,7 @@ static u8 fan_control_resume_level;static int fan_watchdog_maxinterval;static bool fan_with_ns_addr; +static bool ecfw_with_fan_dec_rpm;static struct mutex fan_mutex;
@@ -8856,7 +8857,11 @@ static ssize_t fan_fan1_input_show(struct device *dev,if (res <0 )return res; -return sysfs_emit (buf,"%u\n" , speed); +/* Check for fan speeds displayed in hexadecimal */ +if (!ecfw_with_fan_dec_rpm) +return sysfs_emit (buf,"%u\n" , speed); +else +return sysfs_emit (buf,"%x\n" , speed); } static DEVICE_ATTR(fan1_input, S_IRUGO, fan_fan1_input_show, NULL);
@@ -8873,7 +8878,11 @@ static ssize_t fan_fan2_input_show(struct device *dev,if (res <0 )return res; -return sysfs_emit (buf,"%u\n" , speed); +/* Check for fan speeds displayed in hexadecimal */ +if (!ecfw_with_fan_dec_rpm) +return sysfs_emit (buf,"%u\n" , speed); +else +return sysfs_emit (buf,"%x\n" , speed); } static DEVICE_ATTR(fan2_input, S_IRUGO, fan_fan2_input_show, NULL);
@@ -8949,6 +8958,7 @@ static const struct attribute_group fan_driver_attr_group = {#define TPACPI_FAN_2CTL 0x0004/* selects fan2 control */ #define TPACPI_FAN_NOFAN 0x0008/* no fan available */ #define TPACPI_FAN_NS 0x0010/* For EC with non-Standard register addresses */ +#define TPACPI_FAN_DECRPM 0x0020/* For ECFW's with RPM in register as decimal */ static const struct tpacpi_quirk fan_quirk_table[]__initconst = {TPACPI_QEC_IBM ('1' ,'Y' ,TPACPI_FAN_Q1 ),
@@ -8970,6 +8980,7 @@ static const struct tpacpi_quirk fan_quirk_table[] __initconst = {TPACPI_Q_LNV3 ('R' ,'1' ,'F' ,TPACPI_FAN_NS ),/* L13 Yoga Gen 2 */ TPACPI_Q_LNV3 ('N' ,'2' ,'U' ,TPACPI_FAN_NS ),/* X13 Yoga Gen 2*/ TPACPI_Q_LNV3 ('N' ,'1' ,'O' ,TPACPI_FAN_NOFAN ),/* X1 Tablet (2nd gen) */ + TPACPI_Q_LNV3('R', '0', 'Q', TPACPI_FAN_DECRPM),/* L480 */ };static int __init fan_init (struct ibm_init_struct *iibm)
@@ -9010,6 +9021,13 @@ static int __init fan_init(struct ibm_init_struct *iibm) tp_features.fan_ctrl_status_undef =1 ; } +/* Check for the EC/BIOS with RPM reported in decimal*/ +if (quirks &TPACPI_FAN_DECRPM ) { +pr_info ("ECFW with fan RPM as decimal in EC register\n" ); + ecfw_with_fan_dec_rpm =1 ; + tp_features.fan_ctrl_status_undef =1 ; + } +if (gfan_handle) {/* 570, 600e/x, 770e, 770x */ fan_status_access_mode =TPACPI_FAN_RD_ACPI_GFAN ;
@@ -9221,7 +9239,11 @@ static int fan_read(struct seq_file *m)if (rc <0 )return rc; -seq_printf (m,"speed:\t\t%d\n" , speed); +/* Check for fan speeds displayed in hexadecimal */ +if (!ecfw_with_fan_dec_rpm) +seq_printf (m,"speed:\t\t%d\n" , speed); +else +seq_printf (m,"speed:\t\t%x\n" , speed);if (fan_status_access_mode ==TPACPI_FAN_RD_TPEC_NS ) {/*
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 19/772 ASoC: amd: yc: Support dmic on another model of Lenovo Thinkpad E14 Gen 6
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Markus Petri <[email protected]>
[ Upstream commit 8c21e40e1e481f7fef6e570089e317068b972c45 ]
Another model of Thinkpad E14 Gen 6 (21M4)
needs a quirk entry for the dmic to be detected.
--- sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ 1 file changed, 7 insertions(+)
sound/soc/amd/yc/acp6x-mach.c +7 -0
@@ -227,6 +227,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "21M3"), } }, + { + .driver_data = &acp6x_card, + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"LENOVO" ), + DMI_MATCH(DMI_PRODUCT_NAME, "21M4"), + } + }, { .driver_data = &acp6x_card, .matches = {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 20/772 ASoC: stm: Prevent potential division by zero in stm32_sai_mclk_round_rate()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luo Yifan <[email protected]>
[ Upstream commit 63c1c87993e0e5bb11bced3d8224446a2bc62338 ]
This patch checks if div is less than or equal to zero (div <= 0). If div is zero or negative, the function returns -EINVAL, ensuring the division operation (*prate / div) is safe to perform.
--- sound/soc/stm/stm32_sai_sub.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/stm/stm32_sai_sub.c +2 -2
@@ -378,8 +378,8 @@ static long stm32_sai_mclk_round_rate(struct clk_hw *hw, unsigned long rate,int div; div =stm32_sai_get_clk_div (sai, *prate, rate); -if (div <0 ) -return div; +if (div <=0 ) +return -EINVAL ; mclk->freq = *prate / div;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 21/772 ASoC: stm: Prevent potential division by zero in stm32_sai_get_clk_div()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luo Yifan <[email protected]>
[ Upstream commit 23569c8b314925bdb70dd1a7b63cfe6100868315 ]
This patch checks if div is less than or equal to zero (div <= 0). If div is zero or negative, the function returns -EINVAL, ensuring the division operation is safe to perform.
--- sound/soc/stm/stm32_sai_sub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/stm/stm32_sai_sub.c +1 -1
@@ -317,7 +317,7 @@ static int stm32_sai_get_clk_div(struct stm32_sai_sub_data *sai,int div; div =DIV_ROUND_CLOSEST (input_rate, output_rate); -if (div >SAI_XCR1_MCKDIV_MAX (version)) { +if (div >SAI_XCR1_MCKDIV_MAX (version) || div <=0 ) {dev_err (&sai->pdev->dev,"Divider %d out of range\n" , div);return -EINVAL ; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 22/772 drm: panel-orientation-quirks: Make Lenovo Yoga Tab 3 X90F DMI match less strict
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
[ Upstream commit 052ef642bd6c108a24f375f9ad174b97b425a50b ]
There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it turns out that the 2G version has a DMI product name of "CHERRYVIEW D1 PLATFORM" where as the 4G version has "CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are unique enough that the product-name check is not necessary.
Drop the product-name check so that the existing DMI match for the 4G RAM version also matches the 2G RAM version.
--- drivers/gpu/drm/drm_panel_orientation_quirks.c | 1 - 1 file changed, 1 deletion(-)
drivers/gpu/drm/drm_panel_orientation_quirks.c +0 -1
@@ -403,7 +403,6 @@ static const struct dmi_system_id orientation_data[] = { }, { /* Lenovo Yoga Tab 3 X90F */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Intel Corporation" ), -DMI_MATCH (DMI_PRODUCT_NAME ,"CHERRYVIEW D1 PLATFORM" ), DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), }, .driver_data = (void *)&lcd1600x2560_rightside_up,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 23/772 proc/softirqs: replace seq_printf with seq_put_decimal_ull_width
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Wang <[email protected]>
[ Upstream commit 84b9749a3a704dcc824a88aa8267247c801d51e4 ]
seq_printf is costy, on a system with n CPUs, reading /proc/softirqs would yield 10*n decimal values, and the extra cost parsing format string grows linearly with number of cpus. Replace seq_printf with seq_put_decimal_ull_width have significant performance improvement. On an 8CPUs system, reading /proc/softirqs show ~40% performance gain with this patch.
--- fs/proc/softirqs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/proc/softirqs.c +1 -1
@@ -20,7 +20,7 @@ static int show_softirqs(struct seq_file *p, void *v)for (i =0 ; i <NR_SOFTIRQS ; i++) {seq_printf (p,"%12s:" , softirq_to_name[i]);for_each_possible_cpu (j) -seq_printf (p," %10u" ,kstat_softirqs_cpu (i, j)); +seq_put_decimal_ull_width (p," " ,kstat_softirqs_cpu (i, j),10 );seq_putc (p,'\n' ); }return 0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 24/772 ASoC: audio-graph-card2: Purge absent supplies for device tree nodes
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: John Watts <[email protected]>
[ Upstream commit f8da001ae7af0abd9f6250c02c01a1121074ca60 ]
The audio graph card doesn't mark its subnodes such as multi {}, dpcm {} and c2c {} as not requiring any suppliers. This causes a hang as Linux waits for these phantom suppliers to show up on boot.
Make it clear these nodes have no suppliers.
Example error message:
[ 15.208558] platform 2034000.i2s: deferred probe pending: platform: wait for supplier /sound/multi [ 15.208584] platform sound: deferred probe pending: asoc-audio-graph-card2: parse error
--- sound/soc/generic/audio-graph-card2.c | 3 +++ 1 file changed, 3 insertions(+)
sound/soc/generic/audio-graph-card2.c +3 -0
@@ -249,16 +249,19 @@ static enum graph_type __graph_get_type(struct device_node *lnk)if (of_node_name_eq (np,GRAPH_NODENAME_MULTI )) { ret =GRAPH_MULTI ; +fw_devlink_purge_absent_suppliers (&np->fwnode); goto out_put; }if (of_node_name_eq (np,GRAPH_NODENAME_DPCM )) { ret =GRAPH_DPCM ; +fw_devlink_purge_absent_suppliers (&np->fwnode); goto out_put; }if (of_node_name_eq (np,GRAPH_NODENAME_C2C )) { ret =GRAPH_C2C ; +fw_devlink_purge_absent_suppliers (&np->fwnode); goto out_put; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 25/772 LoongArch: Define a default value for VM_DATA_DEFAULT_FLAGS
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuli Wang <[email protected]>
[ Upstream commit c859900a841b0a6cd9a73d16426465e44cdde29c ]
This is a trivial cleanup, commit c62da0c35d58518d ("mm/vma: define a default value for VM_DATA_DEFAULT_FLAGS") has unified default values of VM_DATA_DEFAULT_FLAGS across different platforms.
Apply the same consistency to LoongArch.
--- arch/loongarch/include/asm/page.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
arch/loongarch/include/asm/page.h +1 -4
@@ -102,10 +102,7 @@ static inline int pfn_valid(unsigned long pfn)extern int __virt_addr_valid (volatile void *kaddr);#define virt_addr_valid (kaddr) __virt_addr_valid((volatile void *)(kaddr)) -#define VM_DATA_DEFAULT_FLAGS \ - (VM_READ | VM_WRITE | \ - ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \ - VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) +#define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_TSK_EXEC#include <asm-generic/memory_model.h> #include <asm-generic/getorder.h>
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 26/772 ALSA: usb-audio: Fix Yamaha P-125 Quirk Entry
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eryk Zagorski <[email protected]>
[ Upstream commit 6f891ca15b017707840c9e7f5afd9fc6cfd7d8b1 ]
This patch switches the P-125 quirk entry to use a composite quirk as the P-125 supplies both MIDI and Audio like many of the other Yamaha keyboards
--- sound/usb/quirks-table.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
sound/usb/quirks-table.h +13 -1
@@ -324,7 +324,6 @@ YAMAHA_DEVICE(0x105a, NULL),YAMAHA_DEVICE (0x105b ,NULL ),YAMAHA_DEVICE (0x105c ,NULL ),YAMAHA_DEVICE (0x105d ,NULL ), -YAMAHA_DEVICE (0x1718 ,"P-125" ), {USB_DEVICE (0x0499 ,0x1503 ), QUIRK_DRIVER_INFO {
@@ -391,6 +390,19 @@ YAMAHA_DEVICE(0x1718, "P-125"), } } }, +{ +USB_DEVICE (0x0499 ,0x1718 ), + QUIRK_DRIVER_INFO { +/* .vendor_name = "Yamaha", */ +/* .product_name = "P-125", */ + QUIRK_DATA_COMPOSITE { + { QUIRK_DATA_STANDARD_AUDIO(1) }, + { QUIRK_DATA_STANDARD_AUDIO(2) }, + { QUIRK_DATA_MIDI_YAMAHA(3) }, + QUIRK_COMPOSITE_END + } + } +},YAMAHA_DEVICE (0x2000 ,"DGP-7" ),YAMAHA_DEVICE (0x2001 ,"DGP-5" ), YAMAHA_DEVICE(0x2002, NULL),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 27/772 ARM: 9420/1: smp: Fix SMP for xip kernels
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Harith G <[email protected]>
[ Upstream commit 9e9b0cf9319b4db143014477b0bc4b39894248f1 ]
Fix the physical address calculation of the following to get smp working on xip kernels.
- secondary_data needed for secondary cpu bootup.
- secondary_startup address passed through psci.
- identity mapped code region needed for enabling mmu for secondary cpus.
--- arch/arm/kernel/head.S | 4 ++++ arch/arm/kernel/psci_smp.c | 7 +++++++ arch/arm/mm/idmap.c | 7 +++++++ 3 files changed, 18 insertions(+)
arch/arm/kernel/head.S +4 -0
@@ -411,7 +411,11 @@ ENTRY(secondary_startup) /* * Use the page tables supplied from __cpu_up. */ +#ifdef CONFIG_XIP_KERNEL + ldr r3, =(secondary_data + PLAT_PHYS_OFFSET - PAGE_OFFSET) +#else adr_l r3, secondary_data +#endif mov_l r12, __secondary_switched ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE:
arch/arm/kernel/psci_smp.c +7 -0
@@ -45,8 +45,15 @@ extern void secondary_startup(void);static int psci_boot_secondary (unsigned int cpu,struct task_struct *idle) { if (psci_ops.cpu_on) +#ifdef CONFIG_XIP_KERNEL +return psci_ops.cpu_on (cpu_logical_map (cpu), + ((phys_addr_t)(&secondary_startup) + -XIP_VIRT_ADDR (CONFIG_XIP_PHYS_ADDR ) + +CONFIG_XIP_PHYS_ADDR )); +#else return psci_ops.cpu_on (cpu_logical_map (cpu),virt_to_idmap (&secondary_startup)); +#endif return -ENODEV ; }
arch/arm/mm/idmap.c +7 -0
@@ -84,8 +84,15 @@ static void identity_mapping_add(pgd_t *pgd, const char *text_start,unsigned long addr, end;unsigned long next; +#ifdef CONFIG_XIP_KERNEL + addr = (phys_addr_t)(text_start) -XIP_VIRT_ADDR (CONFIG_XIP_PHYS_ADDR ) + +CONFIG_XIP_PHYS_ADDR ; + end = (phys_addr_t)(text_end) -XIP_VIRT_ADDR (CONFIG_XIP_PHYS_ADDR ) + +CONFIG_XIP_PHYS_ADDR ; +#else addr =virt_to_idmap (text_start); end =virt_to_idmap (text_end); +#endif pr_info ("Setting up static identity map for 0x%lx - 0x%lx\n" , addr, end); prot |=PMD_TYPE_SECT |PMD_SECT_AP_WRITE |PMD_SECT_AF ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 28/772 ipmr: Fix access to mfc_cache_list without lock held
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Breno Leitao <[email protected]>
[ Upstream commit e28acc9c1ccfcb24c08e020828f69d0a915b06ae ]
Accessing mr_table->mfc_cache_list is protected by an RCU lock. In the following code flow, the RCU read lock is not held, causing the following error when RCU_PROVE is not held. The same problem might show up in the IPv6 code path.
6.12.0-rc5-kbuilder-01145-gbac17284bdcb #33 Tainted: G E N
-----------------------------
net/ipv4/ipmr_base.c:313 RCU-list traversed in non-reader section!!
rcu_scheduler_active = 2, debug_locks = 1
2 locks held by RetransmitAggre/3519:
#0: ffff88816188c6c0 (nlk_cb_mutex-ROUTE){+.+.}-{3:3}, at: __netlink_dump_start+0x8a/0x290
#1: ffffffff83fcf7a8 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_dumpit+0x6b/0x90
stack backtrace:
lockdep_rcu_suspicious
mr_table_dump
ipmr_rtm_dumproute
rtnl_dump_all
rtnl_dumpit
netlink_dump
__netlink_dump_start
rtnetlink_rcv_msg
netlink_rcv_skb
netlink_unicast
netlink_sendmsgThis is not a problem per see, since the RTNL lock is held here, so, it is safe to iterate in the list without the RCU read lock, as suggested by Eric.
To alleviate the concern, modify the code to use list_for_each_entry_rcu() with the RTNL-held argument.
The annotation will raise an error only if RTNL or RCU read lock are missing during iteration, signaling a legitimate problem, otherwise it will avoid this false positive.
This will solve the IPv6 case as well, since ip6mr_rtm_dumproute() calls this function as well.
--- net/ipv4/ipmr_base.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
net/ipv4/ipmr_base.c +2 -1
@@ -310,7 +310,8 @@ int mr_table_dump(struct mr_table *mrt, struct sk_buff *skb,if (filter->filter_set) flags |=NLM_F_DUMP_FILTERED ; -list_for_each_entry_rcu (mfc, &mrt->mfc_cache_list, list) { +list_for_each_entry_rcu (mfc, &mrt->mfc_cache_list, list, +lockdep_rtnl_is_held ()) {if (e < s_e) goto next_entry; if (filter->dev &&
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 29/772 closures: Change BUG_ON() to WARN_ON()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kent Overstreet <[email protected]>
[ Upstream commit 339b84ab6b1d66900c27bd999271cb2ae40ce812 ]
If a BUG_ON() can be hit in the wild, it shouldn't be a BUG_ON()
For reference, this has popped up once in the CI, and we'll need more info to debug it:
03240 ------------[ cut here ]------------
03240 kernel BUG at lib/closure.c:21!
03240 kernel BUG at lib/closure.c:21!
03240 Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
03240 Modules linked in:
03240 CPU: 15 PID: 40534 Comm: kworker/u80:1 Not tainted 6.10.0-rc4-ktest-ga56da69799bd #25570 03240 Hardware name: linux,dummy-virt (DT)
03240 Workqueue: btree_update btree_interior_update_work
03240 pstate: 00001005 (nzcv daif -PAN -UAO -TCO -DIT +SSBS BTYPE=--)
03240 pc : closure_put+0x224/0x2a0
03240 lr : closure_put+0x24/0x2a0
03240 sp : ffff0000d12071c0
03240 x29: ffff0000d12071c0 x28: dfff800000000000 x27: ffff0000d1207360
03240 x26: 0000000000000040 x25: 0000000000000040 x24: 0000000000000040
03240 x23: ffff0000c1f20180 x22: 0000000000000000 x21: ffff0000c1f20168
03240 x20: 0000000040000000 x19: ffff0000c1f20140 x18: 0000000000000001
03240 x17: 0000000000003aa0 x16: 0000000000003ad0 x15: 1fffe0001c326974
03240 x14: 0000000000000a1e x13: 0000000000000000 x12: 1fffe000183e402d
03240 x11: ffff6000183e402d x10: dfff800000000000 x9 : ffff6000183e402e
03240 x8 : 0000000000000001 x7 : 00009fffe7c1bfd3 x6 : ffff0000c1f2016b
03240 x5 : ffff0000c1f20168 x4 : ffff6000183e402e x3 : ffff800081391954
03240 x2 : 0000000000000001 x1 : 0000000000000000 x0 : 00000000a8000000
03240 Call trace:
03240 closure_put+0x224/0x2a0 03240 bch2_check_for_deadlock+0x910/0x1028 03240 bch2_six_check_for_deadlock+0x1c/0x30 03240 six_lock_slowpath.isra.0+0x29c/0xed0 03240 six_lock_ip_waiter+0xa8/0xf8 03240 __bch2_btree_node_lock_write+0x14c/0x298 03240 bch2_trans_lock_write+0x6d4/0xb10 03240 __bch2_trans_commit+0x135c/0x5520 03240 btree_interior_update_work+0x1248/0x1c10 03240 process_scheduled_works+0x53c/0xd90 03240 worker_thread+0x370/0x8c8 03240 kthread+0x258/0x2e8 03240 ret_from_fork+0x10/0x20
03240 Code: aa1303e0 d63f0020 a94363f7 17ffff8c (d4210000) 03240 ---[ end trace 0000000000000000 ]---
03240 Kernel panic - not syncing: Oops - BUG: Fatal exception 03240 SMP: stopping secondary CPUs
03241 SMP: failed to stop secondary CPUs 13,15
03241 Kernel Offset: disabled
03241 CPU features: 0x00,00000003,80000008,4240500b
03241 Memory Limit: none
03241 ---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception ]--- 03246 ========= FAILED TIMEOUT copygc_torture_no_checksum in 7200s
--- drivers/md/bcache/closure.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
drivers/md/bcache/closure.c +8 -2
@@ -17,10 +17,16 @@ static inline void closure_put_after_sub(struct closure *cl, int flags) {int r = flags &CLOSURE_REMAINING_MASK ; -BUG_ON (flags &CLOSURE_GUARD_MASK ); -BUG_ON (!r && (flags & ~CLOSURE_DESTRUCTOR )); +if (WARN (flags &CLOSURE_GUARD_MASK , +"closure has guard bits set: %x (%u)" , + flags &CLOSURE_GUARD_MASK , (unsigned )__fls (r))) + r &= ~CLOSURE_GUARD_MASK ;if (!r) { +WARN (flags & ~CLOSURE_DESTRUCTOR , +"closure ref hit 0 with incorrect flags set: %x (%u)" , + flags & ~CLOSURE_DESTRUCTOR , (unsigned )__fls (flags)); +if (cl->fn && !(flags &CLOSURE_DESTRUCTOR )) {atomic_set (&cl->remaining,CLOSURE_REMAINING_INITIALIZER );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 30/772 net: fix crash when config small gso_max_size/gso_ipv4_max_size
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wang Liang <[email protected]>
[ Upstream commit 9ab5cf19fb0e4680f95e506d6c544259bf1111c4 ]
Config a small gso_max_size/gso_ipv4_max_size will lead to an underflow in sk_dst_gso_max_size(), which may trigger a BUG_ON crash, because sk->sk_gso_max_size would be much bigger than device limits.
Call Trace:
tcp_write_xmit
tso_segs = tcp_init_tso_segs(skb, mss_now);
tcp_set_skb_tso_segs
tcp_skb_pcount_set
// skb->len = 524288, mss_now = 8
// u16 tso_segs = 524288/8 = 65535 -> 0
tso_segs = DIV_ROUND_UP(skb->len, mss_now)
BUG_ON(!tso_segs)Add check for the minimum value of gso_max_size and gso_ipv4_max_size.
--- net/core/rtnetlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/core/rtnetlink.c +1 -1
@@ -1939,7 +1939,7 @@ static const struct nla_policy ifla_policy[IFLA_MAX+1] = { [IFLA_NUM_TX_QUEUES] = { .type = NLA_U32 }, [IFLA_NUM_RX_QUEUES] = { .type = NLA_U32 }, [IFLA_GSO_MAX_SEGS] = { .type = NLA_U32 }, - [IFLA_GSO_MAX_SIZE] = { .type = NLA_U32 }, + [IFLA_GSO_MAX_SIZE] = NLA_POLICY_MIN(NLA_U32, MAX_TCP_HEADER + 1), [IFLA_PHYS_PORT_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN }, [IFLA_CARRIER_CHANGES] = { .type = NLA_U32 }, /* ignored */ [IFLA_PHYS_SWITCH_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN },
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 31/772 serial: sc16is7xx: fix invalid FIFO access with special register set
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hugo Villeneuve <[email protected]>
[ Upstream commit 7d3b793faaab1305994ce568b59d61927235f57b ]
When enabling access to the special register set, Receiver time-out and RHR interrupts can happen. In this case, the IRQ handler will try to read from the FIFO thru the RHR register at address 0x00, but address 0x00 is mapped to DLL register, resulting in erroneous FIFO reading.
Call graph example:
sc16is7xx_startup(): entry
sc16is7xx_ms_proc(): entry
sc16is7xx_set_termios(): entry
sc16is7xx_set_baud(): DLH/DLL = $009C --> access special register set
sc16is7xx_port_irq() entry --> IIR is 0x0C
sc16is7xx_handle_rx() entry
sc16is7xx_fifo_read(): --> unable to access FIFO (RHR) because it is
mapped to DLL (LCR=LCR_CONF_MODE_A)
sc16is7xx_set_baud(): exit --> Restore access to general register setFix the problem by claiming the efr_lock mutex when accessing the Special register set.
--- drivers/tty/serial/sc16is7xx.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/tty/serial/sc16is7xx.c +5 -0
@@ -545,6 +545,9 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud)SC16IS7XX_MCR_CLKSEL_BIT , prescaler == 1 ? 0 : SC16IS7XX_MCR_CLKSEL_BIT); + +mutex_lock (&one->efr_lock); +/* Open the LCR divisors for configuration */ sc16is7xx_port_write (port,SC16IS7XX_LCR_REG ,SC16IS7XX_LCR_CONF_MODE_A );
@@ -558,6 +561,8 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud)/* Put LCR back to the normal mode */ sc16is7xx_port_write (port,SC16IS7XX_LCR_REG , lcr); +mutex_unlock (&one->efr_lock); +return DIV_ROUND_CLOSEST ((clk / prescaler) /16 , div); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 32/772 x86/stackprotector: Work around strict Clang TLS symbol requirements
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ard Biesheuvel <[email protected]>
[ Upstream commit 577c134d311b9b94598d7a0c86be1f431f823003 ]
GCC and Clang both implement stack protector support based on Thread Local Storage (TLS) variables, and this is used in the kernel to implement per-task stack cookies, by copying a task's stack cookie into a per-CPU variable every time it is scheduled in.
Both now also implement -mstack-protector-guard-symbol=, which permits the TLS variable to be specified directly. This is useful because it will allow to move away from using a fixed offset of 40 bytes into the per-CPU area on x86_64, which requires a lot of special handling in the per-CPU code and the runtime relocation code.
However, while GCC is rather lax in its implementation of this command line option, Clang actually requires that the provided symbol name refers to a TLS variable (i.e., one declared with __thread), although it also permits the variable to be undeclared entirely, in which case it will use an implicit declaration of the right type.
The upshot of this is that Clang will emit the correct references to the stack cookie variable in most cases, e.g.,
10d: 64 a1 00 00 00 00 mov %fs:0x0,%eax
10f: R_386_32 __stack_chk_guard
However, if a non-TLS definition of the symbol in question is visible in the same compilation unit (which amounts to the whole of vmlinux if LTO is enabled), it will drop the per-CPU prefix and emit a load from a bogus address.
Work around this by using a symbol name that never occurs in C code, and emit it as an alias in the linker script.
--- arch/x86/Makefile | 3 ++- arch/x86/entry/entry.S | 15 +++++++++++++++ arch/x86/include/asm/asm-prototypes.h | 3 +++ arch/x86/kernel/cpu/common.c | 2 ++ arch/x86/kernel/vmlinux.lds.S | 3 +++ 5 files changed, 25 insertions(+), 1 deletion(-)
arch/x86/Makefile +2 -1
@@ -113,7 +113,8 @@ ifeq ($(CONFIG_X86_32),y) ifeq ($(CONFIG_STACKPROTECTOR),y) ifeq ($(CONFIG_SMP),y) - KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard + KBUILD_CFLAGS += -mstack-protector-guard-reg=fs \ + -mstack-protector-guard-symbol=__ref_stack_chk_guard else KBUILD_CFLAGS += -mstack-protector-guard=global endif
arch/x86/entry/entry.S +15 -0
@@ -48,3 +48,18 @@ EXPORT_SYMBOL_GPL(mds_verw_sel); .popsection +#ifndef CONFIG_X86_64 +/* + * Clang's implementation of TLS stack cookies requires the variable in + * question to be a TLS variable. If the variable happens to be defined as an + * ordinary variable with external linkage in the same compilation unit (which + * amounts to the whole of vmlinux with LTO enabled), Clang will drop the + * segment register prefix from the references, resulting in broken code. Work + * around this by avoiding the symbol used in -mstack-protector-guard-symbol= + * entirely in the C code, and use an alias emitted by the linker script + * instead. + */ +#ifdef CONFIG_STACKPROTECTOR +EXPORT_SYMBOL(__ref_stack_chk_guard); +#endif +#endif
arch/x86/include/asm/asm-prototypes.h +3 -0
@@ -18,3 +18,6 @@extern void cmpxchg8b_emu (void );#endif +#if defined(__GENKSYMS__) && defined(CONFIG_STACKPROTECTOR ) +extern unsigned long __ref_stack_chk_guard; +#endif
arch/x86/kernel/cpu/common.c +2 -0
@@ -2158,8 +2158,10 @@ EXPORT_PER_CPU_SYMBOL(cpu_current_top_of_stack);#ifdef CONFIG_STACKPROTECTOR DEFINE_PER_CPU(unsigned long, __stack_chk_guard); +#ifndef CONFIG_SMP EXPORT_PER_CPU_SYMBOL (__stack_chk_guard);#endif +#endif #endif /* CONFIG_X86_64 */
arch/x86/kernel/vmlinux.lds.S +3 -0
@@ -486,6 +486,9 @@ SECTIONS ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!") } +/* needed for Clang - see arch/x86/entry/entry.S */ +PROVIDE(__ref_stack_chk_guard = __stack_chk_guard); + /* * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility: */
Signature · 1 line
2.43.0
Re: [PATCH 6.1 032/772] x86/stackprotector: Work around strict Clang TLS symbol requirements
Quoted 9 lines · Greg Kroah-Hartman
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ard Biesheuvel <[email protected]>
[ Upstream commit
577c134d311b9b94598d7a0c86be1f431f823003]
There is a follow-up patch that addresses a build issue with this patch and older GCC versions. Given that this fix is for 32-bit only, whereas the build issue affects 64-bit too, let's hold off on this one until we can apply them as a pair.
Quoted 131 lines
GCC and Clang both implement stack protector support based on Thread Local Storage (TLS) variables, and this is used in the kernel to implement per-task stack cookies, by copying a task's stack cookie into a per-CPU variable every time it is scheduled in.
Both now also implement -mstack-protector-guard-symbol=, which permits the TLS variable to be specified directly. This is useful because it will allow to move away from using a fixed offset of 40 bytes into the per-CPU area on
x86_64, which requires a lot of special handling in the per-CPU code and the runtime relocation code.However, while GCC is rather lax in its implementation of this command line option, Clang actually requires that the provided symbol name refers to a TLS variable (i.e., one declared with
__thread), although it also permits the variable to be undeclared entirely, in which case it will use an implicit declaration of the right type.The upshot of this is that Clang will emit the correct references to the stack cookie variable in most cases, e.g.,
10d: 64 a1 00 00 00 00 mov %fs:0x0,%eax
10f: R_386_32 __stack_chk_guardHowever, if a non-TLS definition of the symbol in question is visible in the same compilation unit (which amounts to the whole of vmlinux if LTO is enabled), it will drop the per-CPU prefix and emit a load from a bogus address.
Work around this by using a symbol name that never occurs in C code, and emit it as an alias in the linker script.
Fixes 3fb0fdb3bbe7 ("x86/stackprotector/32: Make the canary into a regular percpu variable")Signed-off-by Ard Biesheuvel <[email protected]>Signed-off-by Brian Gerst <[email protected]>Signed-off-by Borislav Petkov (AMD) <[email protected]>Reviewed-by Nathan Chancellor <[email protected]>Tested-by Nathan Chancellor <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- arch/x86/Makefile | 3 ++- arch/x86/entry/entry.S | 15 +++++++++++++++ arch/x86/include/asm/asm-prototypes.h | 3 +++ arch/x86/kernel/cpu/common.c | 2 ++ arch/x86/kernel/vmlinux.lds.S | 3 +++ 5 files changed, 25 insertions(+), 1 deletion(-)arch/x86/Makefile +2
-1@@ -113,7 +113,8 @@ ifeq ($(CONFIG_X86_32),y) ifeq ($(CONFIG_STACKPROTECTOR),y) ifeq ($(CONFIG_SMP),y) - KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard + KBUILD_CFLAGS += -mstack-protector-guard-reg=fs \ + -mstack-protector-guard-symbol=__ref_stack_chk_guard else KBUILD_CFLAGS += -mstack-protector-guard=global endifarch/x86/entry/entry.S +15
-0@@ -48,3 +48,18 @@ EXPORT_SYMBOL_GPL(mds_verw_sel); .popsection +#ifndef CONFIG_X86_64 +/* + * Clang's implementation of TLS stack cookies requires the variable in + * question to be a TLS variable. If the variable happens to be defined as an + * ordinary variable with external linkage in the same compilation unit (which + * amounts to the whole of vmlinux with LTO enabled), Clang will drop the + * segment register prefix from the references, resulting in broken code. Work + * around this by avoiding the symbol used in -mstack-protector-guard-symbol= + * entirely in the C code, and use an alias emitted by the linker script + * instead. + */ +#ifdef CONFIG_STACKPROTECTOR +EXPORT_SYMBOL(__ref_stack_chk_guard); +#endif +#endifarch/x86/include/asm/asm-prototypes.h +3
-0@@ -18,3 +18,6 @@extern void cmpxchg8b_emu (void );#endif +#if defined(__GENKSYMS__) && defined(CONFIG_STACKPROTECTOR ) +extern unsigned long __ref_stack_chk_guard; +#endif arch/x86/kernel/cpu/common.c +2
-0@@ -2158,8 +2158,10 @@ EXPORT_PER_CPU_SYMBOL(cpu_current_top_of_stack);#ifdef CONFIG_STACKPROTECTOR DEFINE_PER_CPU(unsigned long, __stack_chk_guard); +#ifndef CONFIG_SMP EXPORT_PER_CPU_SYMBOL (__stack_chk_guard);#endif +#endif #endif /* CONFIG_X86_64 */ arch/x86/kernel/vmlinux.lds.S +3
-1@@ -486,6 +486,9 @@ SECTIONS ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!") } +/* needed for Clang - see arch/x86/entry/entry.S */ +PROVIDE(__ref_stack_chk_guard = __stack_chk_guard); + /* * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility: */ --2.43.0
Greg Kroah-Hartman
maintainerPATCH 33/772 cifs: Fix buffer overflow when parsing NFS reparse points
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pali Rohár <[email protected]>
commit e2a8910af01653c1c268984855629d71fb81f404 upstream.
ReparseDataLength is sum of the InodeType size and DataBuffer size. So to get DataBuffer size it is needed to subtract InodeType's size from ReparseDataLength.
Function cifs_strndup_from_utf16() is currentlly accessing buf->DataBuffer at position after the end of the buffer because it does not subtract InodeType size from the length. Fix this problem and correctly subtract variable len.
Member InodeType is present only when reparse buffer is large enough. Check for ReparseDataLength before accessing InodeType to prevent another invalid memory access.
Major and minor rdev values are present also only when reparse buffer is large enough. Check for reparse buffer size before calling reparse_mkdev().
[use variable name symlink_buf, the other buf->InodeType accesses are not used in current version so skip]
--- fs/smb/client/smb2ops.c | 6 ++++++ 1 file changed, 6 insertions(+)
fs/smb/client/smb2ops.c +6 -0
@@ -2897,6 +2897,12 @@ parse_reparse_posix(struct reparse_posix_data *symlink_buf,/* See MS-FSCC 2.1.2.6 for the 'NFS' style reparse tags */ len =le16_to_cpu (symlink_buf->ReparseDataLength); +if (len <sizeof (symlink_buf->InodeType)) { +cifs_dbg (VFS ,"srv returned malformed nfs buffer\n" ); +return -EIO ; + } + + len -=sizeof (symlink_buf->InodeType);if (le64_to_cpu (symlink_buf->InodeType) !=NFS_SPECFILE_LNK ) { cifs_dbg(VFS, "%lld not a supported symlink type\n",
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 34/772 fpga: bridge: add owner module and take its refcount
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Pagani <[email protected]>
[ Upstream commit 1da11f822042eb6ef4b6064dc048f157a7852529 ]
The current implementation of the fpga bridge assumes that the low-level module registers a driver for the parent device and uses its owner pointer to take the module's refcount. This approach is problematic since it can lead to a null pointer dereference while attempting to get the bridge if the parent device does not have a driver.
To address this problem, add a module owner pointer to the fpga_bridge struct and use it to take the module's refcount. Modify the function for registering a bridge to take an additional owner module parameter and rename it to avoid conflicts. Use the old function name for a helper macro that automatically sets the module that registers the bridge as the owner. This ensures compatibility with existing low-level control modules and reduces the chances of registering a bridge without setting the owner.
Also, update the documentation to keep it consistent with the new interface for registering an fpga bridge.
Other changes: opportunistically move put_device() from __fpga_bridge_get() to fpga_bridge_get() and of_fpga_bridge_get() to improve code clarity since the bridge device is taken in these functions.
--- Documentation/driver-api/fpga/fpga-bridge.rst | 7 ++- drivers/fpga/fpga-bridge.c | 57 ++++++++++--------- include/linux/fpga/fpga-bridge.h | 10 +++- 3 files changed, 43 insertions(+), 31 deletions(-)
Documentation/driver-api/fpga/fpga-bridge.rst +5 -2
@@ -6,9 +6,12 @@ API to implement a new FPGA bridge * struct fpga_bridge - The FPGA Bridge structure * struct fpga_bridge_ops - Low level Bridge driver ops -* fpga_bridge_register() - Create and register a bridge +* __fpga_bridge_register() - Create and register a bridge * fpga_bridge_unregister() - Unregister a bridge +The helper macro ``fpga_bridge_register()`` automatically sets +the module that registers the FPGA bridge as the owner. + .. kernel-doc:: include/linux/fpga/fpga-bridge.h :functions: fpga_bridge
@@ -16,7 +19,7 @@ API to implement a new FPGA bridge :functions: fpga_bridge_ops .. kernel-doc:: drivers/fpga/fpga-bridge.c - :functions: fpga_bridge_register + :functions: __fpga_bridge_register .. kernel-doc:: drivers/fpga/fpga-bridge.c :functions: fpga_bridge_unregister
drivers/fpga/fpga-bridge.c +31 -26
128 lines not on this page · raw message
include/linux/fpga/fpga-bridge.h +7 -3
@@ -45,6 +45,7 @@ struct fpga_bridge_info {* @dev: FPGA bridge device * @mutex: enforces exclusive reference to bridge * @br_ops: pointer to struct of FPGA bridge ops +* @br_ops_owner: module containing the br_ops * @info: fpga image specific information * @node: FPGA bridge list node * @priv: low level driver private date
@@ -54,6 +55,7 @@ struct fpga_bridge {struct device dev;struct mutex mutex;/* for exclusive reference to bridge */ const struct fpga_bridge_ops *br_ops; +struct module *br_ops_owner;struct fpga_image_info *info;struct list_head node;void *priv;
@@ -79,10 +81,12 @@ int of_fpga_bridge_get_to_list(struct device_node *np,struct fpga_image_info *info, struct list_head *bridge_list); +#define fpga_bridge_register (parent, name, br_ops, priv) \ + __fpga_bridge_register(parent, name, br_ops, priv, THIS_MODULE)struct fpga_bridge * -fpga_bridge_register (struct device *parent,const char *name, -const struct fpga_bridge_ops *br_ops, -void *priv); +__fpga_bridge_register (struct device *parent,const char *name, +const struct fpga_bridge_ops *br_ops,void *priv, +struct module *owner);void fpga_bridge_unregister (struct fpga_bridge *br);#endif /* _LINUX_FPGA_BRIDGE_H */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 35/772 fpga: manager: add owner module and take its refcount
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Pagani <[email protected]>
[ Upstream commit 4d4d2d4346857bf778fafaa97d6f76bb1663e3c9 ]
The current implementation of the fpga manager assumes that the low-level module registers a driver for the parent device and uses its owner pointer to take the module's refcount. This approach is problematic since it can lead to a null pointer dereference while attempting to get the manager if the parent device does not have a driver.
To address this problem, add a module owner pointer to the fpga_manager struct and use it to take the module's refcount. Modify the functions for registering the manager to take an additional owner module parameter and rename them to avoid conflicts. Use the old function names for helper macros that automatically set the module that registers the manager as the owner. This ensures compatibility with existing low-level control modules and reduces the chances of registering a manager without setting the owner.
Also, update the documentation to keep it consistent with the new interface for registering an fpga manager.
Other changes: opportunistically move put_device() from __fpga_mgr_get() to fpga_mgr_get() and of_fpga_mgr_get() to improve code clarity since the manager device is taken in these functions.
--- Documentation/driver-api/fpga/fpga-mgr.rst | 34 +++++---- drivers/fpga/fpga-mgr.c | 82 +++++++++++++--------- include/linux/fpga/fpga-mgr.h | 26 +++++-- 3 files changed, 89 insertions(+), 53 deletions(-)
Documentation/driver-api/fpga/fpga-mgr.rst +20 -14
@@ -24,7 +24,8 @@ How to support a new FPGA device -------------------------------- To add another FPGA manager, write a driver that implements a set of ops. The -probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as:: +probe function calls ``fpga_mgr_register()`` or ``fpga_mgr_register_full()``, +such as:: static const struct fpga_manager_ops socfpga_fpga_ops = { .write_init = socfpga_fpga_ops_configure_init,
@@ -69,10 +70,11 @@ probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as:: } Alternatively, the probe function could call one of the resource managed -register functions, devm_fpga_mgr_register() or devm_fpga_mgr_register_full(). -When these functions are used, the parameter syntax is the same, but the call -to fpga_mgr_unregister() should be removed. In the above example, the -socfpga_fpga_remove() function would not be required. +register functions, ``devm_fpga_mgr_register()`` or +``devm_fpga_mgr_register_full()``. When these functions are used, the +parameter syntax is the same, but the call to ``fpga_mgr_unregister()`` should be +removed. In the above example, the ``socfpga_fpga_remove()`` function would not be +required. The ops will implement whatever device specific register writes are needed to do the programming sequence for this particular FPGA. These ops return 0 for
@@ -125,15 +127,19 @@ API for implementing a new FPGA Manager driver * struct fpga_manager - the FPGA manager struct * struct fpga_manager_ops - Low level FPGA manager driver ops * struct fpga_manager_info - Parameter structure for fpga_mgr_register_full() -* fpga_mgr_register_full() - Create and register an FPGA manager using the +* __fpga_mgr_register_full() - Create and register an FPGA manager using the fpga_mgr_info structure to provide the full flexibility of options -* fpga_mgr_register() - Create and register an FPGA manager using standard +* __fpga_mgr_register() - Create and register an FPGA manager using standard arguments -* devm_fpga_mgr_register_full() - Resource managed version of - fpga_mgr_register_full() -* devm_fpga_mgr_register() - Resource managed version of fpga_mgr_register() +* __devm_fpga_mgr_register_full() - Resource managed version of + __fpga_mgr_register_full() +* __devm_fpga_mgr_register() - Resource managed version of __fpga_mgr_register() * fpga_mgr_unregister() - Unregister an FPGA manager +Helper macros ``fpga_mgr_register_full()``, ``fpga_mgr_register()``, +``devm_fpga_mgr_register_full()``, and ``devm_fpga_mgr_register()`` are available +to ease the registration. + .. kernel-doc:: include/linux/fpga/fpga-mgr.h :functions: fpga_mgr_states
@@ -147,16 +153,16 @@ API for implementing a new FPGA Manager driver :functions: fpga_manager_info .. kernel-doc:: drivers/fpga/fpga-mgr.c - :functions: fpga_mgr_register_full + :functions: __fpga_mgr_register_full .. kernel-doc:: drivers/fpga/fpga-mgr.c - :functions: fpga_mgr_register + :functions: __fpga_mgr_register .. kernel-doc:: drivers/fpga/fpga-mgr.c - :functions: devm_fpga_mgr_register_full + :functions: __devm_fpga_mgr_register_full .. kernel-doc:: drivers/fpga/fpga-mgr.c - :functions: devm_fpga_mgr_register + :functions: __devm_fpga_mgr_register .. kernel-doc:: drivers/fpga/fpga-mgr.c :functions: fpga_mgr_unregister
drivers/fpga/fpga-mgr.c +49 -33
208 lines not on this page · raw message
include/linux/fpga/fpga-mgr.h +20 -6
@@ -201,6 +201,7 @@ struct fpga_manager_ops {* @state: state of fpga manager * @compat_id: FPGA manager id for compatibility check. * @mops: pointer to struct of fpga manager ops +* @mops_owner: module containing the mops * @priv: low level driver private date */ struct fpga_manager {
@@ -210,6 +211,7 @@ struct fpga_manager {enum fpga_mgr_states state;struct fpga_compat_id *compat_id;const struct fpga_manager_ops *mops; +struct module *mops_owner;void *priv; };
@@ -230,18 +232,30 @@ struct fpga_manager *fpga_mgr_get(struct device *dev);void fpga_mgr_put (struct fpga_manager *mgr); +#define fpga_mgr_register_full (parent, info) \ + __fpga_mgr_register_full(parent, info, THIS_MODULE)struct fpga_manager * -fpga_mgr_register_full (struct device *parent,const struct fpga_manager_info *info); +__fpga_mgr_register_full (struct device *parent,const struct fpga_manager_info *info, +struct module *owner); +#define fpga_mgr_register (parent, name, mops, priv) \ + __fpga_mgr_register(parent, name, mops, priv, THIS_MODULE)struct fpga_manager * -fpga_mgr_register (struct device *parent,const char *name, -const struct fpga_manager_ops *mops,void *priv); +__fpga_mgr_register (struct device *parent,const char *name, +const struct fpga_manager_ops *mops,void *priv,struct module *owner); +void fpga_mgr_unregister (struct fpga_manager *mgr); +#define devm_fpga_mgr_register_full (parent, info) \ + __devm_fpga_mgr_register_full(parent, info, THIS_MODULE)struct fpga_manager * -devm_fpga_mgr_register_full (struct device *parent,const struct fpga_manager_info *info); +__devm_fpga_mgr_register_full (struct device *parent,const struct fpga_manager_info *info, +struct module *owner); +#define devm_fpga_mgr_register (parent, name, mops, priv) \ + __devm_fpga_mgr_register(parent, name, mops, priv, THIS_MODULE)struct fpga_manager * -devm_fpga_mgr_register (struct device *parent,const char *name, -const struct fpga_manager_ops *mops,void *priv); +__devm_fpga_mgr_register (struct device *parent,const char *name, +const struct fpga_manager_ops *mops,void *priv, +struct module *owner);#endif /*_LINUX_FPGA_MGR_H */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 36/772 drm/amd/display: Add NULL check for function pointer in dcn32_set_output_transfer_func
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Srinivasan Shanmugam <[email protected]>
[ Upstream commit 28574b08c70e56d34d6f6379326a860b96749051 ]
This commit adds a null check for the set_output_gamma function pointer in the dcn32_set_output_transfer_func function. Previously, set_output_gamma was being checked for null, but then it was being dereferenced without any null check. This could lead to a null pointer dereference if set_output_gamma is null.
To fix this, we now ensure that set_output_gamma is not null before dereferencing it. We do this by adding a null check for set_output_gamma before the call to set_output_gamma.
--- drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +3 -1
@@ -667,7 +667,9 @@ bool dcn32_set_output_transfer_func(struct dc *dc, } } - mpc->funcs->set_output_gamma (mpc, mpcc_id, params); +if (mpc->funcs->set_output_gamma) + mpc->funcs->set_output_gamma (mpc, mpcc_id, params); +return ret; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 37/772 drm/amd/display: Check null-initialized variables
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <[email protected]>
[ Upstream commit 367cd9ceba1933b63bc1d87d967baf6d9fd241d2 ]
[WHAT & HOW]drr_timing and subvp_pipe are initialized to null and they are not always assigned new values. It is necessary to check for null before dereferencing.
This fixes 2 FORWARD_NULL issues reported by Coverity.
--- drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +4 -3
@@ -900,8 +900,9 @@ static bool subvp_drr_schedulable(struct dc *dc, struct dc_state *context, struc* for VBLANK: (VACTIVE region of the SubVP pipe can fit the MALL prefetch, VBLANK frame time, * and the max of (VBLANK blanking time, MALL region)). */ -if (stretched_drr_us < (1 / (double )drr_timing->min_refresh_in_uhz) *1000000 *1000000 && - subvp_active_us - prefetch_us - stretched_drr_us - max_vblank_mallregion >0 ) +if (drr_timing && + stretched_drr_us < (1 / (double )drr_timing->min_refresh_in_uhz) *1000000 *1000000 && + subvp_active_us - prefetch_us - stretched_drr_us - max_vblank_mallregion >0 ) schedulable = true;return schedulable;
@@ -966,7 +967,7 @@ static bool subvp_vblank_schedulable(struct dc *dc, struct dc_state *context)if (found && context->res_ctx.pipe_ctx[vblank_index].stream->ignore_msa_timing_param) {// SUBVP + DRR case schedulable =subvp_drr_schedulable (dc, context, &context->res_ctx.pipe_ctx[vblank_index]); - }else if (found) { + }else if (found && subvp_pipe) { main_timing = &subvp_pipe->stream->timing; phantom_timing = &subvp_pipe->stream->mall_stream_config.paired_stream->timing; vblank_timing = &context->res_ctx.pipe_ctx[vblank_index].stream->timing;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 38/772 Bluetooth: hci_sync: Add helper functions to manipulate cmd_sync queue
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luiz Augusto von Dentz <[email protected]>
[ Upstream commit 505ea2b295929e7be2b4e1bc86ee31cb7862fb01 ]
This adds functions to queue, dequeue and lookup into the cmd_sync list.
--- include/net/bluetooth/hci_sync.h | 12 +++ net/bluetooth/hci_sync.c | 132 +++++++++++++++++++++++++++++-- 2 files changed, 136 insertions(+), 8 deletions(-)
include/net/bluetooth/hci_sync.h +12 -0
@@ -47,6 +47,18 @@ int hci_cmd_sync_submit(struct hci_dev *hdev, hci_cmd_sync_work_func_t func, void *data, hci_cmd_sync_work_destroy_t destroy);int hci_cmd_sync_queue (struct hci_dev *hdev,hci_cmd_sync_work_func_t func,void *data,hci_cmd_sync_work_destroy_t destroy); +struct hci_cmd_sync_work_entry * +hci_cmd_sync_lookup_entry (struct hci_dev *hdev,hci_cmd_sync_work_func_t func, +void *data,hci_cmd_sync_work_destroy_t destroy); +int hci_cmd_sync_queue_once (struct hci_dev *hdev,hci_cmd_sync_work_func_t func, +void *data,hci_cmd_sync_work_destroy_t destroy); +void hci_cmd_sync_cancel_entry (struct hci_dev *hdev, +struct hci_cmd_sync_work_entry *entry); +bool hci_cmd_sync_dequeue (struct hci_dev *hdev,hci_cmd_sync_work_func_t func, +void *data,hci_cmd_sync_work_destroy_t destroy); +bool hci_cmd_sync_dequeue_once (struct hci_dev *hdev, +hci_cmd_sync_work_func_t func,void *data, +hci_cmd_sync_work_destroy_t destroy);int hci_update_eir_sync (struct hci_dev *hdev);int hci_update_class_sync (struct hci_dev *hdev);
net/bluetooth/hci_sync.c +124 -8
156 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 39/772 Bluetooth: MGMT: Fix possible crash on mgmt_index_removed
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luiz Augusto von Dentz <[email protected]>
[ Upstream commit f53e1c9c726d83092167f2226f32bd3b73f26c21 ]
If mgmt_index_removed is called while there are commands queued on cmd_sync it could lead to crashes like the bellow trace:
0x0000053D: __list_del_entry_valid_or_report+0x98/0xdc 0x0000053D: mgmt_pending_remove+0x18/0x58 [bluetooth] 0x0000053E: mgmt_remove_adv_monitor_complete+0x80/0x108 [bluetooth] 0x0000053E: hci_cmd_sync_work+0xbc/0x164 [bluetooth]
So while handling mgmt_index_removed this attempts to dequeue commands passed as user_data to cmd_sync.
--- net/bluetooth/mgmt.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-)
net/bluetooth/mgmt.c +14 -9
@@ -1457,10 +1457,15 @@ static void cmd_status_rsp(struct mgmt_pending_cmd *cmd, void *data)static void cmd_complete_rsp (struct mgmt_pending_cmd *cmd,void *data) { -if (cmd->cmd_complete) { -u8 *status = data; +struct cmd_lookup *match = data; + +/* dequeue cmd_sync entries using cmd as data as that is about to be +* removed/freed. +*/ +hci_cmd_sync_dequeue (match->hdev,NULL , cmd,NULL ); - cmd->cmd_complete (cmd, *status); +if (cmd->cmd_complete) { + cmd->cmd_complete (cmd, match->mgmt_status);mgmt_pending_remove (cmd);return ;
@@ -9424,14 +9429,14 @@ void mgmt_index_added(struct hci_dev *hdev)void mgmt_index_removed (struct hci_dev *hdev) {struct mgmt_ev_ext_index ev; -u8 status =MGMT_STATUS_INVALID_INDEX ; +struct cmd_lookup match = {NULL , hdev,MGMT_STATUS_INVALID_INDEX };if (test_bit (HCI_QUIRK_RAW_DEVICE , &hdev->quirks))return ;switch (hdev->dev_type) {case HCI_PRIMARY : -mgmt_pending_foreach (0 , hdev, cmd_complete_rsp, &status); +mgmt_pending_foreach (0 , hdev, cmd_complete_rsp, &match);if (hci_dev_test_flag (hdev,HCI_UNCONFIGURED )) { mgmt_index_event(MGMT_EV_UNCONF_INDEX_REMOVED, hdev,
@@ -9489,7 +9494,7 @@ void mgmt_power_on(struct hci_dev *hdev, int err)void __mgmt_power_off (struct hci_dev *hdev) {struct cmd_lookup match = {NULL , hdev }; -u8 status, zero_cod[] = {0 ,0 ,0 }; +u8 zero_cod[] = {0 ,0 ,0 };mgmt_pending_foreach (MGMT_OP_SET_POWERED , hdev, settings_rsp, &match);
@@ -9501,11 +9506,11 @@ void __mgmt_power_off(struct hci_dev *hdev)* status responses. */ if (hci_dev_test_flag (hdev,HCI_UNREGISTER )) - status =MGMT_STATUS_INVALID_INDEX ; + match.mgmt_status =MGMT_STATUS_INVALID_INDEX ;else - status =MGMT_STATUS_NOT_POWERED ; + match.mgmt_status =MGMT_STATUS_NOT_POWERED ; -mgmt_pending_foreach (0 , hdev, cmd_complete_rsp, &status); +mgmt_pending_foreach (0 , hdev, cmd_complete_rsp, &match);if (memcmp (hdev->dev_class, zero_cod,sizeof (zero_cod)) !=0 ) { mgmt_limited_event(MGMT_EV_CLASS_OF_DEV_CHANGED, hdev,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 40/772 fbdev: efifb: Register sysfs groups through driver core
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Weißschuh <[email protected]>
[ Upstream commit 95cdd538e0e5677efbdf8aade04ec098ab98f457 ]
The driver core can register and cleanup sysfs groups already. Make use of that functionality to simplify the error handling and cleanup.
Also avoid a UAF race during unregistering where the sysctl attributes were usable after the info struct was freed.
--- drivers/video/fbdev/efifb.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)
drivers/video/fbdev/efifb.c +2 -9
@@ -570,15 +570,10 @@ static int efifb_probe(struct platform_device *dev)break ; } - err =sysfs_create_groups (&dev->dev.kobj, efifb_groups); -if (err) { -pr_err ("efifb: cannot add sysfs attrs\n" ); - goto err_unmap; - } err =fb_alloc_cmap (&info->cmap,256 ,0 );if (err <0 ) {pr_err ("efifb: cannot allocate colormap\n" ); - goto err_groups; + goto err_unmap; }if (efifb_pci_dev)
@@ -597,8 +592,6 @@ static int efifb_probe(struct platform_device *dev)pm_runtime_put (&efifb_pci_dev->dev);fb_dealloc_cmap (&info->cmap); -err_groups: -sysfs_remove_groups (&dev->dev.kobj, efifb_groups); err_unmap:if (mem_flags & (EFI_MEMORY_UC |EFI_MEMORY_WC ))iounmap (info->screen_base);
@@ -618,7 +611,6 @@ static int efifb_remove(struct platform_device *pdev)/* efifb_destroy takes care of info cleanup */ unregister_framebuffer (info); -sysfs_remove_groups (&pdev->dev.kobj, efifb_groups);return 0 ; }
@@ -626,6 +618,7 @@ static int efifb_remove(struct platform_device *pdev)static struct platform_driver efifb_driver = { .driver = { .name ="efi-framebuffer" , + .dev_groups = efifb_groups, }, .probe = efifb_probe, .remove = efifb_remove,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 41/772 mptcp: fix possible integer overflow in mptcp_reset_tout_timer
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Kandybka <[email protected]>
commit b169e76ebad22cbd055101ee5aa1a7bed0e66606 upstream.
In 'mptcp_reset_tout_timer', promote 'probe_timestamp' to unsigned long to avoid possible integer overflow. Compile tested only.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
[ Conflict in this version because commit d866ae9aaa43 ("mptcp: add a
new sysctl for make after break timeout") is not in this version, and replaced TCP_TIMEWAIT_LEN in the expression. The fix can still be applied the same way: by forcing a cast to unsigned long for the first item. ]
--- net/mptcp/protocol.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/mptcp/protocol.c +2 -2
@@ -2708,8 +2708,8 @@ void mptcp_reset_tout_timer(struct mptcp_sock *msk, unsigned long fail_tout)if (!fail_tout && !inet_csk (sk)->icsk_mtup.probe_timestamp)return ; - close_timeout =inet_csk (sk)->icsk_mtup.probe_timestamp - tcp_jiffies32 + jiffies + -TCP_TIMEWAIT_LEN ; + close_timeout = (unsigned long )inet_csk (sk)->icsk_mtup.probe_timestamp - + tcp_jiffies32 + jiffies +TCP_TIMEWAIT_LEN ;/* the close timeout takes precedence on the fail one, and here at least one of * them is active
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 42/772 wifi: rtw89: avoid to add interface to list twice when SER
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chih-Kang Chang <[email protected]>
[ Upstream commit 7dd5d2514a8ea58f12096e888b0bd050d7eae20a ]
If SER L2 occurs during the WoWLAN resume flow, the add interface flow is triggered by ieee80211_reconfig(). However, due to rtw89_wow_resume() return failure, it will cause the add interface flow to be executed again, resulting in a double add list and causing a kernel panic. Therefore, we have added a check to prevent double adding of the list.
list_add double add: new=ffff99d6992e2010, prev=ffff99d6992e2010, next=ffff99d695302628.
------------[ cut here ]------------ kernel BUG at lib/list_debug.c:37! invalid opcode: 0000 [#1] PREEMPT SMP NOPTI CPU: 0 PID: 9 Comm: kworker/0:1 Tainted: G W O 6.6.30-02659-gc18865c4dfbd #1 770df2933251a0e3c888ba69d1053a817a6376a7 Hardware name: HP Grunt/Grunt, BIOS Google_Grunt.11031.169.0 06/24/2021 Workqueue: events_freezable ieee80211_restart_work [mac80211] RIP: 0010:__list_add_valid_or_report+0x5e/0xb0 Code: c7 74 18 48 39 ce 74 13 b0 01 59 5a 5e 5f 41 58 41 59 41 5a 5d e9 e2 d6 03 00 cc 48 c7 c7 8d 4f 17 83 48 89 c2 e8 02 c0 00 00 <0f> 0b 48 c7 c7 aa 8c 1c 83 e8 f4 bf 00 00 0f 0b 48 c7 c7 c8 bc 12 RSP: 0018:ffffa91b8007bc50 EFLAGS: 00010246 RAX: 0000000000000058 RBX: ffff99d6992e0900 RCX: a014d76c70ef3900 RDX: ffffa91b8007bae8 RSI: 00000000ffffdfff RDI: 0000000000000001 RBP: ffffa91b8007bc88 R08: 0000000000000000 R09: ffffa91b8007bae0 R10: 00000000ffffdfff R11: ffffffff83a79800 R12: ffff99d695302060 R13: ffff99d695300900 R14: ffff99d6992e1be0 R15: ffff99d6992e2010 FS: 0000000000000000(0000) GS:ffff99d6aac00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000078fbdba43480 CR3: 000000010e464000 CR4: 00000000001506f0 Call Trace: <TASK> ? __die_body+0x1f/0x70 ? die+0x3d/0x60 ? do_trap+0xa4/0x110 ? __list_add_valid_or_report+0x5e/0xb0 ? do_error_trap+0x6d/0x90 ? __list_add_valid_or_report+0x5e/0xb0 ? handle_invalid_op+0x30/0x40 ? __list_add_valid_or_report+0x5e/0xb0 ? exc_invalid_op+0x3c/0x50 ? asm_exc_invalid_op+0x16/0x20 ? __list_add_valid_or_report+0x5e/0xb0 rtw89_ops_add_interface+0x309/0x310 [rtw89_core 7c32b1ee6854761c0321027c8a58c5160e41f48f] drv_add_interface+0x5c/0x130 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] ieee80211_reconfig+0x241/0x13d0 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] ? finish_wait+0x3e/0x90 ? synchronize_rcu_expedited+0x174/0x260 ? sync_rcu_exp_done_unlocked+0x50/0x50 ? wake_bit_function+0x40/0x40 ieee80211_restart_work+0xf0/0x140 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] process_scheduled_works+0x1e5/0x480 worker_thread+0xea/0x1e0 kthread+0xdb/0x110 ? move_linked_works+0x90/0x90 ? kthread_associate_blkcg+0xa0/0xa0 ret_from_fork+0x3b/0x50 ? kthread_associate_blkcg+0xa0/0xa0 ret_from_fork_asm+0x11/0x20 </TASK> Modules linked in: dm_integrity async_xor xor async_tx lz4 lz4_compress zstd zstd_compress zram zsmalloc rfcomm cmac uinput algif_hash algif_skcipher af_alg btusb btrtl iio_trig_hrtimer industrialio_sw_trigger btmtk industrialio_configfs btbcm btintel uvcvideo videobuf2_vmalloc iio_trig_sysfs videobuf2_memops videobuf2_v4l2 videobuf2_common uvc snd_hda_codec_hdmi veth snd_hda_intel snd_intel_dspcfg acpi_als snd_hda_codec industrialio_triggered_buffer kfifo_buf snd_hwdep industrialio i2c_piix4 snd_hda_core designware_i2s ip6table_nat snd_soc_max98357a xt_MASQUERADE xt_cgroup snd_soc_acp_rt5682_mach fuse rtw89_8922ae(O) rtw89_8922a(O) rtw89_pci(O) rtw89_core(O) 8021q mac80211(O) bluetooth ecdh_generic ecc cfg80211 r8152 mii joydev gsmi: Log Shutdown Reason 0x03 ---[ end trace 0000000000000000 ]---
--- drivers/net/wireless/realtek/rtw89/mac80211.c | 4 +++- drivers/net/wireless/realtek/rtw89/util.h | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-)
drivers/net/wireless/realtek/rtw89/mac80211.c +3 -1
@@ -105,7 +105,9 @@ static int rtw89_ops_add_interface(struct ieee80211_hw *hw,mutex_lock (&rtwdev->mutex); rtwvif->rtwdev = rtwdev; -list_add_tail (&rtwvif->list, &rtwdev->rtwvifs_list); +if (!rtw89_rtwvif_in_list (rtwdev, rtwvif)) +list_add_tail (&rtwvif->list, &rtwdev->rtwvifs_list); +INIT_WORK (&rtwvif->update_beacon_work, rtw89_core_update_beacon_work);rtw89_leave_ps_mode (rtwdev);
drivers/net/wireless/realtek/rtw89/util.h +18 -0
@@ -14,6 +14,24 @@#define rtw89_for_each_rtwvif (rtwdev, rtwvif) \ list_for_each_entry(rtwvif, &(rtwdev)->rtwvifs_list, list) +/* Before adding rtwvif to list, we need to check if it already exist, beacase +* in some case such as SER L2 happen during WoWLAN flow, calling reconfig +* twice cause the list to be added twice. +*/ +static inline bool rtw89_rtwvif_in_list (struct rtw89_dev *rtwdev, +struct rtw89_vif *new) +{ +struct rtw89_vif *rtwvif; + +lockdep_assert_held (&rtwdev->mutex); + +rtw89_for_each_rtwvif (rtwdev, rtwvif) +if (rtwvif == new) +return true; + +return false; +} +/* The result of negative dividend and positive divisor is undefined, but it * should be one case of round-down or round-up. So, make it round-down if the * result is round-up.
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 43/772 drm/amd/display: Initialize denominators default to 1
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <[email protected]>
[ Upstream commit b995c0a6de6c74656a0c39cd57a0626351b13e3c ]
[WHAT & HOW]
Variables used as denominators and maybe not assigned to other values, should not be 0. Change their default to 1 so they are never 0.
This fixes 10 DIVIDE_BY_ZERO issues reported by Coverity.
[Xiangyu: Bp to fix CVE: CVE-2024-49899
Discard the dml2_core/dml2_core_shared.c due to this file no exists]
--- .../gpu/drm/amd/display/dc/dml/dcn20/display_rq_dlg_calc_20.c | 2 +- drivers/gpu/drm/amd/display/dc/dml/dml1_display_rq_dlg_calc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_rq_dlg_calc_20.c +1 -1
@@ -78,7 +78,7 @@ static void calculate_ttu_cursor(struct display_mode_lib *mode_lib,static unsigned int get_bytes_per_element (enum source_format_class source_format,bool is_chroma) { -unsigned int ret_val =0 ; +unsigned int ret_val =1 ;if (source_format == dm_444_16) {if (!is_chroma)
drivers/gpu/drm/amd/display/dc/dml/dml1_display_rq_dlg_calc.c +1 -1
@@ -39,7 +39,7 @@static unsigned int get_bytes_per_element (enum source_format_class source_format,bool is_chroma) { -unsigned int ret_val =0 ; +unsigned int ret_val =1 ;if (source_format == dm_444_16) {if (!is_chroma)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 44/772 fs/inode: Prevent dump_mapping() accessing invalid dentry.d_name.name
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Zhijian <[email protected]>
[ Upstream commit 7f7b850689ac06a62befe26e1fd1806799e7f152 ]
It's observed that a crash occurs during hot-remove a memory device, in which user is accessing the hugetlb. See calltrace as following:
------------[ cut here ]------------ WARNING: CPU: 1 PID: 14045 at arch/x86/mm/fault.c:1278 do_user_addr_fault+0x2a0/0x790 Modules linked in: kmem device_dax cxl_mem cxl_pmem cxl_port cxl_pci dax_hmem dax_pmem nd_pmem cxl_acpi nd_btt cxl_core crc32c_intel nvme virtiofs fuse nvme_core nfit libnvdimm dm_multipath scsi_dh_rdac scsi_dh_emc s mirror dm_region_hash dm_log dm_mod CPU: 1 PID: 14045 Comm: daxctl Not tainted 6.10.0-rc2-lizhijian+ #492 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 RIP: 0010:do_user_addr_fault+0x2a0/0x790 Code: 48 8b 00 a8 04 0f 84 b5 fe ff ff e9 1c ff ff ff 4c 89 e9 4c 89 e2 be 01 00 00 00 bf 02 00 00 00 e8 b5 ef 24 00 e9 42 fe ff ff <0f> 0b 48 83 c4 08 4c 89 ea 48 89 ee 4c 89 e7 5b 5d 41 5c 41 5d 41 RSP: 0000:ffffc90000a575f0 EFLAGS: 00010046 RAX: ffff88800c303600 RBX: 0000000000000000 RCX: 0000000000000000 RDX: 0000000000001000 RSI: ffffffff82504162 RDI: ffffffff824b2c36 RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: ffffc90000a57658 R13: 0000000000001000 R14: ffff88800bc2e040 R15: 0000000000000000 FS: 00007f51cb57d880(0000) GS:ffff88807fd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000001000 CR3: 00000000072e2004 CR4: 00000000001706f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> ? __warn+0x8d/0x190 ? do_user_addr_fault+0x2a0/0x790 ? report_bug+0x1c3/0x1d0 ? handle_bug+0x3c/0x70 ? exc_invalid_op+0x14/0x70 ? asm_exc_invalid_op+0x16/0x20 ? do_user_addr_fault+0x2a0/0x790 ? exc_page_fault+0x31/0x200 exc_page_fault+0x68/0x200 <...snip...> BUG: unable to handle page fault for address: 0000000000001000 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 800000000ad92067 P4D 800000000ad92067 PUD 7677067 PMD 0 Oops: Oops: 0000 [#1] PREEMPT SMP PTI ---[ end trace 0000000000000000 ]--- BUG: unable to handle page fault for address: 0000000000001000 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 800000000ad92067 P4D 800000000ad92067 PUD 7677067 PMD 0 Oops: Oops: 0000 [#1] PREEMPT SMP PTI CPU: 1 PID: 14045 Comm: daxctl Kdump: loaded Tainted: G W 6.10.0-rc2-lizhijian+ #492 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 RIP: 0010:dentry_name+0x1f4/0x440 <...snip...> ? dentry_name+0x2fa/0x440 vsnprintf+0x1f3/0x4f0 vprintk_store+0x23a/0x540 vprintk_emit+0x6d/0x330 _printk+0x58/0x80 dump_mapping+0x10b/0x1a0 ? __pfx_free_object_rcu+0x10/0x10 __dump_page+0x26b/0x3e0 ? vprintk_emit+0xe0/0x330 ? _printk+0x58/0x80 ? dump_page+0x17/0x50 dump_page+0x17/0x50 do_migrate_range+0x2f7/0x7f0 ? do_migrate_range+0x42/0x7f0 ? offline_pages+0x2f4/0x8c0 offline_pages+0x60a/0x8c0 memory_subsys_offline+0x9f/0x1c0 ? lockdep_hardirqs_on+0x77/0x100 ? _raw_spin_unlock_irqrestore+0x38/0x60 device_offline+0xe3/0x110 state_store+0x6e/0xc0 kernfs_fop_write_iter+0x143/0x200 vfs_write+0x39f/0x560 ksys_write+0x65/0xf0 do_syscall_64+0x62/0x130
Previously, some sanity check have been done in dump_mapping() before the print facility parsing '%pd' though, it's still possible to run into an invalid dentry.d_name.name.
Since dump_mapping() only needs to dump the filename only, retrieve it by itself in a safer way to prevent an unnecessary crash.
Note that either retrieving the filename with '%pd' or strncpy_from_kernel_nofault(), the filename could be unreliable.
[Xiangyu: Bp to fix CVE: CVE-2024-49934, modified strscpy step due to 6.1/6.6 need pass the max len to strscpy]
--- fs/inode.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
fs/inode.c +7 -3
@@ -593,6 +593,7 @@ void dump_mapping(const struct address_space *mapping)struct hlist_node *dentry_first;struct dentry *dentry_ptr;struct dentry dentry; +char fname[64 ] = {};unsigned long ino;/*
@@ -628,11 +629,14 @@ void dump_mapping(const struct address_space *mapping)return ; } +if (strncpy_from_kernel_nofault (fname, dentry.d_name.name,63 ) <0 ) +strscpy (fname,"<invalid>" ,63 );/* -* if dentry is corrupted, the %pd handler may still crash, -* but it's unlikely that we reach here with a corrupt mapping +* Even if strncpy_from_kernel_nofault() succeeded, +* the fname could be unreliable */ -pr_warn ("aops:%ps ino:%lx dentry name:\"%pd\"\n" , a_ops, ino, &dentry); +pr_warn ("aops:%ps ino:%lx dentry name(?):\"%s\"\n" , + a_ops, ino, fname); }void clear_inode (struct inode *inode)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 45/772 x86/barrier: Do not serialize MSR accesses on AMD
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Borislav Petkov (AMD) <[email protected]>
commit 04c3024560d3a14acd18d0a51a1d0a89d29b7eb5 upstream.
AMD does not have the requirement for a synchronization barrier when acccessing a certain group of MSRs. Do not incur that unnecessary penalty there.
There will be a CPUID bit which explicitly states that a MFENCE is not needed. Once that bit is added to the APM, this will be extended with it.
While at it, move to processor.h to avoid include hell. Untangling that file properly is a matter for another day.
Some notes on the performance aspect of why this is relevant, courtesy of Kishon VijayAbraham <[email protected]>:
On a AMD Zen4 system with 96 cores, a modified ipi-bench[1] on a VM shows x2AVIC IPI rate is 3% to 4% lower than AVIC IPI rate. The ipi-bench is modified so that the IPIs are sent between two vCPUs in the same CCX. This also requires to pin the vCPU to a physical core to prevent any latencies. This simulates the use case of pinning vCPUs to the thread of a single CCX to avoid interrupt IPI latency.
In order to avoid run-to-run variance (for both x2AVIC and AVIC), the below configurations are done:
1) Disable Power States in BIOS (to prevent the system from going to lower power state)
2) Run the system at fixed frequency 2500MHz (to prevent the system from increasing the frequency when the load is more)
With the above configuration:
*) Performance measured using ipi-bench for AVIC:
Average Latency: 1124.98ns [Time to send IPI from one vCPU to another vCPU]
Cumulative throughput: 42.6759M/s [Total number of IPIs sent in a second from
48 vCPUs simultaneously]
*) Performance measured using ipi-bench for x2AVIC:
Average Latency: 1172.42ns [Time to send IPI from one vCPU to another vCPU]
Cumulative throughput: 40.9432M/s [Total number of IPIs sent in a second from
48 vCPUs simultaneously]
Quoted 1 line
From above, x2AVIC latency is ~4% more than AVIC. However, the expectation is
x2AVIC performance to be better or equivalent to AVIC. Upon analyzing the perf captures, it is observed significant time is spent in weak_wrmsr_fence() invoked by x2apic_send_IPI().
With the fix to skip weak_wrmsr_fence()
*) Performance measured using ipi-bench for x2AVIC:
Average Latency: 1117.44ns [Time to send IPI from one vCPU to another vCPU]
Cumulative throughput: 42.9608M/s [Total number of IPIs sent in a second from
48 vCPUs simultaneously]
Comparing the performance of x2AVIC with and without the fix, it can be seen the performance improves by ~4%.
Performance captured using an unmodified ipi-bench using the 'mesh-ipi' option with and without weak_wrmsr_fence() on a Zen4 system also showed significant performance improvement without weak_wrmsr_fence(). The 'mesh-ipi' option ignores CCX or CCD and just picks random vCPU.
Average throughput (10 iterations) with weak_wrmsr_fence(),
Cumulative throughput: 4933374 IPI/s
Average throughput (10 iterations) without weak_wrmsr_fence(),
Cumulative throughput: 6355156 IPI/s
[1] https://github.com/bytedance/kvm-utils/tree/master/microbenchmark/ipi-bench
--- arch/x86/include/asm/barrier.h | 18 ------------------ arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/processor.h | 18 ++++++++++++++++++ arch/x86/kernel/cpu/amd.c | 3 +++ arch/x86/kernel/cpu/common.c | 7 +++++++ arch/x86/kernel/cpu/hygon.c | 3 +++ 6 files changed, 32 insertions(+), 18 deletions(-)
arch/x86/include/asm/barrier.h +0 -18
@@ -81,22 +81,4 @@ do { \#include <asm-generic/barrier.h> -/* -* Make previous memory operations globally visible before -* a WRMSR. -* -* MFENCE makes writes visible, but only affects load/store -* instructions. WRMSR is unfortunately not a load/store -* instruction and is unaffected by MFENCE. The LFENCE ensures -* that the WRMSR is not reordered. -* -* Most WRMSRs are full serializing instructions themselves and -* do not require this barrier. This is only required for the -* IA32_TSC_DEADLINE and X2APIC MSRs. -*/ -static inline void weak_wrmsr_fence (void ) -{ - asmvolatile ("mfence; lfence" : : :"memory" ); -} -#endif /* _ASM_X86_BARRIER_H */
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -311,6 +311,7 @@#define X86_FEATURE_SRSO (11*32+24)/* "" AMD BTB untrain RETs */ #define X86_FEATURE_SRSO_ALIAS (11*32+25)/* "" AMD BTB untrain RETs through aliasing */ #define X86_FEATURE_IBPB_ON_VMEXIT (11*32+26)/* "" Issue an IBPB only on VMEXIT */ +#define X86_FEATURE_APIC_MSRS_FENCE (11*32+27)/* "" IA32_TSC_DEADLINE and X2APIC MSRs need fencing */ /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */
arch/x86/include/asm/processor.h +18 -0
@@ -868,4 +868,22 @@ bool arch_is_platform_page(u64 paddr);extern bool gds_ucode_mitigated (void ); +/* +* Make previous memory operations globally visible before +* a WRMSR. +* +* MFENCE makes writes visible, but only affects load/store +* instructions. WRMSR is unfortunately not a load/store +* instruction and is unaffected by MFENCE. The LFENCE ensures +* that the WRMSR is not reordered. +* +* Most WRMSRs are full serializing instructions themselves and +* do not require this barrier. This is only required for the +* IA32_TSC_DEADLINE and X2APIC MSRs. +*/ +static inline void weak_wrmsr_fence (void ) +{ +alternative ("mfence; lfence" ,"" ,ALT_NOT (X86_FEATURE_APIC_MSRS_FENCE )); +} +#endif /* _ASM_X86_PROCESSOR_H */
arch/x86/kernel/cpu/amd.c +3 -0
@@ -1133,6 +1133,9 @@ static void init_amd(struct cpuinfo_x86 *c)if (!cpu_has (c,X86_FEATURE_HYPERVISOR ) &&cpu_has_amd_erratum (c, amd_erratum_1485))msr_set_bit (MSR_ZEN4_BP_CFG ,MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT ); + +/* AMD CPUs don't need fencing after x2APIC/TSC_DEADLINE MSR writes. */ +clear_cpu_cap (c,X86_FEATURE_APIC_MSRS_FENCE ); }#ifdef CONFIG_X86_32
arch/x86/kernel/cpu/common.c +7 -0
@@ -1883,6 +1883,13 @@ static void identify_cpu(struct cpuinfo_x86 *c) c->apicid = apic->phys_pkg_id (c->initial_apicid,0 );#endif + +/* +* Set default APIC and TSC_DEADLINE MSR fencing flag. AMD and +* Hygon will clear it in ->c_init() below. +*/ +set_cpu_cap (c,X86_FEATURE_APIC_MSRS_FENCE ); +/* * Vendor-specific initialization. In this section we * canonicalize the feature flags, meaning if there are
arch/x86/kernel/cpu/hygon.c +3 -0
@@ -347,6 +347,9 @@ static void init_hygon(struct cpuinfo_x86 *c)set_cpu_bug (c,X86_BUG_SYSRET_SS_ATTRS );check_null_seg_clears_base (c); + +/* Hygon CPUs don't need fencing after x2APIC/TSC_DEADLINE MSR writes. */ +clear_cpu_cap (c,X86_FEATURE_APIC_MSRS_FENCE ); }static void cpu_detect_tlb_hygon (struct cpuinfo_x86 *c)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 46/772 kselftest/arm64: mte: fix printf type warnings about __u64
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andre Przywara <[email protected]>
[ Upstream commit 7e893dc81de3e342156389ea0b83ec7d07f25281 ]
When printing the signal context's PC, we use a "%lx" format specifier, which matches the common userland (glibc's) definition of uint64_t as an "unsigned long". However the structure in question is defined in a kernel uapi header, which uses a self defined __u64 type, and the arm64 kernel headers define this using "int-ll64.h", so it becomes an "unsigned long long". This mismatch leads to the usual compiler warning.
The common fix would be to use "PRIx64", but because this is defined by the userland's toolchain libc headers, it wouldn't match as well. Since we know the exact type of __u64, just use "%llx" here instead, to silence this warning.
This also fixes a more severe typo: "$lx" is not a valid format specifier.
--- tools/testing/selftests/arm64/mte/mte_common_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/testing/selftests/arm64/mte/mte_common_util.c +2 -2
@@ -38,7 +38,7 @@ void mte_default_handler(int signum, siginfo_t *si, void *uc)if (cur_mte_cxt.trig_si_code == si->si_code) cur_mte_cxt.fault_valid = true;else -ksft_print_msg ("Got unexpected SEGV_MTEAERR at pc=$lx, fault addr=%lx\n" , +ksft_print_msg ("Got unexpected SEGV_MTEAERR at pc=%llx, fault addr=%lx\n" , ((ucontext_t *)uc)->uc_mcontext.pc, addr);return ;
@@ -64,7 +64,7 @@ void mte_default_handler(int signum, siginfo_t *si, void *uc)exit (1 ); } }else if (signum ==SIGBUS ) { -ksft_print_msg ("INFO: SIGBUS signal at pc=%lx, fault addr=%lx, si_code=%lx\n" , +ksft_print_msg ("INFO: SIGBUS signal at pc=%llx, fault addr=%lx, si_code=%x\n" , ((ucontext_t *)uc)->uc_mcontext.pc, addr, si->si_code); if ((cur_mte_cxt.trig_range >= 0 && addr >= MT_CLEAR_TAG(cur_mte_cxt.trig_addr) &&
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 47/772 kselftest/arm64: mte: fix printf type warnings about longs
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andre Przywara <[email protected]>
[ Upstream commit 96dddb7b9406259baace9a1831e8da155311be6f ]
When checking MTE tags, we print some diagnostic messages when the tests fail. Some variables uses there are "longs", however we only use "%x" for the format specifier.
Update the format specifiers to "%lx", to match the variable types they are supposed to print.
--- tools/testing/selftests/arm64/mte/check_tags_inclusion.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/testing/selftests/arm64/mte/check_tags_inclusion.c +2 -2
@@ -65,7 +65,7 @@ static int check_single_included_tags(int mem_type, int mode) ptr =mte_insert_tags (ptr,BUFFER_SIZE );/* Check tag value */ if (MT_FETCH_TAG ((uintptr_t )ptr) == tag) { -ksft_print_msg ("FAIL: wrong tag = 0x%x with include mask=0x%x\n" , +ksft_print_msg ("FAIL: wrong tag = 0x%lx with include mask=0x%x\n" ,MT_FETCH_TAG ((uintptr_t )ptr),MT_INCLUDE_VALID_TAG (tag)); result =KSFT_FAIL ;
@@ -97,7 +97,7 @@ static int check_multiple_included_tags(int mem_type, int mode) ptr =mte_insert_tags (ptr,BUFFER_SIZE );/* Check tag value */ if (MT_FETCH_TAG ((uintptr_t )ptr) < tag) { -ksft_print_msg ("FAIL: wrong tag = 0x%x with include mask=0x%x\n" , +ksft_print_msg ("FAIL: wrong tag = 0x%lx with include mask=0x%lx\n" ,MT_FETCH_TAG ((uintptr_t )ptr),MT_INCLUDE_VALID_TAGS (excl_mask)); result =KSFT_FAIL ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 48/772 s390/cio: Do not unregister the subchannel based on DNV
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vineeth Vijayan <[email protected]>
[ Upstream commit 8c58a229688ce3a097b3b1a2efe1b4f5508c2123 ]
Starting with commit 2297791c92d0 ("s390/cio: dont unregister subchannel from child-drivers"), CIO does not unregister subchannels when the attached device is invalid or unavailable. Instead, it allows subchannels to exist without a connected device. However, if the DNV value is 0, such as, when all the CHPIDs of a subchannel are configured in standby state, the subchannel is unregistered, which contradicts the current subchannel specification.
Update the logic so that subchannels are not unregistered based on the DNV value. Also update the SCHIB information even if the DNV bit is zero.
--- drivers/s390/cio/cio.c | 6 +++++- drivers/s390/cio/device.c | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-)
drivers/s390/cio/cio.c +5 -1
@@ -459,10 +459,14 @@ int cio_update_schib(struct subchannel *sch) {struct schib schib; -if (stsch (sch->schid, &schib) || !css_sch_is_valid (&schib)) +if (stsch (sch->schid, &schib))return -ENODEV ;memcpy (&sch->schib, &schib,sizeof (schib)); + +if (!css_sch_is_valid (&schib)) +return -EACCES ; +return 0 ; }EXPORT_SYMBOL_GPL (cio_update_schib);
drivers/s390/cio/device.c +17 -1
@@ -1378,14 +1378,18 @@ enum io_sch_action {IO_SCH_VERIFY ,IO_SCH_DISC ,IO_SCH_NOP , + IO_SCH_ORPH_CDEV, };static enum io_sch_action sch_get_action (struct subchannel *sch) {struct ccw_device *cdev; +int rc; cdev =sch_get_cdev (sch); -if (cio_update_schib (sch)) { + rc =cio_update_schib (sch); + +if (rc == -ENODEV ) {/* Not operational. */ if (!cdev)return IO_SCH_UNREG ;
@@ -1393,6 +1397,16 @@ static enum io_sch_action sch_get_action(struct subchannel *sch)return IO_SCH_UNREG ;return IO_SCH_ORPH_UNREG ; } + +/* Avoid unregistering subchannels without working device. */ +if (rc == -EACCES ) { +if (!cdev) +return IO_SCH_NOP ; +if (ccw_device_notify (cdev,CIO_GONE ) !=NOTIFY_OK ) +return IO_SCH_UNREG_CDEV ; +return IO_SCH_ORPH_CDEV ; + } +/* Operational. */ if (!cdev)return IO_SCH_ATTACH ;
@@ -1462,6 +1476,7 @@ static int io_subchannel_sch_event(struct subchannel *sch, int process) rc =0 ; goto out_unlock;case IO_SCH_ORPH_UNREG : +case IO_SCH_ORPH_CDEV :case IO_SCH_ORPH_ATTACH :ccw_device_set_disconnected (cdev);break ;
@@ -1493,6 +1508,7 @@ static int io_subchannel_sch_event(struct subchannel *sch, int process)/* Handle attached ccw device. */ switch (action) {case IO_SCH_ORPH_UNREG : +case IO_SCH_ORPH_CDEV :case IO_SCH_ORPH_ATTACH :/* Move ccw device to orphanage. */ rc =ccw_device_move_to_orph (cdev);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 49/772 brd: defer automatic disk creation until module initialization succeeds
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yang Erkun <[email protected]>
[ Upstream commit 826cc42adf44930a633d11a5993676d85ddb0842 ]
My colleague Wupeng found the following problems during fault injection:
BUG: unable to handle page fault for address: fffffbfff809d073 PGD 6e648067 P4D 123ec8067 PUD 123ec4067 PMD 100e38067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 5 UID: 0 PID: 755 Comm: modprobe Not tainted 6.12.0-rc3+ #17 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014 RIP: 0010:__asan_load8+0x4c/0xa0 ... Call Trace: <TASK> blkdev_put_whole+0x41/0x70 bdev_release+0x1a3/0x250 blkdev_release+0x11/0x20 __fput+0x1d7/0x4a0 task_work_run+0xfc/0x180 syscall_exit_to_user_mode+0x1de/0x1f0 do_syscall_64+0x6b/0x170 entry_SYSCALL_64_after_hwframe+0x76/0x7e
loop_init() is calling loop_add() after __register_blkdev() succeeds and is ignoring disk_add() failure from loop_add(), for loop_add() failure is not fatal and successfully created disks are already visible to bdev_open().
brd_init() is currently calling brd_alloc() before __register_blkdev() succeeds and is releasing successfully created disks when brd_init() returns an error. This can cause UAF for the latter two case:
case 1:
T1:
modprobe brd
brd_init
brd_alloc(0) // success
add_disk
disk_scan_partitions
bdev_file_open_by_dev // alloc file fput // won't free until back to userspace
brd_alloc(1) // failed since mem alloc error inject
// error path for modprobe will release code segment // back to userspace
__fput
blkdev_release
bdev_release
blkdev_put_whole
bdev->bd_disk->fops->release // fops is freed now, UAF!case 2:
T1: T2:
modprobe brd
brd_init
brd_alloc(0) // success
open(/dev/ram0)
brd_alloc(1) // fail// error path for modprobe
close(/dev/ram0)
...
/* UAF! */
bdev->bd_disk->fops->releaseFix this problem by following what loop_init() does. Besides, reintroduce brd_devices_mutex to help serialize modifications to brd_list.
--- drivers/block/brd.c | 66 ++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 22 deletions(-)
drivers/block/brd.c +44 -22
@@ -368,8 +368,40 @@ __setup("ramdisk_size=", ramdisk_size);* (should share code eventually). */ static LIST_HEAD (brd_devices); +static DEFINE_MUTEX (brd_devices_mutex);static struct dentry *brd_debugfs_dir; +static struct brd_device *brd_find_or_alloc_device (int i) +{ +struct brd_device *brd; + +mutex_lock (&brd_devices_mutex); +list_for_each_entry (brd, &brd_devices, brd_list) { +if (brd->brd_number == i) { +mutex_unlock (&brd_devices_mutex); +return ERR_PTR (-EEXIST ); + } + } + + brd =kzalloc (sizeof (*brd),GFP_KERNEL ); +if (!brd) { +mutex_unlock (&brd_devices_mutex); +return ERR_PTR (-ENOMEM ); + } + brd->brd_number = i; +list_add_tail (&brd->brd_list, &brd_devices); +mutex_unlock (&brd_devices_mutex); +return brd; +} + +static void brd_free_device (struct brd_device *brd) +{ +mutex_lock (&brd_devices_mutex); +list_del (&brd->brd_list); +mutex_unlock (&brd_devices_mutex); +kfree (brd); +} +static int brd_alloc (int i) {struct brd_device *brd;
@@ -377,14 +409,9 @@ static int brd_alloc(int i)char buf[DISK_NAME_LEN ];int err = -ENOMEM ; -list_for_each_entry (brd, &brd_devices, brd_list) -if (brd->brd_number == i) -return -EEXIST ; - brd =kzalloc (sizeof (*brd),GFP_KERNEL ); -if (!brd) -return -ENOMEM ; - brd->brd_number = i; -list_add_tail (&brd->brd_list, &brd_devices); + brd =brd_find_or_alloc_device (i); +if (IS_ERR (brd)) +return PTR_ERR (brd);spin_lock_init (&brd->brd_lock);INIT_RADIX_TREE (&brd->brd_pages,GFP_ATOMIC );
@@ -428,8 +455,7 @@ static int brd_alloc(int i) out_cleanup_disk:put_disk (disk); out_free_dev: -list_del (&brd->brd_list); -kfree (brd); +brd_free_device (brd);return err; }
@@ -448,8 +474,7 @@ static void brd_cleanup(void)del_gendisk (brd->brd_disk);put_disk (brd->brd_disk);brd_free_pages (brd); -list_del (&brd->brd_list); -kfree (brd); +brd_free_device (brd); } }
@@ -476,16 +501,6 @@ static int __init brd_init(void) {int err, i; -brd_check_and_reset_par (); - - brd_debugfs_dir =debugfs_create_dir ("ramdisk_pages" ,NULL ); - -for (i =0 ; i < rd_nr; i++) { - err =brd_alloc (i); -if (err) - goto out_free; - } -/* * brd module now has a feature to instantiate underlying device * structure on-demand, provided that there is an access dev node.
@@ -501,11 +516,18 @@ static int __init brd_init(void)* dynamically. */ +brd_check_and_reset_par (); + + brd_debugfs_dir =debugfs_create_dir ("ramdisk_pages" ,NULL ); +if (__register_blkdev (RAMDISK_MAJOR ,"ramdisk" , brd_probe)) { err = -EIO ; goto out_free; } +for (i =0 ; i < rd_nr; i++) +brd_alloc (i); +pr_info ("brd: module loaded\n" );return 0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 50/772 ext4: make abort mount option handling standard
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <[email protected]>
[ Upstream commit 22b8d707b07e6e06f50fe1d9ca8756e1f894eb0d ]
'abort' mount option is the only mount option that has special handling and sets a bit in sbi->s_mount_flags. There is not strong reason for that so just simplify the code and make 'abort' set a bit in sbi->s_mount_opt2 as any other mount option. This simplifies the code and will allow us to drop EXT4_MF_FS_ABORTED completely in the following patch.
Stable-dep-of: 76486b104168 ("ext4: avoid remount errors with 'abort' mount option")
--- fs/ext4/ext4.h | 1 + fs/ext4/super.c | 16 ++-------------- 2 files changed, 3 insertions(+), 14 deletions(-)
fs/ext4/ext4.h +1 -0
@@ -1269,6 +1269,7 @@ struct ext4_inode_info {#define EXT4_MOUNT2_MB_OPTIMIZE_SCAN 0x00000080/* Optimize group * scanning in mballoc */ +#define EXT4_MOUNT2_ABORT 0x00000100/* Abort filesystem */ #define clear_opt (sb, opt) EXT4_SB(sb)->s_mount_opt &= \ ~EXT4_MOUNT_##opt
fs/ext4/super.c +2 -14
@@ -1833,6 +1833,7 @@ static const struct mount_opts { {Opt_fc_debug_force, EXT4_MOUNT2_JOURNAL_FAST_COMMIT, MOPT_SET | MOPT_2 | MOPT_EXT4_ONLY}, #endif + {Opt_abort, EXT4_MOUNT2_ABORT, MOPT_SET | MOPT_2}, {Opt_err, 0, 0} };
@@ -1901,8 +1902,6 @@ struct ext4_fs_context {unsigned int mask_s_mount_opt;unsigned int vals_s_mount_opt2;unsigned int mask_s_mount_opt2; -unsigned long vals_s_mount_flags; -unsigned long mask_s_mount_flags;unsigned int opt_flags;/* MOPT flags */ unsigned int spec;u32 s_max_batch_time;
@@ -2053,12 +2052,6 @@ EXT4_SET_CTX(mount_opt2);EXT4_CLEAR_CTX (mount_opt2);EXT4_TEST_CTX (mount_opt2); -static inline void ctx_set_mount_flag (struct ext4_fs_context *ctx,int bit) -{ -set_bit (bit, &ctx->mask_s_mount_flags); -set_bit (bit, &ctx->vals_s_mount_flags); -} -static int ext4_parse_param (struct fs_context *fc,struct fs_parameter *param) {struct ext4_fs_context *ctx = fc->fs_private;
@@ -2122,9 +2115,6 @@ static int ext4_parse_param(struct fs_context *fc, struct fs_parameter *param)ext4_msg (NULL ,KERN_WARNING ,"Ignoring removed %s option" , param->key);return 0 ; -case Opt_abort: -ctx_set_mount_flag (ctx,EXT4_MF_FS_ABORTED ); -return 0 ;case Opt_inlinecrypt:#ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT ctx_set_flags (ctx,SB_INLINECRYPT );
@@ -2789,8 +2779,6 @@ static void ext4_apply_options(struct fs_context *fc, struct super_block *sb) sbi->s_mount_opt |= ctx->vals_s_mount_opt; sbi->s_mount_opt2 &= ~ctx->mask_s_mount_opt2; sbi->s_mount_opt2 |= ctx->vals_s_mount_opt2; - sbi->s_mount_flags &= ~ctx->mask_s_mount_flags; - sbi->s_mount_flags |= ctx->vals_s_mount_flags; sb->s_flags &= ~ctx->mask_s_flags; sb->s_flags |= ctx->vals_s_flags;
@@ -6445,7 +6433,7 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb) goto restore_opts; } -if (ext4_test_mount_flag (sb,EXT4_MF_FS_ABORTED )) +if (test_opt2 (sb,ABORT ))ext4_abort (sb,ESHUTDOWN ,"Abort forced by user" ); sb->s_flags = (sb->s_flags & ~SB_POSIXACL) |
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 51/772 ext4: avoid remount errors with abort mount option
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <[email protected]>
[ Upstream commit 76486b104168ae59703190566e372badf433314b ]
When we remount filesystem with 'abort' mount option while changing other mount options as well (as is LTP test doing), we can return error from the system call after commit d3476f3dad4a ("ext4: don't set SB_RDONLY after filesystem errors") because the application of mount option changes detects shutdown filesystem and refuses to do anything. The behavior of application of other mount options in presence of 'abort' mount option is currently rather arbitary as some mount option changes are handled before 'abort' and some after it.
Move aborting of the filesystem to the end of remount handling so all requested changes are properly applied before the filesystem is shutdown to have a reasonably consistent behavior.
--- fs/ext4/super.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
fs/ext4/super.c +8 -3
@@ -6433,9 +6433,6 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb) goto restore_opts; } -if (test_opt2 (sb,ABORT )) -ext4_abort (sb,ESHUTDOWN ,"Abort forced by user" ); - sb->s_flags = (sb->s_flags & ~SB_POSIXACL ) | (test_opt (sb,POSIX_ACL ) ?SB_POSIXACL :0 );
@@ -6604,6 +6601,14 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb)if (!ext4_has_feature_mmp (sb) ||sb_rdonly (sb))ext4_stop_mmpd (sbi); +/* +* Handle aborting the filesystem as the last thing during remount to +* avoid obsure errors during remount when some option changes fail to +* apply due to shutdown filesystem. +*/ +if (test_opt2 (sb,ABORT )) +ext4_abort (sb,ESHUTDOWN ,"Abort forced by user" ); +return 0 ; restore_opts:
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 52/772 mips: asm: fix warning when disabling MIPS_FP_SUPPORT
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonas Gorski <[email protected]>
[ Upstream commit da09935975c8f8c90d6f57be2422dee5557206cd ]
When MIPS_FP_SUPPORT is disabled, __sanitize_fcr31() is defined as nothing, which triggers a gcc warning:
In file included from kernel/sched/core.c:79:
kernel/sched/core.c: In function 'context_switch':
./arch/mips/include/asm/switch_to.h:114:39: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
114 | __sanitize_fcr31(next); \
| ^
kernel/sched/core.c:5316:9: note: in expansion of macro 'switch_to'
5316 | switch_to(prev, next, prev);
| ^~~~~~~~~
Fix this by providing an empty body for __sanitize_fcr31() like one is defined for __mips_mt_fpaff_switch_to().
--- arch/mips/include/asm/switch_to.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/mips/include/asm/switch_to.h +1 -1
@@ -97,7 +97,7 @@ do { \ } \ } while (0)#else -# define __sanitize_fcr31 (next) +# define __sanitize_fcr31 (next) do { (void) (next); } while (0)#endif /*
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 53/772 initramfs: avoid filename buffer overrun
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Disseldorp <[email protected]>
[ Upstream commit e017671f534dd3f568db9e47b0583e853d2da9b5 ]
The initramfs filename field is defined in Documentation/driver-api/early-userspace/buffer-format.rst as:
37 cpio_file := ALGN(4) + cpio_header + filename + "\0" + ALGN(4) + data
...
55 ============= ================== =========================
56 Field name Field size Meaning
57 ============= ================== =========================
...
70 c_namesize 8 bytes Length of filename, including final \0
When extracting an initramfs cpio archive, the kernel's do_name() path handler assumes a zero-terminated path at @collected, passing it directly to filp_open() / init_mkdir() / init_mknod().
If a specially crafted cpio entry carries a non-zero-terminated filename and is followed by uninitialized memory, then a file may be created with trailing characters that represent the uninitialized memory. The ability to create an initramfs entry would imply already having full control of the system, so the buffer overrun shouldn't be considered a security vulnerability.
Append the output of the following bash script to an existing initramfs and observe any created /initramfs_test_fname_overrunAA* path. E.g.
./reproducer.sh | gzip >> /myinitramfs
It's easiest to observe non-zero uninitialized memory when the output is gzipped, as it'll overflow the heap allocated @out_buf in __gunzip(), rather than the initrd_start+initrd_size block.
---- reproducer.sh ----
nilchar="A" # change to "\0" to properly zero terminate / pad
magic="070701"
ino=1
mode=$(( 0100777 ))
uid=0
gid=0
nlink=1
mtime=1
filesize=0
devmajor=0
devminor=1
rdevmajor=0
rdevminor=0
csum=0
fname="initramfs_test_fname_overrun"
namelen=$(( ${#fname} + 1 )) # plus one to account for terminator
printf "%s%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%s" \ $magic $ino $mode $uid $gid $nlink $mtime $filesize \ $devmajor $devminor $rdevmajor $rdevminor $namelen $csum $fname
termpadlen=$(( 1 + ((4 - ((110 + $namelen) & 3)) % 4) )) printf "%.s${nilchar}" $(seq 1 $termpadlen) ---- reproducer.sh ----
Symlink filename fields handled in do_symlink() won't overrun past the data segment, due to the explicit zero-termination of the symlink target.
Fix filename buffer overrun by aborting the initramfs FSM if any cpio entry doesn't carry a zero-terminator at the expected (name_len - 1) offset.
--- init/initramfs.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
init/initramfs.c +15 -0
@@ -364,6 +364,15 @@ static int __init do_name(void) { state = SkipIt; next_state = Reset; + +/* name_len > 0 && name_len <= PATH_MAX checked in do_header */ +if (collected[name_len -1 ] !='\0' ) { +pr_err ("initramfs name without nulterm: %.*s\n" , + (int )name_len, collected); +error ("malformed archive" ); +return 1 ; + } +if (strcmp (collected,"TRAILER!!!" ) ==0 ) {free_hash ();return 0 ;
@@ -428,6 +437,12 @@ static int __init do_copy(void)static int __init do_symlink (void ) { +if (collected[name_len -1 ] !='\0' ) { +pr_err ("initramfs symlink without nulterm: %.*s\n" , + (int )name_len, collected); +error ("malformed archive" ); +return 1 ; + } collected[N_ALIGN (name_len) + body_len] ='\0' ;clean_path (collected,0 );init_symlink (collected +N_ALIGN (name_len), collected);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 54/772 nvme-pci: fix freeing of the HMB descriptor table
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 3c2fb1ca8086eb139b2a551358137525ae8e0d7a ]
The HMB descriptor table is sized to the maximum number of descriptors that could be used for a given device, but __nvme_alloc_host_mem could break out of the loop earlier on memory allocation failure and end up using less descriptors than planned for, which leads to an incorrect size passed to dma_free_coherent.
In practice this was not showing up because the number of descriptors tends to be low and the dma coherent allocator always allocates and frees at least a page.
--- drivers/nvme/host/pci.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
drivers/nvme/host/pci.c +9 -7
@@ -153,6 +153,7 @@ struct nvme_dev {/* host memory buffer support: */ u64 host_mem_size;u32 nr_host_mem_descs; +u32 host_mem_descs_size;dma_addr_t host_mem_descs_dma;struct nvme_host_mem_buf_desc *host_mem_descs;void **host_mem_desc_bufs;
@@ -2007,10 +2008,10 @@ static void nvme_free_host_mem(struct nvme_dev *dev)kfree (dev->host_mem_desc_bufs); dev->host_mem_desc_bufs =NULL ; -dma_free_coherent (dev->dev, - dev->nr_host_mem_descs *sizeof (*dev->host_mem_descs), +dma_free_coherent (dev->dev, dev->host_mem_descs_size, dev->host_mem_descs, dev->host_mem_descs_dma); dev->host_mem_descs =NULL ; + dev->host_mem_descs_size =0 ; dev->nr_host_mem_descs =0 ; }
@@ -2018,7 +2019,7 @@ static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred, u32 chunk_size) {struct nvme_host_mem_buf_desc *descs; -u32 max_entries, len; +u32 max_entries, len, descs_size;dma_addr_t descs_dma;int i =0 ;void **bufs;
@@ -2031,8 +2032,9 @@ static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred,if (dev->ctrl.hmmaxd && dev->ctrl.hmmaxd < max_entries) max_entries = dev->ctrl.hmmaxd; - descs =dma_alloc_coherent (dev->dev, max_entries *sizeof (*descs), - &descs_dma,GFP_KERNEL ); + descs_size = max_entries *sizeof (*descs); + descs =dma_alloc_coherent (dev->dev, descs_size, &descs_dma, +GFP_KERNEL );if (!descs) goto out;
@@ -2061,6 +2063,7 @@ static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred, dev->host_mem_size = size; dev->host_mem_descs = descs; dev->host_mem_descs_dma = descs_dma; + dev->host_mem_descs_size = descs_size; dev->host_mem_desc_bufs = bufs;return 0 ;
@@ -2075,8 +2078,7 @@ static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred,kfree (bufs); out_free_descs: -dma_free_coherent (dev->dev, max_entries *sizeof (*descs), descs, - descs_dma); +dma_free_coherent (dev->dev, descs_size, descs, descs_dma); out: dev->host_mem_descs =NULL ;return -ENOMEM ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 55/772 m68k: mvme147: Fix SCSI controller IRQ numbers
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Palmer <[email protected]>
[ Upstream commit 47bc874427382018fa2e3e982480e156271eee70 ]
Sometime long ago the m68k IRQ code was refactored and the interrupt numbers for SCSI controller on this board ended up wrong, and it hasn't worked since.
The PCC adds 0x40 to the vector for its interrupts so they end up in the user interrupt range. Hence, the kernel number should be the kernel offset for user interrupt range + the PCC interrupt number.
--- arch/m68k/include/asm/mvme147hw.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/m68k/include/asm/mvme147hw.h +2 -2
@@ -93,8 +93,8 @@ struct pcc_regs {#define M147_SCC_B_ADDR 0xfffe3000#define M147_SCC_PCLK 5000000 -#define MVME147_IRQ_SCSI_PORT (IRQ_USER+0x45) -#define MVME147_IRQ_SCSI_DMA (IRQ_USER+0x46) +#define MVME147_IRQ_SCSI_PORT (IRQ_USER + 5) +#define MVME147_IRQ_SCSI_DMA (IRQ_USER + 6)/* SCC interrupts, for MVME147 */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 56/772 m68k: mvme16x: Add and use "mvme16x.h"
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <[email protected]>
[ Upstream commit dcec33c1fc4ab63983d93ffb0d82b68fc5775b88 ]
When building with W=1:
arch/m68k/mvme16x/config.c:208:6: warning: no previous prototype for ‘mvme16x_cons_write’ [-Wmissing-prototypes]
208 | void mvme16x_cons_write(struct console *co, const char *str, unsigned count)
| ^~~~~~~~~~~~~~~~~~
Fix this by introducing a new header file "mvme16x.h" for holding the prototypes of functions implemented in arch/m68k/mvme16x/.
Stable-dep-of: 077b33b9e283 ("m68k: mvme147: Reinstate early console")
--- arch/m68k/kernel/early_printk.c | 4 ++-- arch/m68k/mvme16x/config.c | 2 ++ arch/m68k/mvme16x/mvme16x.h | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 arch/m68k/mvme16x/mvme16x.h
arch/m68k/kernel/early_printk.c +2 -2
@@ -12,8 +12,8 @@#include <linux/string.h> #include <asm/setup.h> -extern void mvme16x_cons_write (struct console *co, -const char *str,unsigned count); + +#include "../mvme16x/mvme16x.h" asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
arch/m68k/mvme16x/config.c +2 -0
@@ -38,6 +38,8 @@#include <asm/mvme16xhw.h> #include <asm/config.h> +#include "mvme16x.h" +extern t_bdid mvme_bdid;static MK48T08ptr_t volatile rtc = (MK48T08ptr_t )MVME_RTC_BASE ;
arch/m68k/mvme16x/mvme16x.h new file +6 -0
@@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +struct console ; + +/* config.c */ +void mvme16x_cons_write (struct console *co,const char *str,unsigned count);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 57/772 m68k: mvme147: Reinstate early console
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Palmer <[email protected]>
[ Upstream commit 077b33b9e2833ff25050d986178a2c4c4036cbac ]
Commit a38eaa07a0ce ("m68k/mvme147: config.c - Remove unused functions"), removed the console functionality for the mvme147 instead of wiring it up to an early console. Put the console write function back and wire it up like mvme16x does so it's possible to see Linux boot on this fine hardware once more.
--- arch/m68k/kernel/early_printk.c | 5 ++++- arch/m68k/mvme147/config.c | 30 ++++++++++++++++++++++++++++++ arch/m68k/mvme147/mvme147.h | 6 ++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 arch/m68k/mvme147/mvme147.h
arch/m68k/kernel/early_printk.c +4 -1
@@ -13,6 +13,7 @@#include <asm/setup.h> +#include "../mvme147/mvme147.h" #include "../mvme16x/mvme16x.h" asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
@@ -22,7 +23,9 @@ static void __ref debug_cons_write(struct console *c, {#if !(defined(CONFIG_SUN3 ) || defined(CONFIG_M68000 ) || \ defined(CONFIG_COLDFIRE )) -if (MACH_IS_MVME16x) +if (MACH_IS_MVME147 ) +mvme147_scc_write (c, s, n); +else if (MACH_IS_MVME16x)mvme16x_cons_write (c, s, n);else debug_cons_nputs (s, n);
arch/m68k/mvme147/config.c +30 -0
@@ -35,6 +35,7 @@#include <asm/mvme147hw.h> #include <asm/config.h> +#include "mvme147.h" static void mvme147_get_model (char *model);extern void mvme147_sched_init (void );
@@ -188,3 +189,32 @@ int mvme147_hwclk(int op, struct rtc_time *t) }return 0 ; } + +static void scc_delay (void ) +{ + __asm__ __volatile__ ("nop; nop;" ); +} + +static void scc_write (char ch) +{ +do { +scc_delay (); + }while (!(in_8 (M147_SCC_A_ADDR ) &BIT (2 ))); +scc_delay (); +out_8 (M147_SCC_A_ADDR ,8 ); +scc_delay (); +out_8 (M147_SCC_A_ADDR , ch); +} + +void mvme147_scc_write (struct console *co,const char *str,unsigned int count) +{ +unsigned long flags; + +local_irq_save (flags); +while (count--) { +if (*str =='\n' ) +scc_write ('\r' ); +scc_write (*str++); + } +local_irq_restore (flags); +}
arch/m68k/mvme147/mvme147.h new file +6 -0
@@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +struct console ; + +/* config.c */ +void mvme147_scc_write (struct console *co,const char *str,unsigned int count);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 58/772 arm64: fix .data.rel.ro size assertion when CONFIG_LTO_CLANG
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Masahiro Yamada <[email protected]>
[ Upstream commit 340fd66c856651d8c1d29f392dd26ad674d2db0e ]
Commit be2881824ae9 ("arm64/build: Assert for unwanted sections") introduced an assertion to ensure that the .data.rel.ro section does not exist.
However, this check does not work when CONFIG_LTO_CLANG is enabled, because .data.rel.ro matches the .data.[0-9a-zA-Z_]* pattern in the DATA_MAIN macro.
Move the ASSERT() above the RW_DATA() line.
--- arch/arm64/kernel/vmlinux.lds.S | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/arm64/kernel/vmlinux.lds.S +3 -3
@@ -272,6 +272,9 @@ SECTIONS __initdata_end = .; __init_end = .; + .data.rel.ro : { *(.data.rel.ro) } + ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!") + _data = .; _sdata = .; RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_ALIGN)
@@ -323,9 +326,6 @@ SECTIONS *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt) } ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!") - - .data.rel.ro : { *(.data.rel.ro) } - ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!") } #include "image-vars.h"
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 59/772 acpi/arm64: Adjust error handling procedure in gtdt_parse_timer_block()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Aleksandr Mishin <[email protected]>
[ Upstream commit 1a9de2f6fda69d5f105dd8af776856a66abdaa64 ]
In case of error in gtdt_parse_timer_block() invalid 'gtdt_frame' will be used in 'do {} while (i-- >= 0 && gtdt_frame--);' statement block because do{} block will be executed even if 'i == 0'.
Adjust error handling procedure by replacing 'i-- >= 0' with 'i-- > 0'.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
--- drivers/acpi/arm64/gtdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/arm64/gtdt.c +1 -1
@@ -283,7 +283,7 @@ static int __init gtdt_parse_timer_block(struct acpi_gtdt_timer_block *block,if (frame->virt_irq >0 )acpi_unregister_gsi (gtdt_frame->virtual_timer_interrupt); frame->virt_irq =0 ; - }while (i-- >=0 && gtdt_frame--); + }while (i-- >0 && gtdt_frame--);return -EINVAL ; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 60/772 cachefiles: Fix missing pos updates in cachefiles_ondemand_fd_write_iter()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zizhi Wo <[email protected]>
[ Upstream commit 56f4856b425a30e1d8b3e41e6cde8bfba90ba5f8 ]
In the erofs on-demand loading scenario, read and write operations are usually delivered through "off" and "len" contained in read req in user mode. Naturally, pwrite is used to specify a specific offset to complete write operations.
However, if the write(not pwrite) syscall is called multiple times in the read-ahead scenario, we need to manually update ki_pos after each write operation to update file->f_pos.
This step is currently missing from the cachefiles_ondemand_fd_write_iter function, added to address this issue.
--- fs/cachefiles/ondemand.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/cachefiles/ondemand.c +3 -1
@@ -78,8 +78,10 @@ static ssize_t cachefiles_ondemand_fd_write_iter(struct kiocb *kiocb,trace_cachefiles_ondemand_fd_write (object,file_inode (file), pos, len); ret =__cachefiles_write (object, file, pos, iter,NULL ,NULL ); -if (!ret) +if (!ret) { ret = len; + kiocb->ki_pos += ret; + }return ret; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 61/772 netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zizhi Wo <[email protected]>
[ Upstream commit 22f9400a6f3560629478e0a64247b8fcc811a24d ]
In fscache_create_volume(), there is a missing memory barrier between the bit-clearing operation and the wake-up operation. This may cause a situation where, after a wake-up, the bit-clearing operation hasn't been detected yet, leading to an indefinite wait. The triggering process is as follows:
[cookie1] [cookie2] [volume_work]fscache_perform_lookup
fscache_create_volume
fscache_perform_lookup
fscache_create_volume
fscache_create_volume_work
cachefiles_acquire_volume clear_and_wake_up_bit
test_and_set_bit
test_and_set_bit
goto maybe_wait
goto no_wait
In the above process, cookie1 and cookie2 has the same volume. When cookie1 enters the -no_wait- process, it will clear the bit and wake up the waiting process. If a barrier is missing, it may cause cookie2 to remain in the -wait- process indefinitely.
In commit 3288666c7256 ("fscache: Use clear_and_wake_up_bit() in fscache_create_volume_work()"), barriers were added to similar operations in fscache_create_volume_work(), but fscache_create_volume() was missed.
By combining the clear and wake operations into clear_and_wake_up_bit() to fix this issue.
--- fs/fscache/volume.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/fscache/volume.c +1 -2
@@ -322,8 +322,7 @@ void fscache_create_volume(struct fscache_volume *volume, bool wait) }return ; no_wait: -clear_bit_unlock (FSCACHE_VOLUME_CREATING , &volume->flags); -wake_up_bit (&volume->flags,FSCACHE_VOLUME_CREATING ); +clear_and_wake_up_bit (FSCACHE_VOLUME_CREATING , &volume->flags); }/*
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 62/772 block: fix bio_split_rw_at to take zone_write_granularity into account
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 7ecd2cd4fae3e8410c0a6620f3a83dcdbb254f02 ]
Otherwise it can create unaligned writes on zoned devices.
--- block/blk-merge.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
block/blk-merge.c +9 -1
@@ -247,6 +247,14 @@ static bool bvec_split_segs(struct queue_limits *lim, const struct bio_vec *bv,return len >0 || bv->bv_len > max_len; } +static unsigned int bio_split_alignment (struct bio *bio, +const struct queue_limits *lim) +{ +if (op_is_write (bio_op (bio)) && lim->zone_write_granularity) +return lim->zone_write_granularity; +return lim->logical_block_size; +} +/** * bio_split_rw - split a bio in two bios * @bio: [in] bio to be split
@@ -317,7 +325,7 @@ static struct bio *bio_split_rw(struct bio *bio, struct queue_limits *lim,* split size so that each bio is properly block size aligned, even if * we do not use the full hardware limits. */ - bytes =ALIGN_DOWN (bytes, lim->logical_block_size); + bytes =ALIGN_DOWN (bytes,bio_split_alignment (bio, lim));/* * Bio splitting may cause subtle trouble such as hang when doing sync
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 63/772 s390/syscalls: Avoid creation of arch/arch/ directory
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Masahiro Yamada <[email protected]>
[ Upstream commit 0708967e2d56e370231fd07defa0d69f9ad125e8 ]
Building the kernel with ARCH=s390 creates a weird arch/arch/ directory.
$ find arch/arch arch/arch arch/arch/s390 arch/arch/s390/include arch/arch/s390/include/generated arch/arch/s390/include/generated/asm arch/arch/s390/include/generated/uapi arch/arch/s390/include/generated/uapi/asm
The root cause is 'targets' in arch/s390/kernel/syscalls/Makefile, where the relative path is incorrect.
Strictly speaking, 'targets' was not necessary in the first place because this Makefile uses 'filechk' instead of 'if_changed'.
However, this commit keeps it, as it will be useful when converting 'filechk' to 'if_changed' later.
--- arch/s390/kernel/syscalls/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/s390/kernel/syscalls/Makefile +1 -1
@@ -12,7 +12,7 @@ kapi-hdrs-y := $(kapi)/unistd_nr.h uapi-hdrs-y := $(uapi)/unistd_32.h uapi-hdrs-y += $(uapi)/unistd_64.h -targets += $(addprefix ../../../,$(gen-y) $(kapi-hdrs-y) $(uapi-hdrs-y)) +targets += $(addprefix ../../../../,$(gen-y) $(kapi-hdrs-y) $(uapi-hdrs-y)) PHONY += kapi uapi
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 64/772 hfsplus: dont query the device logical block size multiple times
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thadeu Lima de Souza Cascardo <[email protected]>
[ Upstream commit 1c82587cb57687de3f18ab4b98a8850c789bedcf ]
Devices block sizes may change. One of these cases is a loop device by using ioctl LOOP_SET_BLOCK_SIZE.
While this may cause other issues like IO being rejected, in the case of hfsplus, it will allocate a block by using that size and potentially write out-of-bounds when hfsplus_read_wrapper calls hfsplus_submit_bio and the latter function reads a different io_size.
Using a new min_io_size initally set to sb_min_blocksize works for the purposes of the original fix, since it will be set to the max between HFSPLUS_SECTOR_SIZE and the first seen logical block size. We still use the max between HFSPLUS_SECTOR_SIZE and min_io_size in case the latter is not initialized.
Tested by mounting an hfsplus filesystem with loop block sizes 512, 1024 and 4096.
The produced KASAN report before the fix looks like this:
[ 419.944641] ================================================================== [ 419.945655] BUG: KASAN: slab-use-after-free in hfsplus_read_wrapper+0x659/0xa0a [ 419.946703] Read of size 2 at addr ffff88800721fc00 by task repro/10678 [ 419.947612] [ 419.947846] CPU: 0 UID: 0 PID: 10678 Comm: repro Not tainted 6.12.0-rc5-00008-gdf56e0f2f3ca #84 [ 419.949007] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 [ 419.950035] Call Trace: [ 419.950384] <TASK> [ 419.950676] dump_stack_lvl+0x57/0x78 [ 419.951212] ? hfsplus_read_wrapper+0x659/0xa0a [ 419.951830] print_report+0x14c/0x49e [ 419.952361] ? __virt_addr_valid+0x267/0x278 [ 419.952979] ? kmem_cache_debug_flags+0xc/0x1d [ 419.953561] ? hfsplus_read_wrapper+0x659/0xa0a [ 419.954231] kasan_report+0x89/0xb0 [ 419.954748] ? hfsplus_read_wrapper+0x659/0xa0a [ 419.955367] hfsplus_read_wrapper+0x659/0xa0a [ 419.955948] ? __pfx_hfsplus_read_wrapper+0x10/0x10 [ 419.956618] ? do_raw_spin_unlock+0x59/0x1a9 [ 419.957214] ? _raw_spin_unlock+0x1a/0x2e [ 419.957772] hfsplus_fill_super+0x348/0x1590 [ 419.958355] ? hlock_class+0x4c/0x109 [ 419.958867] ? __pfx_hfsplus_fill_super+0x10/0x10 [ 419.959499] ? __pfx_string+0x10/0x10 [ 419.960006] ? lock_acquire+0x3e2/0x454 [ 419.960532] ? bdev_name.constprop.0+0xce/0x243 [ 419.961129] ? __pfx_bdev_name.constprop.0+0x10/0x10 [ 419.961799] ? pointer+0x3f0/0x62f [ 419.962277] ? __pfx_pointer+0x10/0x10 [ 419.962761] ? vsnprintf+0x6c4/0xfba [ 419.963178] ? __pfx_vsnprintf+0x10/0x10 [ 419.963621] ? setup_bdev_super+0x376/0x3b3 [ 419.964029] ? snprintf+0x9d/0xd2 [ 419.964344] ? __pfx_snprintf+0x10/0x10 [ 419.964675] ? lock_acquired+0x45c/0x5e9 [ 419.965016] ? set_blocksize+0x139/0x1c1 [ 419.965381] ? sb_set_blocksize+0x6d/0xae [ 419.965742] ? __pfx_hfsplus_fill_super+0x10/0x10 [ 419.966179] mount_bdev+0x12f/0x1bf [ 419.966512] ? __pfx_mount_bdev+0x10/0x10 [ 419.966886] ? vfs_parse_fs_string+0xce/0x111 [ 419.967293] ? __pfx_vfs_parse_fs_string+0x10/0x10 [ 419.967702] ? __pfx_hfsplus_mount+0x10/0x10 [ 419.968073] legacy_get_tree+0x104/0x178 [ 419.968414] vfs_get_tree+0x86/0x296 [ 419.968751] path_mount+0xba3/0xd0b [ 419.969157] ? __pfx_path_mount+0x10/0x10 [ 419.969594] ? kmem_cache_free+0x1e2/0x260 [ 419.970311] do_mount+0x99/0xe0 [ 419.970630] ? __pfx_do_mount+0x10/0x10 [ 419.971008] __do_sys_mount+0x199/0x1c9 [ 419.971397] do_syscall_64+0xd0/0x135 [ 419.971761] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 419.972233] RIP: 0033:0x7c3cb812972e [ 419.972564] Code: 48 8b 0d f5 46 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c2 46 0d 00 f7 d8 64 89 01 48 [ 419.974371] RSP: 002b:00007ffe30632548 EFLAGS: 00000286 ORIG_RAX: 00000000000000a5 [ 419.975048] RAX: ffffffffffffffda RBX: 00007ffe306328d8 RCX: 00007c3cb812972e [ 419.975701] RDX: 0000000020000000 RSI: 0000000020000c80 RDI: 00007ffe306325d0 [ 419.976363] RBP: 00007ffe30632720 R08: 00007ffe30632610 R09: 0000000000000000 [ 419.977034] R10: 0000000000200008 R11: 0000000000000286 R12: 0000000000000000 [ 419.977713] R13: 00007ffe306328e8 R14: 00005a0eb298bc68 R15: 00007c3cb8356000 [ 419.978375] </TASK> [ 419.978589]
--- fs/hfsplus/hfsplus_fs.h | 3 ++- fs/hfsplus/wrapper.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-)
fs/hfsplus/hfsplus_fs.h +2 -1
@@ -156,6 +156,7 @@ struct hfsplus_sb_info {/* Runtime variables */ u32 blockoffset; +u32 min_io_size;sector_t part_start;sector_t sect_count;int fs_shift;
@@ -306,7 +307,7 @@ struct hfsplus_readdir_data {*/ static inline unsigned short hfsplus_min_io_size (struct super_block *sb) { - return max_t(unsigned short, bdev_logical_block_size(sb->s_bdev), + return max_t(unsigned short, HFSPLUS_SB(sb)->min_io_size,HFSPLUS_SECTOR_SIZE ); }
fs/hfsplus/wrapper.c +2 -0
@@ -171,6 +171,8 @@ int hfsplus_read_wrapper(struct super_block *sb)if (!blocksize) goto out; + sbi->min_io_size = blocksize; +if (hfsplus_get_last_session (sb, &part_start, &part_size)) goto out;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 65/772 nvme-pci: reverse request order in nvme_queue_rqs
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit beadf0088501d9dcf2454b05d90d5d31ea3ba55f ]
blk_mq_flush_plug_list submits requests in the reverse order that they were submitted, which leads to a rather suboptimal I/O pattern especially in rotational devices. Fix this by rewriting nvme_queue_rqs so that it always pops the requests from the passed in request list, and then adds them to the head of a local submit list. This actually simplifies the code a bit as it removes the complicated list splicing, at the cost of extra updates of the rq_next pointer. As that should be cache hot anyway it should be an easy price to pay.
--- drivers/nvme/host/pci.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-)
drivers/nvme/host/pci.c +17 -22
@@ -952,9 +952,10 @@ static blk_status_t nvme_queue_rq(struct blk_mq_hw_ctx *hctx,static void nvme_submit_cmds (struct nvme_queue *nvmeq,struct request **rqlist) { +struct request *req; +spin_lock (&nvmeq->sq_lock); -while (!rq_list_empty (*rqlist)) { -struct request *req =rq_list_pop (rqlist); +while ((req =rq_list_pop (rqlist))) {struct nvme_iod *iod =blk_mq_rq_to_pdu (req);nvme_sq_copy_cmd (nvmeq, &iod->cmd);
@@ -980,31 +981,25 @@ static bool nvme_prep_rq_batch(struct nvme_queue *nvmeq, struct request *req)static void nvme_queue_rqs (struct request **rqlist) { -struct request *req, *next, *prev =NULL ; +struct request *submit_list =NULL ;struct request *requeue_list =NULL ; +struct request **requeue_lastp = &requeue_list; +struct nvme_queue *nvmeq =NULL ; +struct request *req; -rq_list_for_each_safe (rqlist, req, next) { -struct nvme_queue *nvmeq = req->mq_hctx->driver_data; - -if (!nvme_prep_rq_batch (nvmeq, req)) { -/* detach 'req' and add to remainder list */ -rq_list_move (rqlist, &requeue_list, req, prev); - - req = prev; -if (!req) -continue ; - } +while ((req =rq_list_pop (rqlist))) { +if (nvmeq && nvmeq != req->mq_hctx->driver_data) +nvme_submit_cmds (nvmeq, &submit_list); + nvmeq = req->mq_hctx->driver_data; -if (!next || req->mq_hctx != next->mq_hctx) { -/* detach rest of list, and submit */ - req->rq_next =NULL ; -nvme_submit_cmds (nvmeq, rqlist); - *rqlist = next; - prev =NULL ; - }else - prev = req; +if (nvme_prep_rq_batch (nvmeq, req)) +rq_list_add (&submit_list, req);/* reverse order */ +else +rq_list_add_tail (&requeue_lastp, req); } +if (nvmeq) +nvme_submit_cmds (nvmeq, &submit_list); *rqlist = requeue_list; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 66/772 virtio_blk: reverse request order in virtio_queue_rqs
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 7f212e997edbb7a2cb85cef2ac14265dfaf88717 ]
blk_mq_flush_plug_list submits requests in the reverse order that they were submitted, which leads to a rather suboptimal I/O pattern especially in rotational devices. Fix this by rewriting virtio_queue_rqs so that it always pops the requests from the passed in request list, and then adds them to the head of a local submit list. This actually simplifies the code a bit as it removes the complicated list splicing, at the cost of extra updates of the rq_next pointer. As that should be cache hot anyway it should be an easy price to pay.
--- drivers/block/virtio_blk.c | 46 +++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 25 deletions(-)
drivers/block/virtio_blk.c +21 -25
@@ -399,18 +399,18 @@ static bool virtblk_prep_rq_batch(struct request *req)return virtblk_prep_rq (req->mq_hctx, vblk, req, vbr) ==BLK_STS_OK ; } -static bool virtblk_add_req_batch (struct virtio_blk_vq *vq, +static void virtblk_add_req_batch (struct virtio_blk_vq *vq,struct request **rqlist) { +struct request *req;unsigned long flags; -int err;bool kick;spin_lock_irqsave (&vq->lock, flags); -while (!rq_list_empty (*rqlist)) { -struct request *req =rq_list_pop (rqlist); +while ((req =rq_list_pop (rqlist))) {struct virtblk_req *vbr =blk_mq_rq_to_pdu (req); +int err; err =virtblk_add_req (vq->vq, vbr);if (err) {
@@ -423,37 +423,33 @@ static bool virtblk_add_req_batch(struct virtio_blk_vq *vq, kick =virtqueue_kick_prepare (vq->vq);spin_unlock_irqrestore (&vq->lock, flags); -return kick; +if (kick) +virtqueue_notify (vq->vq); }static void virtio_queue_rqs (struct request **rqlist) { -struct request *req, *next, *prev =NULL ; +struct request *submit_list =NULL ;struct request *requeue_list =NULL ; +struct request **requeue_lastp = &requeue_list; +struct virtio_blk_vq *vq =NULL ; +struct request *req; -rq_list_for_each_safe (rqlist, req, next) { -struct virtio_blk_vq *vq =get_virtio_blk_vq (req->mq_hctx); -bool kick; - -if (!virtblk_prep_rq_batch (req)) { -rq_list_move (rqlist, &requeue_list, req, prev); - req = prev; -if (!req) -continue ; - } +while ((req =rq_list_pop (rqlist))) { +struct virtio_blk_vq *this_vq =get_virtio_blk_vq (req->mq_hctx); -if (!next || req->mq_hctx != next->mq_hctx) { - req->rq_next =NULL ; - kick =virtblk_add_req_batch (vq, rqlist); -if (kick) -virtqueue_notify (vq->vq); +if (vq && vq != this_vq) +virtblk_add_req_batch (vq, &submit_list); + vq = this_vq; - *rqlist = next; - prev =NULL ; - }else - prev = req; +if (virtblk_prep_rq_batch (req)) +rq_list_add (&submit_list, req);/* reverse order */ +else +rq_list_add_tail (&requeue_lastp, req); } +if (vq) +virtblk_add_req_batch (vq, &submit_list); *rqlist = requeue_list; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 67/772 crypto: caam - Fix the pointer passed to caam_qi_shutdown()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <[email protected]>
[ Upstream commit ad980b04f51f7fb503530bd1cb328ba5e75a250e ]
The type of the last parameter given to devm_add_action_or_reset() is "struct caam_drv_private *", but in caam_qi_shutdown(), it is casted to "struct device *".
Pass the correct parameter to devm_add_action_or_reset() so that the resources are released as expected.
--- drivers/crypto/caam/qi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/caam/qi.c +1 -1
@@ -765,7 +765,7 @@ int caam_qi_init(struct platform_device *caam_pdev)caam_debugfs_qi_init (ctrlpriv); - err =devm_add_action_or_reset (qidev, caam_qi_shutdown, ctrlpriv); + err =devm_add_action_or_reset (qidev, caam_qi_shutdown, qidev);if (err)return err;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 68/772 firmware: google: Unregister driver_info on failure
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuan Can <[email protected]>
[ Upstream commit 32b0901e141f6d4cf49d820b53eb09b88b1f72f7 ]
When platform_device_register_full() returns error, the gsmi_init() returns without unregister gsmi_driver_info, fix by add missing platform_driver_unregister() when platform_device_register_full() failed.
--- drivers/firmware/google/gsmi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/firmware/google/gsmi.c +4 -2
@@ -918,7 +918,8 @@ static __init int gsmi_init(void) gsmi_dev.pdev =platform_device_register_full (&gsmi_dev_info);if (IS_ERR (gsmi_dev.pdev)) {printk (KERN_ERR "gsmi: unable to register platform device\n" ); -return PTR_ERR (gsmi_dev.pdev); + ret =PTR_ERR (gsmi_dev.pdev); + goto out_unregister; }/* SMI access needs to be serialized */
@@ -1056,10 +1057,11 @@ static __init int gsmi_init(void)gsmi_buf_free (gsmi_dev.name_buf);kmem_cache_destroy (gsmi_dev.mem_pool);platform_device_unregister (gsmi_dev.pdev); -pr_info ("gsmi: failed to load: %d\n" , ret); +out_unregister:#ifdef CONFIG_PM platform_driver_unregister (&gsmi_driver_info);#endif +pr_info ("gsmi: failed to load: %d\n" , ret);return ret; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 69/772 EDAC/bluefield: Fix potential integer overflow
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Thompson <[email protected]>
[ Upstream commit 1fe774a93b46bb029b8f6fa9d1f25affa53f06c6 ]
The 64-bit argument for the "get DIMM info" SMC call consists of mem_ctrl_idx left-shifted 16 bits and OR-ed with DIMM index. With mem_ctrl_idx defined as 32-bits wide the left-shift operation truncates the upper 16 bits of information during the calculation of the SMC argument.
The mem_ctrl_idx stack variable must be defined as 64-bits wide to prevent any potential integer overflow, i.e. loss of data from upper 16 bits.
--- drivers/edac/bluefield_edac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/edac/bluefield_edac.c +1 -1
@@ -180,7 +180,7 @@ static void bluefield_edac_check(struct mem_ctl_info *mci)static void bluefield_edac_init_dimms (struct mem_ctl_info *mci) {struct bluefield_edac_priv *priv = mci->pvt_info; -int mem_ctrl_idx = mci->mc_idx; +u64 mem_ctrl_idx = mci->mc_idx;struct dimm_info *dimm;u64 smc_info, smc_arg;int is_empty =1 , i;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 70/772 crypto: qat - remove faulty arbiter config reset
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ahsan Atta <[email protected]>
[ Upstream commit 70199359902f1c7187dcb28a1be679a7081de7cc ]
Resetting the service arbiter config can cause potential issues related to response ordering and ring flow control check in the event of AER or device hang. This is because it results in changing the default response ring size from 32 bytes to 16 bytes. The service arbiter config reset also disables response ring flow control check. Thus, by removing this reset we can prevent the service arbiter from being configured inappropriately, which leads to undesired device behaviour in the event of errors.
--- drivers/crypto/qat/qat_common/adf_hw_arbiter.c | 4 ---- 1 file changed, 4 deletions(-)
drivers/crypto/qat/qat_common/adf_hw_arbiter.c +0 -4
@@ -90,10 +90,6 @@ void adf_exit_arb(struct adf_accel_dev *accel_dev) hw_data->get_arb_info (&info); -/* Reset arbiter configuration */ -for (i =0 ; i <ADF_ARB_NUM ; i++) -WRITE_CSR_ARB_SARCONFIG (csr, arb_off, i,0 ); -/* Unmap worker threads to service arbiters */ for (i =0 ; i < hw_data->num_engines; i++)WRITE_CSR_ARB_WT2SAM (csr, arb_off, wt_off, i,0 );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 71/772 thermal: core: Initialize thermal zones before registering them
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafael J. Wysocki <[email protected]>
[ Upstream commit 662f920f7e390db5d1a6792a2b0ffa59b6c962fc ]
Since user space can start interacting with a new thermal zone as soon as device_register() called by thermal_zone_device_register_with_trips() returns, it is better to initialize the thermal zone before calling device_register() on it.
--- drivers/thermal/thermal_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/thermal/thermal_core.c +1 -1
@@ -1271,6 +1271,7 @@ thermal_zone_device_register_with_trips(const char *type, struct thermal_trip *tthermal_zone_destroy_device_groups (tz); goto remove_id; } +thermal_zone_device_init (tz); result =device_register (&tz->device);if (result) goto release_device;
@@ -1313,7 +1314,6 @@ thermal_zone_device_register_with_trips(const char *type, struct thermal_trip *tINIT_DELAYED_WORK (&tz->poll_queue, thermal_zone_device_check); -thermal_zone_device_init (tz);/* Update the new thermal zone and mark it as already updated. */ if (atomic_cmpxchg (&tz->need_update,1 ,0 ))thermal_zone_device_update (tz,THERMAL_EVENT_UNSPECIFIED );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 72/772 EDAC/fsl_ddr: Fix bad bit shift operations
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Priyanka Singh <[email protected]>
[ Upstream commit 9ec22ac4fe766c6abba845290d5139a3fbe0153b ]
Fix undefined behavior caused by left-shifting a negative value in the expression:
cap_high ^ (1 << (bad_data_bit - 32))
The variable bad_data_bit ranges from 0 to 63. When it is less than 32, bad_data_bit - 32 becomes negative, and left-shifting by a negative value in C is undefined behavior.
Fix this by combining cap_high and cap_low into a 64-bit variable.
[ bp: Massage commit message, simplify error bits handling. ]
--- drivers/edac/fsl_ddr_edac.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)
drivers/edac/fsl_ddr_edac.c +13 -9
@@ -329,21 +329,25 @@ static void fsl_mc_check(struct mem_ctl_info *mci)* TODO: Add support for 32-bit wide buses */ if ((err_detect &DDR_EDE_SBE ) && (bus_width ==64 )) { +u64 cap = (u64 )cap_high <<32 | cap_low; +u32 s = syndrome; +sbe_ecc_decode (cap_high, cap_low, syndrome, &bad_data_bit, &bad_ecc_bit); -if (bad_data_bit !=-1 ) -fsl_mc_printk (mci,KERN_ERR , -"Faulty Data bit: %d\n" , bad_data_bit); -if (bad_ecc_bit !=-1 ) -fsl_mc_printk (mci,KERN_ERR , -"Faulty ECC bit: %d\n" , bad_ecc_bit); +if (bad_data_bit >=0 ) { +fsl_mc_printk (mci,KERN_ERR ,"Faulty Data bit: %d\n" , bad_data_bit); + cap ^=1ULL << bad_data_bit; + } + +if (bad_ecc_bit >=0 ) { +fsl_mc_printk (mci,KERN_ERR ,"Faulty ECC bit: %d\n" , bad_ecc_bit); + s ^=1 << bad_ecc_bit; + }fsl_mc_printk (mci,KERN_ERR ,"Expected Data / ECC:\t%#8.8x_%08x / %#2.2x\n" , - cap_high ^ (1 << (bad_data_bit -32 )), - cap_low ^ (1 << bad_data_bit), - syndrome ^ (1 << bad_ecc_bit)); +upper_32_bits (cap),lower_32_bits (cap), s); } fsl_mc_printk(mci, KERN_ERR,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 73/772 crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Yang <[email protected]>
[ Upstream commit 662f2f13e66d3883b9238b0b96b17886179e60e2 ]
Since commit 8f4f68e788c3 ("crypto: pcrypt - Fix hungtask for PADATA_RESET"), the pcrypt encryption and decryption operations return -EAGAIN when the CPU goes online or offline. In alg_test(), a WARN is generated when pcrypt_aead_decrypt() or pcrypt_aead_encrypt() returns -EAGAIN, the unnecessary panic will occur when panic_on_warn set 1. Fix this issue by calling crypto layer directly without parallelization in that case.
--- crypto/pcrypt.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
crypto/pcrypt.c +8 -4
@@ -117,8 +117,10 @@ static int pcrypt_aead_encrypt(struct aead_request *req) err =padata_do_parallel (ictx->psenc, padata, &ctx->cb_cpu);if (!err)return -EINPROGRESS ; -if (err == -EBUSY ) -return -EAGAIN ; +if (err == -EBUSY ) { +/* try non-parallel mode */ +return crypto_aead_encrypt (creq); + }return err; }
@@ -166,8 +168,10 @@ static int pcrypt_aead_decrypt(struct aead_request *req) err =padata_do_parallel (ictx->psdec, padata, &ctx->cb_cpu);if (!err)return -EINPROGRESS ; -if (err == -EBUSY ) -return -EAGAIN ; +if (err == -EBUSY ) { +/* try non-parallel mode */ +return crypto_aead_decrypt (creq); + }return err; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 74/772 crypto: cavium - Fix the if condition to exit loop after timeout
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Everest K.C <[email protected]>
[ Upstream commit 53d91ca76b6c426c546542a44c78507b42008c9e ]
The while loop breaks in the first run because of incorrect if condition. It also causes the statements after the if to appear dead.
Fix this by changing the condition from if(timeout--) to if(!timeout--).
This bug was reported by Coverity Scan.
Report:
CID 1600859: (#1 of 1): Logically dead code (DEADCODE)dead_error_line: Execution cannot reach this statement: udelay(30UL);
--- drivers/crypto/cavium/cpt/cptpf_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/crypto/cavium/cpt/cptpf_main.c +2 -2
@@ -44,7 +44,7 @@ static void cpt_disable_cores(struct cpt_device *cpt, u64 coremask,dev_err (dev,"Cores still busy %llx" , coremask); grp =cpt_read_csr64 (cpt->reg_base,CPTX_PF_EXEC_BUSY (0 )); -if (timeout--) +if (!timeout--)break ;udelay (CSR_DELAY );
@@ -394,7 +394,7 @@ static void cpt_disable_all_cores(struct cpt_device *cpt)dev_err (dev,"Cores still busy" ); grp =cpt_read_csr64 (cpt->reg_base,CPTX_PF_EXEC_BUSY (0 )); -if (timeout--) +if (!timeout--)break ;udelay (CSR_DELAY );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 75/772 crypto: hisilicon/qm - disable same error report before resetting
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Weili Qian <[email protected]>
[ Upstream commit c418ba6baca3ae10ffaf47b0803d2a9e6bf1af96 ]
If an error indicating that the device needs to be reset is reported, disable the error reporting before device reset is complete, enable the error reporting after the reset is complete to prevent the same error from being reported repeatedly.
--- drivers/crypto/hisilicon/hpre/hpre_main.c | 35 ++++++++++++++--- drivers/crypto/hisilicon/qm.c | 47 +++++++---------------- drivers/crypto/hisilicon/sec2/sec_main.c | 35 ++++++++++++++--- drivers/crypto/hisilicon/zip/zip_main.c | 35 ++++++++++++++--- include/linux/hisi_acc_qm.h | 8 +++- 5 files changed, 110 insertions(+), 50 deletions(-)
drivers/crypto/hisilicon/hpre/hpre_main.c +30 -5
@@ -1281,11 +1281,15 @@ static u32 hpre_get_hw_err_status(struct hisi_qm *qm)static void hpre_clear_hw_err_status (struct hisi_qm *qm,u32 err_sts) { -u32 nfe; -writel (err_sts, qm->io_base +HPRE_HAC_SOURCE_INT ); - nfe =hisi_qm_get_hw_info (qm, hpre_basic_info,HPRE_NFE_MASK_CAP , qm->cap_ver); -writel (nfe, qm->io_base +HPRE_RAS_NFE_ENB ); +} + +static void hpre_disable_error_report (struct hisi_qm *qm,u32 err_type) +{ +u32 nfe_mask; + + nfe_mask =hisi_qm_get_hw_info (qm, hpre_basic_info,HPRE_NFE_MASK_CAP , qm->cap_ver); +writel (nfe_mask & (~err_type), qm->io_base +HPRE_RAS_NFE_ENB ); }static void hpre_open_axi_master_ooo (struct hisi_qm *qm)
@@ -1299,6 +1303,27 @@ static void hpre_open_axi_master_ooo(struct hisi_qm *qm) qm->io_base + HPRE_AM_OOO_SHUTDOWN_ENB); } +static enum acc_err_result hpre_get_err_result (struct hisi_qm *qm) +{ +u32 err_status; + + err_status =hpre_get_hw_err_status (qm); +if (err_status) { +if (err_status & qm->err_info.ecc_2bits_mask) + qm->err_status.is_dev_ecc_mbit = true; +hpre_log_hw_error (qm, err_status); + +if (err_status & qm->err_info.dev_reset_mask) { +/* Disable the same error reporting until device is recovered. */ +hpre_disable_error_report (qm, err_status); +return ACC_ERR_NEED_RESET ; + } +hpre_clear_hw_err_status (qm, err_status); + } + +return ACC_ERR_RECOVERED ; +} +static void hpre_err_info_init (struct hisi_qm *qm) {struct hisi_qm_err_info *err_info = &qm->err_info;
@@ -1325,12 +1350,12 @@ static const struct hisi_qm_err_ini hpre_err_ini = { .hw_err_disable = hpre_hw_error_disable, .get_dev_hw_err_status = hpre_get_hw_err_status, .clear_dev_hw_err_status = hpre_clear_hw_err_status, - .log_dev_hw_err = hpre_log_hw_error, .open_axi_master_ooo = hpre_open_axi_master_ooo, .open_sva_prefetch = hpre_open_sva_prefetch, .close_sva_prefetch = hpre_close_sva_prefetch, .show_last_dfx_regs = hpre_show_last_dfx_regs, .err_info_init = hpre_err_info_init, + .get_err_result = hpre_get_err_result, };static int hpre_pf_probe_init (struct hpre *hpre)
drivers/crypto/hisilicon/qm.c +13 -34
77 lines not on this page · raw message
drivers/crypto/hisilicon/sec2/sec_main.c +30 -5
@@ -1008,11 +1008,15 @@ static u32 sec_get_hw_err_status(struct hisi_qm *qm)static void sec_clear_hw_err_status (struct hisi_qm *qm,u32 err_sts) { -u32 nfe; -writel (err_sts, qm->io_base +SEC_CORE_INT_SOURCE ); - nfe =hisi_qm_get_hw_info (qm, sec_basic_info,SEC_NFE_MASK_CAP , qm->cap_ver); -writel (nfe, qm->io_base +SEC_RAS_NFE_REG ); +} + +static void sec_disable_error_report (struct hisi_qm *qm,u32 err_type) +{ +u32 nfe_mask; + + nfe_mask =hisi_qm_get_hw_info (qm, sec_basic_info,SEC_NFE_MASK_CAP , qm->cap_ver); +writel (nfe_mask & (~err_type), qm->io_base +SEC_RAS_NFE_REG ); }static void sec_open_axi_master_ooo (struct hisi_qm *qm)
@@ -1024,6 +1028,27 @@ static void sec_open_axi_master_ooo(struct hisi_qm *qm)writel (val |SEC_AXI_SHUTDOWN_ENABLE , qm->io_base +SEC_CONTROL_REG ); } +static enum acc_err_result sec_get_err_result (struct hisi_qm *qm) +{ +u32 err_status; + + err_status =sec_get_hw_err_status (qm); +if (err_status) { +if (err_status & qm->err_info.ecc_2bits_mask) + qm->err_status.is_dev_ecc_mbit = true; +sec_log_hw_error (qm, err_status); + +if (err_status & qm->err_info.dev_reset_mask) { +/* Disable the same error reporting until device is recovered. */ +sec_disable_error_report (qm, err_status); +return ACC_ERR_NEED_RESET ; + } +sec_clear_hw_err_status (qm, err_status); + } + +return ACC_ERR_RECOVERED ; +} +static void sec_err_info_init (struct hisi_qm *qm) {struct hisi_qm_err_info *err_info = &qm->err_info;
@@ -1050,12 +1075,12 @@ static const struct hisi_qm_err_ini sec_err_ini = { .hw_err_disable = sec_hw_error_disable, .get_dev_hw_err_status = sec_get_hw_err_status, .clear_dev_hw_err_status = sec_clear_hw_err_status, - .log_dev_hw_err = sec_log_hw_error, .open_axi_master_ooo = sec_open_axi_master_ooo, .open_sva_prefetch = sec_open_sva_prefetch, .close_sva_prefetch = sec_close_sva_prefetch, .show_last_dfx_regs = sec_show_last_dfx_regs, .err_info_init = sec_err_info_init, + .get_err_result = sec_get_err_result, };static int sec_pf_probe_init (struct sec_dev *sec)
drivers/crypto/hisilicon/zip/zip_main.c +30 -5
@@ -1069,11 +1069,15 @@ static u32 hisi_zip_get_hw_err_status(struct hisi_qm *qm)static void hisi_zip_clear_hw_err_status (struct hisi_qm *qm,u32 err_sts) { -u32 nfe; -writel (err_sts, qm->io_base +HZIP_CORE_INT_SOURCE ); - nfe =hisi_qm_get_hw_info (qm, zip_basic_cap_info,ZIP_NFE_MASK_CAP , qm->cap_ver); -writel (nfe, qm->io_base +HZIP_CORE_INT_RAS_NFE_ENB ); +} + +static void hisi_zip_disable_error_report (struct hisi_qm *qm,u32 err_type) +{ +u32 nfe_mask; + + nfe_mask =hisi_qm_get_hw_info (qm, zip_basic_cap_info,ZIP_NFE_MASK_CAP , qm->cap_ver); +writel (nfe_mask & (~err_type), qm->io_base +HZIP_CORE_INT_RAS_NFE_ENB ); }static void hisi_zip_open_axi_master_ooo (struct hisi_qm *qm)
@@ -1103,6 +1107,27 @@ static void hisi_zip_close_axi_master_ooo(struct hisi_qm *qm) qm->io_base + HZIP_CORE_INT_SET); } +static enum acc_err_result hisi_zip_get_err_result (struct hisi_qm *qm) +{ +u32 err_status; + + err_status =hisi_zip_get_hw_err_status (qm); +if (err_status) { +if (err_status & qm->err_info.ecc_2bits_mask) + qm->err_status.is_dev_ecc_mbit = true; +hisi_zip_log_hw_error (qm, err_status); + +if (err_status & qm->err_info.dev_reset_mask) { +/* Disable the same error reporting until device is recovered. */ +hisi_zip_disable_error_report (qm, err_status); +return ACC_ERR_NEED_RESET ; + } +hisi_zip_clear_hw_err_status (qm, err_status); + } + +return ACC_ERR_RECOVERED ; +} +static void hisi_zip_err_info_init (struct hisi_qm *qm) {struct hisi_qm_err_info *err_info = &qm->err_info;
@@ -1130,13 +1155,13 @@ static const struct hisi_qm_err_ini hisi_zip_err_ini = { .hw_err_disable = hisi_zip_hw_error_disable, .get_dev_hw_err_status = hisi_zip_get_hw_err_status, .clear_dev_hw_err_status = hisi_zip_clear_hw_err_status, - .log_dev_hw_err = hisi_zip_log_hw_error, .open_axi_master_ooo = hisi_zip_open_axi_master_ooo, .close_axi_master_ooo = hisi_zip_close_axi_master_ooo, .open_sva_prefetch = hisi_zip_open_sva_prefetch, .close_sva_prefetch = hisi_zip_close_sva_prefetch, .show_last_dfx_regs = hisi_zip_show_last_dfx_regs, .err_info_init = hisi_zip_err_info_init, + .get_err_result = hisi_zip_get_err_result, };static int hisi_zip_pf_probe_init (struct hisi_zip *hisi_zip)
include/linux/hisi_acc_qm.h +7 -1
@@ -226,6 +226,12 @@ struct hisi_qm_status {struct hisi_qm ; +enum acc_err_result { +ACC_ERR_NONE , +ACC_ERR_NEED_RESET , +ACC_ERR_RECOVERED , +}; +struct hisi_qm_err_info {char *acpi_rst;u32 msi_wr_port;
@@ -254,9 +260,9 @@ struct hisi_qm_err_ini {void (*close_axi_master_ooo)(struct hisi_qm *qm);void (*open_sva_prefetch)(struct hisi_qm *qm);void (*close_sva_prefetch)(struct hisi_qm *qm); -void (*log_dev_hw_err)(struct hisi_qm *qm,u32 err_sts);void (*show_last_dfx_regs)(struct hisi_qm *qm);void (*err_info_init)(struct hisi_qm *qm); +enum acc_err_result (*get_err_result)(struct hisi_qm *qm); };struct hisi_qm_cap_info {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 76/772 EDAC/igen6: Avoid segmentation fault on module unload
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Orange Kao <[email protected]>
[ Upstream commit fefaae90398d38a1100ccd73b46ab55ff4610fba ]
The segmentation fault happens because:
During modprobe:
1. In igen6_probe(), igen6_pvt will be allocated with kzalloc()
2. In igen6_register_mci(), mci->pvt_info will point to &igen6_pvt->imc[mc]
During rmmod:
1. In mci_release() in edac_mc.c, it will kfree(mci->pvt_info)
2. In igen6_remove(), it will kfree(igen6_pvt);
Fix this issue by setting mci->pvt_info to NULL to avoid the double kfree.
--- drivers/edac/igen6_edac.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/edac/igen6_edac.c +2 -0
@@ -1075,6 +1075,7 @@ static int igen6_register_mci(int mc, u64 mchbar, struct pci_dev *pdev) imc->mci = mci;return 0 ; fail3: + mci->pvt_info =NULL ;kfree (mci->ctl_name); fail2:edac_mc_free (mci);
@@ -1099,6 +1100,7 @@ static void igen6_unregister_mcis(void)edac_mc_del_mc (mci->pdev);kfree (mci->ctl_name); + mci->pvt_info =NULL ;edac_mc_free (mci);iounmap (imc->window); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 77/772 crypto: inside-secure - Fix the return value of safexcel_xcbcmac_cra_init()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Huafei <[email protected]>
[ Upstream commit a10549fcce2913be7dc581562ffd8ea35653853e ]
The commit 320406cb60b6 ("crypto: inside-secure - Replace generic aes with libaes") replaced crypto_alloc_cipher() with kmalloc(), but did not modify the handling of the return value. When kmalloc() returns NULL, PTR_ERR_OR_ZERO(NULL) returns 0, but in fact, the memory allocation has failed, and -ENOMEM should be returned.
--- drivers/crypto/inside-secure/safexcel_hash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/inside-secure/safexcel_hash.c +1 -1
@@ -2119,7 +2119,7 @@ static int safexcel_xcbcmac_cra_init(struct crypto_tfm *tfm)safexcel_ahash_cra_init (tfm); ctx->aes =kmalloc (sizeof (*ctx->aes),GFP_KERNEL ); -return PTR_ERR_OR_ZERO (ctx->aes); +return ctx->aes ==NULL ? -ENOMEM :0 ; }static void safexcel_xcbcmac_cra_exit (struct crypto_tfm *tfm)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 78/772 doc: rcu: update printed dynticks counter bits
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baruch Siach <[email protected]>
[ Upstream commit 4a09e358922381f9b258e863bcd9c910584203b9 ]
The stall warning prints 16 bits since commit 171476775d32 ("context_tracking: Convert state to atomic_t").
--- Documentation/RCU/stallwarn.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Documentation/RCU/stallwarn.rst +1 -1
@@ -243,7 +243,7 @@ ticks this GP)" indicates that this CPU has not taken any scheduling-clock interrupts during the current stalled grace period. The "idle=" portion of the message prints the dyntick-idle state. -The hex number before the first "/" is the low-order 12 bits of the +The hex number before the first "/" is the low-order 16 bits of the dynticks counter, which will have an even-numbered value if the CPU is in dyntick-idle mode and an odd-numbered value otherwise. The hex number between the two "/"s is the value of the nesting, which will be
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 79/772 hwmon: (nct6775-core) Fix overflows seen when writing limit attributes
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pei Xiao <[email protected]>
[ Upstream commit 57ee12b6c514146c19b6a159013b48727a012960 ]
DIV_ROUND_CLOSEST() after kstrtoul() results in an overflow if a large number such as 18446744073709551615 is provided by the user. Fix it by reordering clamp_val() and DIV_ROUND_CLOSEST() operations.
Message-ID: <7d5084cea33f7c0fd0578c59adfff71f93de94d9.1731375425.git.xiaopei01@kylinos.cn>
--- drivers/hwmon/nct6775-core.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/hwmon/nct6775-core.c +3 -4
@@ -2787,8 +2787,7 @@ store_target_temp(struct device *dev, struct device_attribute *attr,if (err <0 )return err; - val =clamp_val (DIV_ROUND_CLOSEST (val,1000 ),0 , - data->target_temp_mask); + val =DIV_ROUND_CLOSEST (clamp_val (val,0 , data->target_temp_mask *1000 ),1000 );mutex_lock (&data->update_lock); data->target_temp[nr] = val;
@@ -2868,7 +2867,7 @@ store_temp_tolerance(struct device *dev, struct device_attribute *attr,return err;/* Limit tolerance as needed */ - val =clamp_val (DIV_ROUND_CLOSEST (val,1000 ),0 , data->tolerance_mask); + val =DIV_ROUND_CLOSEST (clamp_val (val,0 , data->tolerance_mask *1000 ),1000 );mutex_lock (&data->update_lock); data->temp_tolerance[index][nr] = val;
@@ -2994,7 +2993,7 @@ store_weight_temp(struct device *dev, struct device_attribute *attr,if (err <0 )return err; - val =clamp_val (DIV_ROUND_CLOSEST (val,1000 ),0 ,255 ); + val =DIV_ROUND_CLOSEST (clamp_val (val,0 ,255000 ),1000 );mutex_lock (&data->update_lock); data->weight_temp[index][nr] = val;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 80/772 ACPI: CPPC: Fix _CPC register setting issue
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lifeng Zheng <[email protected]>
[ Upstream commit 2388b266c9fcc7c9169ba85c7f9ebe325b7622d7 ]
Since commit 60949b7b8054 ("ACPI: CPPC: Fix MASK_VAL() usage"), _CPC registers cannot be changed from 1 to 0.
It turns out that there is an extra OR after MASK_VAL_WRITE(), which has already ORed prev_val with the register mask.
Remove the extra OR to fix the problem.
--- drivers/acpi/cppc_acpi.c | 1 - 1 file changed, 1 deletion(-)
drivers/acpi/cppc_acpi.c +0 -1
@@ -1136,7 +1136,6 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)return -EFAULT ; } val =MASK_VAL_WRITE (reg, prev_val, val); - val |= prev_val; }switch (size) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 81/772 crypto: caam - add error check to caam_rsa_set_priv_key_form
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Ridong <[email protected]>
[ Upstream commit b64140c74e954f1db6eae5548ca3a1f41b6fad79 ]
The caam_rsa_set_priv_key_form did not check for memory allocation errors. Add the checks to the caam_rsa_set_priv_key_form functions.
--- drivers/crypto/caam/caampkc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
drivers/crypto/caam/caampkc.c +7 -4
@@ -979,7 +979,7 @@ static int caam_rsa_set_pub_key(struct crypto_akcipher *tfm, const void *key,return -ENOMEM ; } -static void caam_rsa_set_priv_key_form (struct caam_rsa_ctx *ctx, +static int caam_rsa_set_priv_key_form (struct caam_rsa_ctx *ctx,struct rsa_key *raw_key) {struct caam_rsa_key *rsa_key = &ctx->key;
@@ -988,7 +988,7 @@ static void caam_rsa_set_priv_key_form(struct caam_rsa_ctx *ctx, rsa_key->p =caam_read_raw_data (raw_key->p, &p_sz);if (!rsa_key->p) -return ; +return -ENOMEM ; rsa_key->p_sz = p_sz; rsa_key->q =caam_read_raw_data (raw_key->q, &q_sz);
@@ -1021,7 +1021,7 @@ static void caam_rsa_set_priv_key_form(struct caam_rsa_ctx *ctx, rsa_key->priv_form =FORM3 ; -return ; +return 0 ; free_dq:kfree_sensitive (rsa_key->dq);
@@ -1035,6 +1035,7 @@ static void caam_rsa_set_priv_key_form(struct caam_rsa_ctx *ctx,kfree_sensitive (rsa_key->q); free_p:kfree_sensitive (rsa_key->p); +return -ENOMEM ; } static int caam_rsa_set_priv_key(struct crypto_akcipher *tfm, const void *key,
@@ -1080,7 +1081,9 @@ static int caam_rsa_set_priv_key(struct crypto_akcipher *tfm, const void *key, rsa_key->e_sz = raw_key.e_sz; rsa_key->n_sz = raw_key.n_sz; -caam_rsa_set_priv_key_form (ctx, &raw_key); + ret =caam_rsa_set_priv_key_form (ctx, &raw_key); +if (ret) + goto err;return 0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 82/772 crypto: bcm - add error check in the ahash_hmac_init function
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Ridong <[email protected]>
[ Upstream commit 19630cf57233e845b6ac57c9c969a4888925467b ]
The ahash_init functions may return fails. The ahash_hmac_init should not return ok when ahash_init returns error. For an example, ahash_init will return -ENOMEM when allocation memory is error.
--- drivers/crypto/bcm/cipher.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/crypto/bcm/cipher.c +4 -1
@@ -2415,6 +2415,7 @@ static int ahash_hmac_setkey(struct crypto_ahash *ahash, const u8 *key,static int ahash_hmac_init (struct ahash_request *req) { +int ret;struct iproc_reqctx_s *rctx =ahash_request_ctx (req);struct crypto_ahash *tfm =crypto_ahash_reqtfm (req);struct iproc_ctx_s *ctx =crypto_ahash_ctx (tfm);
@@ -2424,7 +2425,9 @@ static int ahash_hmac_init(struct ahash_request *req)flow_log ("ahash_hmac_init()\n" );/* init the context as a hash */ -ahash_init (req); + ret =ahash_init (req); +if (ret) +return ret;if (!spu_no_incr_hash (ctx)) {/* SPU-M can do incr hashing but needs sw for outer HMAC */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 83/772 crypto: cavium - Fix an error handling path in cpt_ucode_load_fw()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <[email protected]>
[ Upstream commit 572b7cf08403b6c67dfe0dc3e0f2efb42443254f ]
If do_cpt_init() fails, a previous dma_alloc_coherent() call needs to be undone.
Add the needed dma_free_coherent() before returning.
--- drivers/crypto/cavium/cpt/cptpf_main.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/crypto/cavium/cpt/cptpf_main.c +2 -0
@@ -302,6 +302,8 @@ static int cpt_ucode_load_fw(struct cpt_device *cpt, const u8 *fw, bool is_ae) ret =do_cpt_init (cpt, mcode);if (ret) { +dma_free_coherent (&cpt->pdev->dev, mcode->code_size, + mcode->code, mcode->phys_base);dev_err (dev,"do_cpt_init failed with ret: %d\n" , ret); goto fw_release; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 84/772 tools/lib/thermal: Make more generic the command encoding function
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Lezcano <[email protected]>
[ Upstream commit 24b216b2d13568c703a76137ef54a2a9531a71d8 ]
The thermal netlink has been extended with more commands which require an encoding with more information. The generic encoding function puts the thermal zone id with the command name. It is the unique parameters.
The next changes will provide more parameters to the command. Set the scene for those new parameters by making the encoding function more generic.
Stable-dep-of: 7569406e95f2 ("thermal/lib: Fix memory leak on error in thermal_genl_auto()")
--- tools/lib/thermal/commands.c | 41 ++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-)
tools/lib/thermal/commands.c +32 -9
@@ -261,8 +261,23 @@ static struct genl_ops thermal_cmd_ops = { .o_ncmds = ARRAY_SIZE(thermal_cmds), }; -static thermal_error_t thermal_genl_auto (struct thermal_handler *th,int id,int cmd, -int flags,void *arg) +struct cmd_param { +int tz_id; +}; + +typedef int (*cmd_cb_t )(struct nl_msg *,struct cmd_param *); + +static int thermal_genl_tz_id_encode (struct nl_msg *msg,struct cmd_param *p) +{ +if (p->tz_id >=0 &&nla_put_u32 (msg,THERMAL_GENL_ATTR_TZ_ID , p->tz_id)) +return -1 ; + +return 0 ; +} + +static thermal_error_t thermal_genl_auto (struct thermal_handler *th,cmd_cb_t cmd_cb, +struct cmd_param *param, +int cmd,int flags,void *arg) {struct nl_msg *msg;void *hdr;
@@ -276,7 +291,7 @@ static thermal_error_t thermal_genl_auto(struct thermal_handler *th, int id, intif (!hdr)return THERMAL_ERROR ; -if (id >=0 &&nla_put_u32 (msg,THERMAL_GENL_ATTR_TZ_ID , id)) +if (cmd_cb &&cmd_cb (msg, param))return THERMAL_ERROR ;if (nl_send_msg (th->sk_cmd, th->cb_cmd, msg, genl_handle_msg, arg))
@@ -289,30 +304,38 @@ static thermal_error_t thermal_genl_auto(struct thermal_handler *th, int id, intthermal_error_t thermal_cmd_get_tz (struct thermal_handler *th,struct thermal_zone **tz) { -return thermal_genl_auto (th,-1 ,THERMAL_GENL_CMD_TZ_GET_ID , +return thermal_genl_auto (th,NULL ,NULL ,THERMAL_GENL_CMD_TZ_GET_ID ,NLM_F_DUMP |NLM_F_ACK , tz); }thermal_error_t thermal_cmd_get_cdev (struct thermal_handler *th,struct thermal_cdev **tc) { -return thermal_genl_auto (th,-1 ,THERMAL_GENL_CMD_CDEV_GET , +return thermal_genl_auto (th,NULL ,NULL ,THERMAL_GENL_CMD_CDEV_GET ,NLM_F_DUMP |NLM_F_ACK , tc); }thermal_error_t thermal_cmd_get_trip (struct thermal_handler *th,struct thermal_zone *tz) { -return thermal_genl_auto (th, tz->id,THERMAL_GENL_CMD_TZ_GET_TRIP , -0 , tz); +struct cmd_param p = { .tz_id = tz->id }; + +return thermal_genl_auto (th, thermal_genl_tz_id_encode, &p, +THERMAL_GENL_CMD_TZ_GET_TRIP ,0 , tz); }thermal_error_t thermal_cmd_get_governor (struct thermal_handler *th,struct thermal_zone *tz) { -return thermal_genl_auto (th, tz->id,THERMAL_GENL_CMD_TZ_GET_GOV ,0 , tz); +struct cmd_param p = { .tz_id = tz->id }; + +return thermal_genl_auto (th, thermal_genl_tz_id_encode, &p, +THERMAL_GENL_CMD_TZ_GET_GOV ,0 , tz); }thermal_error_t thermal_cmd_get_temp (struct thermal_handler *th,struct thermal_zone *tz) { -return thermal_genl_auto (th, tz->id,THERMAL_GENL_CMD_TZ_GET_TEMP ,0 , tz); +struct cmd_param p = { .tz_id = tz->id }; + +return thermal_genl_auto (th, thermal_genl_tz_id_encode, &p, +THERMAL_GENL_CMD_TZ_GET_TEMP ,0 , tz); }thermal_error_t thermal_cmd_exit (struct thermal_handler *th)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 85/772 thermal/lib: Fix memory leak on error in thermal_genl_auto()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Lezcano <[email protected]>
[ Upstream commit 7569406e95f2353070d88ebc88e8c13698542317 ]
The function thermal_genl_auto() does not free the allocated message in the error path. Fix that by putting a out label and jump to it which will free the message instead of directly returning an error.
--- tools/lib/thermal/commands.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
tools/lib/thermal/commands.c +7 -4
@@ -279,6 +279,7 @@ static thermal_error_t thermal_genl_auto(struct thermal_handler *th, cmd_cb_t cmstruct cmd_param *param, int cmd, int flags, void *arg) { + thermal_error_t ret = THERMAL_ERROR;struct nl_msg *msg;void *hdr;
@@ -289,17 +290,19 @@ static thermal_error_t thermal_genl_auto(struct thermal_handler *th, cmd_cb_t cm hdr =genlmsg_put (msg,NL_AUTO_PORT ,NL_AUTO_SEQ , thermal_cmd_ops.o_id,0 , flags, cmd,THERMAL_GENL_VERSION );if (!hdr) -return THERMAL_ERROR ; + goto out;if (cmd_cb &&cmd_cb (msg, param)) -return THERMAL_ERROR ; + goto out;if (nl_send_msg (th->sk_cmd, th->cb_cmd, msg, genl_handle_msg, arg)) -return THERMAL_ERROR ; + goto out; + ret =THERMAL_SUCCESS ; +out:nlmsg_free (msg); -return THERMAL_SUCCESS ; +return ret; }thermal_error_t thermal_cmd_get_tz (struct thermal_handler *th,struct thermal_zone **tz)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 86/772 time: Fix references to _msecs_to_jiffies() handling of values
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miguel Ojeda <[email protected]>
[ Upstream commit 92b043fd995a63a57aae29ff85a39b6f30cd440c ]
The details about the handling of the "normal" values were moved to the _msecs_to_jiffies() helpers in commit ca42aaf0c861 ("time:
Refactor msecs_to_jiffies"). However, the same commit still mentioned __msecs_to_jiffies() in the added documentation.
Thus point to _msecs_to_jiffies() instead.
--- include/linux/jiffies.h | 2 +- kernel/time/time.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
include/linux/jiffies.h +1 -1
@@ -349,7 +349,7 @@ static inline unsigned long _msecs_to_jiffies(const unsigned int m)* - all other values are converted to jiffies by either multiplying * the input value by a factor or dividing it with a factor and * handling any 32-bit overflows. -* for the details see __msecs_to_jiffies() +* for the details see _msecs_to_jiffies() * * msecs_to_jiffies() checks for the passed in value being a constant * via __builtin_constant_p() allowing gcc to eliminate most of the
kernel/time/time.c +1 -1
@@ -539,7 +539,7 @@ EXPORT_SYMBOL(ns_to_timespec64);* - all other values are converted to jiffies by either multiplying * the input value by a factor or dividing it with a factor and * handling any 32-bit overflows. -* for the details see __msecs_to_jiffies() +* for the details see _msecs_to_jiffies() * * msecs_to_jiffies() checks for the passed in value being a constant * via __builtin_constant_p() allowing gcc to eliminate most of the
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 87/772 seqlock/latch: Provide raw_read_seqcount_latch_retry()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <[email protected]>
[ Upstream commit d16317de9b412aa7bd3598c607112298e36b4352 ]
The read side of seqcount_latch consists of:
do {
seq = raw_read_seqcount_latch(&latch->seq);
...
} while (read_seqcount_latch_retry(&latch->seq, seq));which is asymmetric in the raw_ department, and sure enough, read_seqcount_latch_retry() includes (explicit) instrumentation where raw_read_seqcount_latch() does not.
This inconsistency becomes a problem when trying to use it from noinstr code. As such, fix it by renaming and re-implementing raw_read_seqcount_latch_retry() without the instrumentation.
Specifically the instrumentation in question is kcsan_atomic_next(0) in do___read_seqcount_retry(). Loosing this annotation is not a problem because raw_read_seqcount_latch() does not pass through kcsan_atomic_next(KCSAN_SEQLOCK_REGION_MAX).
Stable-dep-of: 5c1806c41ce0 ("kcsan, seqlock: Support seqcount_latch_t")
--- include/linux/rbtree_latch.h | 2 +- include/linux/seqlock.h | 15 ++++++++------- kernel/printk/printk.c | 2 +- kernel/time/sched_clock.c | 2 +- kernel/time/timekeeping.c | 4 ++-- 5 files changed, 13 insertions(+), 12 deletions(-)
include/linux/rbtree_latch.h +1 -1
@@ -206,7 +206,7 @@ latch_tree_find(void *key, struct latch_tree_root *root,do { seq =raw_read_seqcount_latch (&root->seq); node =__lt_find (key, root, seq &1 , ops->comp); - }while (read_seqcount_latch_retry (&root->seq, seq)); + }while (raw_read_seqcount_latch_retry (&root->seq, seq));return node; }
include/linux/seqlock.h +8 -7
@@ -671,9 +671,9 @@ typedef struct {* * Return: sequence counter raw value. Use the lowest bit as an index for * picking which data copy to read. The full counter must then be checked -* with read_seqcount_latch_retry(). +* with raw_read_seqcount_latch_retry(). */ -static inline unsigned raw_read_seqcount_latch (const seqcount_latch_t *s) +static __always_inline unsigned raw_read_seqcount_latch (const seqcount_latch_t *s) {/* * Pairs with the first smp_wmb() in raw_write_seqcount_latch().
@@ -683,16 +683,17 @@ static inline unsigned raw_read_seqcount_latch(const seqcount_latch_t *s) }/** -* read_seqcount_latch_retry() - end a seqcount_latch_t read section +* raw_read_seqcount_latch_retry() - end a seqcount_latch_t read section * @s: Pointer to seqcount_latch_t * @start: count, from raw_read_seqcount_latch() * * Return: true if a read section retry is required, else false */ -static inline int -read_seqcount_latch_retry (const seqcount_latch_t *s,unsigned start) +static __always_inline int +raw_read_seqcount_latch_retry (const seqcount_latch_t *s,unsigned start) { -return read_seqcount_retry (&s->seqcount, start); +smp_rmb (); +return unlikely (READ_ONCE (s->seqcount.sequence) != start); }/**
@@ -752,7 +753,7 @@ read_seqcount_latch_retry(const seqcount_latch_t *s, unsigned start)* entry = data_query(latch->data[idx], ...); * * // This includes needed smp_rmb() -* } while (read_seqcount_latch_retry(&latch->seq, seq)); +* } while (raw_read_seqcount_latch_retry(&latch->seq, seq)); * * return entry; * }
kernel/printk/printk.c +1 -1
@@ -457,7 +457,7 @@ static u64 latched_seq_read_nolock(struct latched_seq *ls) seq =raw_read_seqcount_latch (&ls->latch); idx = seq &0x1 ; val = ls->val[idx]; - }while (read_seqcount_latch_retry (&ls->latch, seq)); + }while (raw_read_seqcount_latch_retry (&ls->latch, seq));return val; }
kernel/time/sched_clock.c +1 -1
@@ -77,7 +77,7 @@ notrace struct clock_read_data *sched_clock_read_begin(unsigned int *seq) notrace int sched_clock_read_retry(unsigned int seq) { -return read_seqcount_latch_retry (&cd.seq, seq); +return raw_read_seqcount_latch_retry (&cd.seq, seq); }unsigned long long notrace sched_clock (void )
kernel/time/timekeeping.c +2 -2
@@ -450,7 +450,7 @@ static __always_inline u64 __ktime_get_fast_ns(struct tk_fast *tkf) tkr = tkf->base + (seq &0x01 ); now =ktime_to_ns (tkr->base); now +=fast_tk_get_delta_ns (tkr); - }while (read_seqcount_latch_retry (&tkf->seq, seq)); + }while (raw_read_seqcount_latch_retry (&tkf->seq, seq));return now; }
@@ -566,7 +566,7 @@ static __always_inline u64 __ktime_get_real_fast(struct tk_fast *tkf, u64 *mono) basem =ktime_to_ns (tkr->base); baser =ktime_to_ns (tkr->base_real); delta =fast_tk_get_delta_ns (tkr); - }while (read_seqcount_latch_retry (&tkf->seq, seq)); + }while (raw_read_seqcount_latch_retry (&tkf->seq, seq));if (mono) *mono = basem + delta;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 88/772 kcsan, seqlock: Support seqcount_latch_t
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Elver <[email protected]>
[ Upstream commit 5c1806c41ce0a0110db5dd4c483cf2dc28b3ddf0 ]
While fuzzing an arm64 kernel, Alexander Potapenko reported:
| BUG: KCSAN: data-race in ktime_get_mono_fast_ns / timekeeping_update | | write to 0xffffffc082e74248 of 56 bytes by interrupt on cpu 0: | update_fast_timekeeper kernel/time/timekeeping.c:430 [inline] | timekeeping_update+0x1d8/0x2d8 kernel/time/timekeeping.c:768 | timekeeping_advance+0x9e8/0xb78 kernel/time/timekeeping.c:2344 | update_wall_time+0x18/0x38 kernel/time/timekeeping.c:2360 | [...] | | read to 0xffffffc082e74258 of 8 bytes by task 5260 on cpu 1: | __ktime_get_fast_ns kernel/time/timekeeping.c:372 [inline] | ktime_get_mono_fast_ns+0x88/0x174 kernel/time/timekeeping.c:489 | init_srcu_struct_fields+0x40c/0x530 kernel/rcu/srcutree.c:263 | init_srcu_struct+0x14/0x20 kernel/rcu/srcutree.c:311 | [...] | | value changed: 0x000002f875d33266 -> 0x000002f877416866 | | Reported by Kernel Concurrency Sanitizer on: | CPU: 1 UID: 0 PID: 5260 Comm: syz.2.7483 Not tainted 6.12.0-rc3-dirty #78
This is a false positive data race between a seqcount latch writer and a reader accessing stale data. Since its introduction, KCSAN has never understood the seqcount_latch interface (due to being unannotated).
Unlike the regular seqlock interface, the seqcount_latch interface for latch writers never has had a well-defined critical section, making it difficult to teach tooling where the critical section starts and ends.
Introduce an instrumentable (non-raw) seqcount_latch interface, with which we can clearly denote writer critical sections. This both helps readability and tooling like KCSAN to understand when the writer is done updating all latch copies.
--- Documentation/locking/seqlock.rst | 2 +- include/linux/seqlock.h | 86 +++++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 16 deletions(-)
Documentation/locking/seqlock.rst +1 -1
@@ -153,7 +153,7 @@ Use seqcount_latch_t when the write side sections cannot be protected from interruption by readers. This is typically the case when the read side can be invoked from NMI handlers. -Check `raw_write_seqcount_latch()` for more information. +Check `write_seqcount_latch()` for more information. .. _seqlock_t:
include/linux/seqlock.h +71 -15
127 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 89/772 kcsan, seqlock: Fix incorrect assumption in read_seqbegin()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Elver <[email protected]>
[ Upstream commit 183ec5f26b2fc97a4a9871865bfe9b33c41fddb2 ]
During testing of the preceding changes, I noticed that in some cases, current->kcsan_ctx.in_flat_atomic remained true until task exit. This is obviously wrong, because _all_ accesses for the given task will be treated as atomic, resulting in false negatives i.e. missed data races.
Debugging led to fs/dcache.c, where we can see this usage of seqlock:
struct dentry *d_lookup(const struct dentry *parent, const struct qstr *name)
{
struct dentry *dentry;
unsigned seq;
do {
seq = read_seqbegin(&rename_lock);
dentry = __d_lookup(parent, name);
if (dentry)
break;
} while (read_seqretry(&rename_lock, seq));
[...]As can be seen, read_seqretry() is never called if dentry != NULL; consequently, current->kcsan_ctx.in_flat_atomic will never be reset to false by read_seqretry().
Give up on the wrong assumption of "assume closing read_seqretry()", and rely on the already-present annotations in read_seqcount_begin/retry().
--- include/linux/seqlock.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
include/linux/seqlock.h +1 -11
@@ -890,11 +890,7 @@ typedef struct {*/ static inline unsigned read_seqbegin (const seqlock_t *sl) { -unsigned ret =read_seqcount_begin (&sl->seqcount); - -kcsan_atomic_next (0 );/* non-raw usage, assume closing read_seqretry() */ -kcsan_flat_atomic_begin (); -return ret; +return read_seqcount_begin (&sl->seqcount); }/**
@@ -910,12 +906,6 @@ static inline unsigned read_seqbegin(const seqlock_t *sl)*/ static inline unsigned read_seqretry (const seqlock_t *sl,unsigned start) { -/* -* Assume not nested: read_seqretry() may be called multiple times when -* completing read critical section. -*/ -kcsan_flat_atomic_end (); -return read_seqcount_retry (&sl->seqcount, start); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 90/772 clocksource/drivers:sp804: Make user selectable
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Brown <[email protected]>
[ Upstream commit 0309f714a0908e947af1c902cf6a330cb593e75e ]
The sp804 is currently only user selectable if COMPILE_TEST, this was done by commit dfc82faad725 ("clocksource/drivers/sp804: Add COMPILE_TEST to CONFIG_ARM_TIMER_SP804") in order to avoid it being spuriously offered on platforms that won't have the hardware since it's generally only seen on Arm based platforms. This config is overly restrictive, while platforms that rely on the SP804 do select it in their Kconfig there are others such as the Arm fast models which have a SP804 available but currently unused by Linux. Relax the dependency to allow it to be user selectable on arm and arm64 to avoid surprises and in case someone comes up with a use for extra timer hardware.
--- drivers/clocksource/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/clocksource/Kconfig +2 -1
@@ -390,7 +390,8 @@ config ARM_GT_INITIAL_PRESCALER_VAL This affects CPU_FREQ max delta from the initial frequency. config ARM_TIMER_SP804 - bool "Support for Dual Timer SP804 module" if COMPILE_TEST + bool "Support for Dual Timer SP804 module" + depends on ARM || ARM64 || COMPILE_TEST depends on GENERIC_SCHED_CLOCK && HAVE_CLK select CLKSRC_MMIO select TIMER_OF if OF
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 91/772 clocksource/drivers/timer-ti-dm: Fix child node refcount handling
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
[ Upstream commit e5cfc0989d9a2849c51c720a16b90b2c061a1aeb ]
of_find_compatible_node() increments the node's refcount, and it must be decremented again with a call to of_node_put() when the pointer is no longer required to avoid leaking the resource.
Instead of adding the missing calls to of_node_put() in all execution paths, use the cleanup attribute for 'arm_timer' by means of the __free() macro, which automatically calls of_node_put() when the variable goes out of scope.
--- drivers/clocksource/timer-ti-dm-systimer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/clocksource/timer-ti-dm-systimer.c +2 -2
@@ -688,9 +688,9 @@ subsys_initcall(dmtimer_percpu_timer_startup);static int __init dmtimer_percpu_quirk_init (struct device_node *np,u32 pa) { -struct device_node *arm_timer; + struct device_node *arm_timer __free(device_node) = +of_find_compatible_node (NULL ,NULL ,"arm,armv7-timer" ); - arm_timer =of_find_compatible_node (NULL ,NULL ,"arm,armv7-timer" );if (of_device_is_available (arm_timer)) {pr_warn_once ("ARM architected timer wrap issue i940 detected\n" );return 0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 92/772 spi: spi-fsl-lpspi: downgrade log level for pio mode
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Stein <[email protected]>
[ Upstream commit d5786c88cacbb859f465e8e93c26154585c1008d ]
Having no DMA is not an error. The simplest reason is not having it configured. SPI will still be usable, so raise a warning instead to get still some attention.
Stable-dep-of: 003c7e01916c ("spi: spi-fsl-lpspi: Use IRQF_NO_AUTOEN flag in request_irq()")
--- drivers/spi/spi-fsl-lpspi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/spi/spi-fsl-lpspi.c +1 -1
@@ -908,7 +908,7 @@ static int fsl_lpspi_probe(struct platform_device *pdev)if (ret == -EPROBE_DEFER ) goto out_pm_get;if (ret <0 ) -dev_err (&pdev->dev,"dma setup error %d, use pio\n" , ret); +dev_warn (&pdev->dev,"dma setup error %d, use pio\n" , ret);else /* * disable LPSPI module IRQ when enable DMA mode successfully,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 93/772 spi: spi-fsl-lpspi: Use IRQF_NO_AUTOEN flag in request_irq()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <[email protected]>
[ Upstream commit 003c7e01916c5e2af95add9b0cbda2e6163873e8 ]
disable_irq() after request_irq() still has a time gap in which interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will disable IRQ auto-enable when request IRQ.
--- drivers/spi/spi-fsl-lpspi.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/spi/spi-fsl-lpspi.c +4 -8
@@ -870,7 +870,7 @@ static int fsl_lpspi_probe(struct platform_device *pdev) goto out_controller_put; } - ret =devm_request_irq (&pdev->dev, irq, fsl_lpspi_isr,0 , + ret =devm_request_irq (&pdev->dev, irq, fsl_lpspi_isr,IRQF_NO_AUTOEN ,dev_name (&pdev->dev), fsl_lpspi);if (ret) {dev_err (&pdev->dev,"can't get irq%d: %d\n" , irq, ret);
@@ -907,14 +907,10 @@ static int fsl_lpspi_probe(struct platform_device *pdev) ret =fsl_lpspi_dma_init (&pdev->dev, fsl_lpspi, controller);if (ret == -EPROBE_DEFER ) goto out_pm_get; -if (ret <0 ) +if (ret <0 ) {dev_warn (&pdev->dev,"dma setup error %d, use pio\n" , ret); -else -/* -* disable LPSPI module IRQ when enable DMA mode successfully, -* to prevent the unexpected LPSPI module IRQ events. -*/ -disable_irq (irq); +enable_irq (irq); + } ret =devm_spi_register_controller (&pdev->dev, controller);if (ret <0 ) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 94/772 drivers: soc: xilinx: add the missing kfree in xlnx_add_cb_for_suspend()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gaosheng Cui <[email protected]>
[ Upstream commit 44ed4f90a97ff6f339e50ac01db71544e0990efc ]
If we fail to allocate memory for cb_data by kmalloc, the memory allocation for eve_data is never freed, add the missing kfree() in the error handling path.
--- drivers/soc/xilinx/xlnx_event_manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/soc/xilinx/xlnx_event_manager.c +3 -1
@@ -174,8 +174,10 @@ static int xlnx_add_cb_for_suspend(event_cb_func_t cb_fun, void *data)INIT_LIST_HEAD (&eve_data->cb_list_head); cb_data =kmalloc (sizeof (*cb_data),GFP_KERNEL ); -if (!cb_data) +if (!cb_data) { +kfree (eve_data);return -ENOMEM ; + } cb_data->eve_cb = cb_fun; cb_data->agent_data = data;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 95/772 microblaze: Export xmb_manager functions
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Simek <[email protected]>
[ Upstream commit badf752b5e4b17d281f93f409d4718388ff912e6 ]
When TMR_MANAGER is enabled as module there is a need to export functions which are present in architecture code.
It has been found by running:
make W=1 C=1 allmodconfig
sed -i -e 's/WERROR=y/WERROR=n/g' .config
make C=1 W=1
which errors out like this:
ERROR: modpost: "xmb_manager_register" [drivers/misc/xilinx_tmr_manager.ko] undefined!
ERROR: modpost: "xmb_inject_err" [drivers/misc/xilinx_tmr_inject.ko] undefined!
--- arch/microblaze/kernel/microblaze_ksyms.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
arch/microblaze/kernel/microblaze_ksyms.c +10 -0
@@ -16,6 +16,7 @@#include <asm/page.h> #include <linux/ftrace.h> #include <linux/uaccess.h> +#include <asm/xilinx_mb_manager.h> #ifdef CONFIG_FUNCTION_TRACER extern void _mcount (void );
@@ -46,3 +47,12 @@ extern void __udivsi3(void);EXPORT_SYMBOL (__udivsi3);extern void __umodsi3 (void );EXPORT_SYMBOL (__umodsi3); + +#ifdef CONFIG_MB_MANAGER +extern void xmb_manager_register (uintptr_t phys_baseaddr,u32 cr_val, +void (*callback)(void *data), +void *priv,void (*reset_callback)(void *data)); +EXPORT_SYMBOL (xmb_manager_register); +extern asmlinkage void xmb_inject_err(void); +EXPORT_SYMBOL (xmb_inject_err); +#endif
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 96/772 arm64: dts: mt8195: Fix dtbs_check error for infracfg_ao node
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Macpaul Lin <[email protected]>
[ Upstream commit c14ab45f5d458073248ddc62d31045d5d616806f ]
The infracfg_ao node in mt8195.dtsi was causing a dtbs_check error. The error message was:
syscon@10001000: compatible: ['mediatek,mt8195-infracfg_ao', 'syscon',
'simple-mfd'] is too long
To resolve this, remove 'simple-mfd' from the 'compatible' property of the infracfg_ao node.
--- arch/arm64/boot/dts/mediatek/mt8195.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/mediatek/mt8195.dtsi +1 -1
@@ -332,7 +332,7 @@ topckgen: syscon@10000000 { }; infracfg_ao: syscon@10001000 { - compatible = "mediatek,mt8195-infracfg_ao", "syscon", "simple-mfd"; + compatible = "mediatek,mt8195-infracfg_ao", "syscon"; reg = <0 0x10001000 0 0x1000>; #clock-cells = <1>; #reset-cells = <1>;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 97/772 soc: ti: smartreflex: Use IRQF_NO_AUTOEN flag in request_irq()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <[email protected]>
[ Upstream commit 16a0a69244240cfa32c525c021c40f85e090557a ]
If request_irq() fails in sr_late_init(), there is no need to enable the irq, and if it succeeds, disable_irq() after request_irq() still has a time gap in which interrupts can come.
request_irq() with IRQF_NO_AUTOEN flag will disable IRQ auto-enable when request IRQ.
--- drivers/soc/ti/smartreflex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/soc/ti/smartreflex.c +2 -2
@@ -203,10 +203,10 @@ static int sr_late_init(struct omap_sr *sr_info)if (sr_class->notify && sr_class->notify_flags && sr_info->irq) { ret =devm_request_irq (&sr_info->pdev->dev, sr_info->irq, - sr_interrupt,0 , sr_info->name, sr_info); + sr_interrupt,IRQF_NO_AUTOEN , + sr_info->name, sr_info);if (ret) goto error; -disable_irq (sr_info->irq); }if (pdata && pdata->enable_on_init)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 98/772 soc: qcom: geni-se: fix array underflow in geni_se_clk_tbl_get()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <[email protected]>
[ Upstream commit 78261cb08f06c93d362cab5c5034bf5899bc7552 ]
This loop is supposed to break if the frequency returned from clk_round_rate() is the same as on the previous iteration. However, that check doesn't make sense on the first iteration through the loop. It leads to reading before the start of these->clk_perf_tbl[] array.
--- drivers/soc/qcom/qcom-geni-se.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/soc/qcom/qcom-geni-se.c +2 -1
@@ -597,7 +597,8 @@ int geni_se_clk_tbl_get(struct geni_se *se, unsigned long **tbl)for (i =0 ; i <MAX_CLK_PERF_LEVEL ; i++) { freq =clk_round_rate (se->clk, freq +1 ); -if (freq <=0 || freq == se->clk_perf_tbl[i -1 ]) +if (freq <=0 || + (i >0 && freq == se->clk_perf_tbl[i -1 ]))break ; se->clk_perf_tbl[i] = freq; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 99/772 mmc: mmc_spi: drop buggy snprintf()
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bartosz Golaszewski <[email protected]>
[ Upstream commit 328bda09cc91b3d93bc64f4a4dadc44313dd8140 ]
GCC 13 complains about the truncated output of snprintf():
drivers/mmc/host/mmc_spi.c: In function ‘mmc_spi_response_get’:drivers/mmc/host/mmc_spi.c:227:64: error: ‘snprintf’ output may be truncated before the last format character [-Werror=format-truncation=]
227 | snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s",
| ^drivers/mmc/host/mmc_spi.c:227:9: note: ‘snprintf’ output between 26 and 43 bytes into a destination of size 32
227 | snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
228 | cmd->opcode, maptype(cmd));Drop it and fold the string it generates into the only place where it's emitted - the dev_dbg() call at the end of the function.
--- drivers/mmc/host/mmc_spi.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/mmc/host/mmc_spi.c +3 -6
@@ -223,10 +223,6 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,u8 leftover =0 ;unsigned short rotator;int i; -char tag[32 ]; - -snprintf (tag,sizeof (tag)," ... CMD%d response SPI_%s" , - cmd->opcode,maptype (cmd));/* Except for data block reads, the whole response will already * be stored in the scratch buffer. It's somewhere after the
@@ -379,8 +375,9 @@ static int mmc_spi_response_get(struct mmc_spi_host *host, }if (value <0 ) -dev_dbg (&host->spi->dev,"%s: resp %04x %08x\n" , - tag, cmd->resp[0 ], cmd->resp[1 ]); +dev_dbg (&host->spi->dev, +" ... CMD%d response SPI_%s: resp %04x %08x\n" , + cmd->opcode,maptype (cmd), cmd->resp[0 ], cmd->resp[1 ]);/* disable chipselect on errors and some success cases */ if (value >=0 && cs_on)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 100/772 tpm: fix signed/unsigned bug when checking event logs
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gregory Price <[email protected]>
[ Upstream commit e6d654e9f5a97742cfe794b1c4bb5d3fb2d25e98 ]
A prior bugfix that fixes a signed/unsigned error causes another signed unsigned error.
A situation where log_tbl->size is invalid can cause the size passed to memblock_reserve to become negative.
log_size from the main event log is an unsigned int, and the code reduces to the following
u64 value = (int)unsigned_value;
This results in sign extension, and the value sent to memblock_reserve becomes effectively negative.
--- drivers/firmware/efi/tpm.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
drivers/firmware/efi/tpm.c +9 -8
@@ -40,7 +40,8 @@ int __init efi_tpm_eventlog_init(void) {struct linux_efi_tpm_eventlog *log_tbl;struct efi_tcg2_final_events_table *final_tbl; -int tbl_size; +unsigned int tbl_size; +int final_tbl_size;int ret =0 ;if (efi.tpm_log ==EFI_INVALID_TABLE_ADDR ) {
@@ -80,26 +81,26 @@ int __init efi_tpm_eventlog_init(void) goto out; } - tbl_size =0 ; + final_tbl_size =0 ;if (final_tbl->nr_events !=0 ) {void *events = (void *)efi.tpm_final_log +sizeof (final_tbl->version) +sizeof (final_tbl->nr_events); - tbl_size =tpm2_calc_event_log_size (events, - final_tbl->nr_events, - log_tbl->log); + final_tbl_size =tpm2_calc_event_log_size (events, + final_tbl->nr_events, + log_tbl->log); } -if (tbl_size <0 ) { +if (final_tbl_size <0 ) {pr_err (FW_BUG "Failed to parse event in TPM Final Events Log\n" ); ret = -EINVAL ; goto out_calc; }memblock_reserve (efi.tpm_final_log, - tbl_size +sizeof (*final_tbl)); - efi_tpm_final_log_size = tbl_size; + final_tbl_size +sizeof (*final_tbl)); + efi_tpm_final_log_size = final_tbl_size; out_calc:early_memunmap (final_tbl,sizeof (*final_tbl));
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 101/772 arm64: dts: mt8183: krane: Fix the address of eeprom at i2c4
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hsin-Te Yuan <[email protected]>
[ Upstream commit e9c60c34948662b5d47573490ee538439b29e462 ]
The address of eeprom should be 50.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-krane.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/mediatek/mt8183-kukui-krane.dtsi +2 -2
@@ -89,9 +89,9 @@ &i2c4 { clock-frequency = <400000>; vbus-supply = <&mt6358_vcn18_reg>; - eeprom@54 { + eeprom@50 { compatible = "atmel,24c32"; - reg = <0x54>; + reg = <0x50>; pagesize = <32>; vcc-supply = <&mt6358_vcn18_reg>; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 102/772 arm64: dts: mt8183: kukui: Fix the address of eeprom at i2c4
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hsin-Te Yuan <[email protected]>
[ Upstream commit edbde4923f208aa83abb48d4b2463299e5fc2586 ]
The address of eeprom should be 50.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-kakadu.dtsi | 4 ++-- arch/arm64/boot/dts/mediatek/mt8183-kukui-kodama.dtsi | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
arch/arm64/boot/dts/mediatek/mt8183-kukui-kakadu.dtsi +2 -2
@@ -105,9 +105,9 @@ &i2c4 { clock-frequency = <400000>; vbus-supply = <&mt6358_vcn18_reg>; - eeprom@54 { + eeprom@50 { compatible = "atmel,24c32"; - reg = <0x54>; + reg = <0x50>; pagesize = <32>; vcc-supply = <&mt6358_vcn18_reg>; };
arch/arm64/boot/dts/mediatek/mt8183-kukui-kodama.dtsi +2 -2
@@ -80,9 +80,9 @@ &i2c4 { clock-frequency = <400000>; vbus-supply = <&mt6358_vcn18_reg>; - eeprom@54 { + eeprom@50 { compatible = "atmel,24c64"; - reg = <0x54>; + reg = <0x50>; pagesize = <32>; vcc-supply = <&mt6358_vcn18_reg>; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 103/772 arm64: dts: mediatek: mt8173-elm-hana: Add vdd-supply to second source trackpad
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit f766fae08f6a2eaeb45d8d2c053724c91526835c ]
The Hana device has a second source option trackpad, but it is missing its regulator supply. It only works because the regulator is marked as always-on.
Add the regulator supply, but leave out the post-power-on delay. Instead, document the post-power-on delay along with the reason for not adding it in a comment.
--- arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtsi +8 -0
@@ -43,6 +43,14 @@ trackpad2: trackpad@2c { interrupts = <117 IRQ_TYPE_LEVEL_LOW>; reg = <0x2c>; hid-descr-addr = <0x0020>; + /* + * The trackpad needs a post-power-on delay of 100ms, + * but at time of writing, the power supply for it on + * this board is always on. The delay is therefore not + * added to avoid impacting the readiness of the + * trackpad. + */ + vdd-supply = <&mt6397_vgp6_reg>; wakeup-source; }; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 104/772 Revert "cgroup: Fix memory leak caused by missing cgroup_bpf_offline"
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Ridong <[email protected]>
[ Upstream commit feb301c60970bd2a1310a53ce2d6e4375397a51b ]
This reverts commit 04f8ef5643bcd8bcde25dfdebef998aea480b2ba.
Only cgroup v2 can be attached by cgroup by BPF programs. Revert this commit and cgroup_bpf_inherit and cgroup_bpf_offline won't be called in cgroup v1. The memory leak issue will be fixed with next patch.
--- kernel/cgroup/cgroup.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
kernel/cgroup/cgroup.c +1 -3
@@ -2293,10 +2293,8 @@ static void cgroup_kill_sb(struct super_block *sb)* And don't kill the default root. */ if (list_empty (&root->cgrp.self.children) && root != &cgrp_dfl_root && - !percpu_ref_is_dying (&root->cgrp.self.refcnt)) { -cgroup_bpf_offline (&root->cgrp); + !percpu_ref_is_dying (&root->cgrp.self.refcnt))percpu_ref_kill (&root->cgrp.self.refcnt); - }cgroup_put (&root->cgrp);kernfs_kill_sb (sb); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 105/772 cgroup/bpf: only cgroup v2 can be attached by bpf programs
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Ridong <[email protected]>
[ Upstream commit 2190df6c91373fdec6db9fc07e427084f232f57e ]
Only cgroup v2 can be attached by bpf programs, so this patch introduces that cgroup_bpf_inherit and cgroup_bpf_offline can only be called in cgroup v2, and this can fix the memleak mentioned by commit 04f8ef5643bc ("cgroup: Fix memory leak caused by missing cgroup_bpf_offline"), which has been reverted.
--- kernel/cgroup/cgroup.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
kernel/cgroup/cgroup.c +11 -6
@@ -2119,8 +2119,10 @@ int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask)if (ret) goto exit_stats; - ret =cgroup_bpf_inherit (root_cgrp); -WARN_ON_ONCE (ret); +if (root == &cgrp_dfl_root) { + ret =cgroup_bpf_inherit (root_cgrp); +WARN_ON_ONCE (ret); + }trace_cgroup_setup_root (root);
@@ -5626,9 +5628,11 @@ static struct cgroup *cgroup_create(struct cgroup *parent, const char *name,if (ret) goto out_kernfs_remove; - ret =cgroup_bpf_inherit (cgrp); -if (ret) - goto out_psi_free; +if (cgrp->root == &cgrp_dfl_root) { + ret =cgroup_bpf_inherit (cgrp); +if (ret) + goto out_psi_free; + }/* * New cgroup inherits effective freeze counter, and
@@ -5946,7 +5950,8 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)cgroup1_check_for_release (parent); -cgroup_bpf_offline (cgrp); +if (cgrp->root == &cgrp_dfl_root) +cgroup_bpf_offline (cgrp);/* put the base reference */ percpu_ref_kill (&cgrp->self.refcnt);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 106/772 arm64: dts: mt8183: fennel: add i2c2s i2c-scl-internal-delay-ns
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daolong Zhu <[email protected]>
[ Upstream commit c802db127dfb9602aaa9338e433c0553d34f1a9c ]
Add i2c2's i2c-scl-internal-delay-ns.
Reviewed-by:
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-fennel.dtsi | 3 +++ 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-fennel.dtsi +3 -0
@@ -25,3 +25,6 @@ trackpad@2c { }; }; +&i2c2 { + i2c-scl-internal-delay-ns = <21500>; +};
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 107/772 arm64: dts: mt8183: burnet: add i2c2s i2c-scl-internal-delay-ns
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daolong Zhu <[email protected]>
[ Upstream commit 85af64983889c621e8868b744c8ca03bd5038c02 ]
Add i2c2's i2c-scl-internal-delay-ns.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-burnet.dts | 3 +++ 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-burnet.dts +3 -0
@@ -29,3 +29,6 @@ touchscreen@2c { }; }; +&i2c2 { + i2c-scl-internal-delay-ns = <4100>; +};
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 108/772 arm64: dts: mt8183: cozmo: add i2c2s i2c-scl-internal-delay-ns
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daolong Zhu <[email protected]>
[ Upstream commit bd0eb3b1f7aee698b86513edf10a50e2d0c7cb14 ]
Add i2c2's i2c-scl-internal-delay-ns.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-cozmo.dts | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-cozmo.dts +2 -0
@@ -17,6 +17,8 @@ &i2c_tunnel { }; &i2c2 { + i2c-scl-internal-delay-ns = <25000>; + trackpad@2c { compatible = "hid-over-i2c"; reg = <0x2c>;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 109/772 arm64: dts: mt8183: Damu: add i2c2s i2c-scl-internal-delay-ns
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daolong Zhu <[email protected]>
[ Upstream commit 6ff2d45f2121c698a57c959ae21885a048615908 ]
Add i2c2's i2c-scl-internal-delay-ns.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-damu.dts | 3 +++ 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-damu.dts +3 -0
@@ -30,3 +30,6 @@ &qca_wifi { qcom,ath10k-calibration-variant = "GO_DAMU"; }; +&i2c2 { + i2c-scl-internal-delay-ns = <20000>; +};
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 110/772 pwm: imx27: Workaround of the pwm output bug when decrease the duty cycle
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Clark Wang <[email protected]>
[ Upstream commit a25351e4c7740eb22561a3ee4ef17611c6f410b0 ]
Implement workaround for ERR051198
(https://www.nxp.com/docs/en/errata/IMX8MN_0N14Y.pdf)
PWM output may not function correctly if the FIFO is empty when a new SAR value is programmed.
Description:
When the PWM FIFO is empty, a new value programmed to the PWM Sample register (PWM_PWMSAR) will be directly applied even if the current timer period has not expired. If the new SAMPLE value programmed in the PWM_PWMSAR register is less than the previous value, and the PWM counter register (PWM_PWMCNR) that contains the current COUNT value is greater than the new programmed SAMPLE value, the current period will not flip the level. This may result in an output pulse with a duty cycle of 100%.
Workaround:
Program the current SAMPLE value in the PWM_PWMSAR register before updating the new duty cycle to the SAMPLE value in the PWM_PWMSAR register. This will ensure that the new SAMPLE value is modified during a non-empty FIFO, and can be successfully updated after the period expires.
Write the old SAR value before updating the new duty cycle to SAR. This avoids writing the new value into an empty FIFO.
This only resolves the issue when the PWM period is longer than 2us (or <500kHz) because write register is not quick enough when PWM period is very short.
Reproduce steps:
cd /sys/class/pwm/pwmchip1/pwm0
echo 2000000000 > period # It is easy to observe by using long period
echo 1000000000 > duty_cycle
echo 1 > enable
echo 8000 > duty_cycle # One full high pulse will be seen by scope
--- drivers/pwm/pwm-imx27.c | 98 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-)
drivers/pwm/pwm-imx27.c +96 -2
@@ -26,6 +26,7 @@#define MX3_PWMSR 0x04/* PWM Status Register */ #define MX3_PWMSAR 0x0C/* PWM Sample Register */ #define MX3_PWMPR 0x10/* PWM Period Register */ +#define MX3_PWMCNR 0x14/* PWM Counter Register */ #define MX3_PWMCR_FWM GENMASK(27, 26)#define MX3_PWMCR_STOPEN BIT(25)
@@ -217,11 +218,13 @@ static void pwm_imx27_wait_fifo_slot(struct pwm_chip *chip,static int pwm_imx27_apply (struct pwm_chip *chip,struct pwm_device *pwm,const struct pwm_state *state) { -unsigned long period_cycles, duty_cycles, prescale; +unsigned long period_cycles, duty_cycles, prescale, period_us, tmp;struct pwm_imx27_chip *imx =to_pwm_imx27_chip (chip);struct pwm_state cstate;unsigned long long c;unsigned long long clkrate; +unsigned long flags; +int val;int ret;u32 cr;
@@ -264,7 +267,98 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm,pwm_imx27_sw_reset (chip); } -writel (duty_cycles, imx->mmio_base +MX3_PWMSAR ); + val =readl (imx->mmio_base +MX3_PWMPR ); + val = val >=MX3_PWMPR_MAX ?MX3_PWMPR_MAX : val; + cr =readl (imx->mmio_base +MX3_PWMCR ); + tmp =NSEC_PER_SEC * (u64)(val +2 ) *MX3_PWMCR_PRESCALER_GET (cr); + tmp =DIV_ROUND_UP_ULL (tmp, clkrate); + period_us =DIV_ROUND_UP_ULL (tmp,1000 ); + +/* +* ERR051198: +* PWM: PWM output may not function correctly if the FIFO is empty when +* a new SAR value is programmed +* +* Description: +* When the PWM FIFO is empty, a new value programmed to the PWM Sample +* register (PWM_PWMSAR) will be directly applied even if the current +* timer period has not expired. +* +* If the new SAMPLE value programmed in the PWM_PWMSAR register is +* less than the previous value, and the PWM counter register +* (PWM_PWMCNR) that contains the current COUNT value is greater than +* the new programmed SAMPLE value, the current period will not flip +* the level. This may result in an output pulse with a duty cycle of +* 100%. +* +* Consider a change from +* ________ +* / \______/ +* ^ * ^ +* to +* ____ +* / \__________/ +* ^ ^ +* At the time marked by *, the new write value will be directly applied +* to SAR even the current period is not over if FIFO is empty. +* +* ________ ____________________ +* / \______/ \__________/ +* ^ ^ * ^ ^ +* |<-- old SAR -->| |<-- new SAR -->| +* +* That is the output is active for a whole period. +* +* Workaround: +* Check new SAR less than old SAR and current counter is in errata +* windows, write extra old SAR into FIFO and new SAR will effect at +* next period. +* +* Sometime period is quite long, such as over 1 second. If add old SAR +* into FIFO unconditional, new SAR have to wait for next period. It +* may be too long. +* +* Turn off the interrupt to ensure that not IRQ and schedule happen +* during above operations. If any irq and schedule happen, counter +* in PWM will be out of data and take wrong action. +* +* Add a safety margin 1.5us because it needs some time to complete +* IO write. +* +* Use writel_relaxed() to minimize the interval between two writes to +* the SAR register to increase the fastest PWM frequency supported. +* +* When the PWM period is longer than 2us(or <500kHz), this workaround +* can solve this problem. No software workaround is available if PWM +* period is shorter than IO write. Just try best to fill old data +* into FIFO. +*/ + c = clkrate *1500 ; +do_div (c,NSEC_PER_SEC ); + +local_irq_save (flags); + val =FIELD_GET (MX3_PWMSR_FIFOAV ,readl_relaxed (imx->mmio_base +MX3_PWMSR )); + +if (duty_cycles < imx->duty_cycle && (cr &MX3_PWMCR_EN )) { +if (period_us <2 ) {/* 2us = 500 kHz */ +/* Best effort attempt to fix up >500 kHz case */ +udelay (3 * period_us); +writel_relaxed (imx->duty_cycle, imx->mmio_base +MX3_PWMSAR ); +writel_relaxed (imx->duty_cycle, imx->mmio_base +MX3_PWMSAR ); + }else if (val <MX3_PWMSR_FIFOAV_2WORDS ) { + val =readl_relaxed (imx->mmio_base +MX3_PWMCNR ); +/* +* If counter is close to period, controller may roll over when +* next IO write. +*/ +if ((val + c >= duty_cycles && val < imx->duty_cycle) || + val + c >= period_cycles) +writel_relaxed (imx->duty_cycle, imx->mmio_base +MX3_PWMSAR ); + } + } +writel_relaxed (duty_cycles, imx->mmio_base +MX3_PWMSAR ); +local_irq_restore (flags); +writel (period_cycles, imx->mmio_base +MX3_PWMPR );/*
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 111/772 ARM: dts: cubieboard4: Fix DCDC5 regulator constraints
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andre Przywara <[email protected]>
[ Upstream commit dd36ad71ad65968f97630808bc8d605c929b128e ]
The DCDC5 voltage rail in the X-Powers AXP809 PMIC has a resolution of 50mV, so the currently enforced limits of 1.475 and 1.525 volts cannot be set, when the existing regulator value is beyond this range.
This will lead to the whole regulator driver to give up and fail probing, which in turn will hang the system, as essential devices depend on the PMIC.
In this case a bug in U-Boot set the voltage to 1.75V (meant for DCDC4), and the AXP driver's attempt to correct this lead to this error:
==================
[ 4.447653] axp20x-rsb sunxi-rsb-3a3: AXP20X driver loaded [ 4.450066] vcc-dram: Bringing 1750000uV into 1575000-1575000uV [ 4.460272] vcc-dram: failed to apply 1575000-1575000uV constraint: -EINVAL [ 4.474788] axp20x-regulator axp20x-regulator.0: Failed to register dcdc5 [ 4.482276] axp20x-regulator axp20x-regulator.0: probe with driver axp20x-regulator failed with error -22
==================
Set the limits to values that can be programmed, so any correction will be successful.
--- arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts +2 -2
@@ -280,8 +280,8 @@ reg_dcdc4: dcdc4 { reg_dcdc5: dcdc5 { regulator-always-on; - regulator-min-microvolt = <1425000>; - regulator-max-microvolt = <1575000>; + regulator-min-microvolt = <1450000>; + regulator-max-microvolt = <1550000>; regulator-name = "vcc-dram"; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 112/772 pmdomain: ti-sci: Add missing of_node_put() for args.np
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Zekun <[email protected]>
[ Upstream commit afc2331ef81657493c074592c409dac7c3cb8ccc ]
of_parse_phandle_with_args() needs to call of_node_put() to decrement the refcount of args.np. So, Add the missing of_node_put() in the loop.
Message-ID: <[email protected]>
--- drivers/soc/ti/ti_sci_pm_domains.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/soc/ti/ti_sci_pm_domains.c +4 -0
@@ -165,6 +165,7 @@ static int ti_sci_pm_domain_probe(struct platform_device *pdev)break ;if (args.args_count >=1 && args.np == dev->of_node) { +of_node_put (args.np);if (args.args[0 ] > max_id) { max_id = args.args[0 ]; }else {
@@ -192,7 +193,10 @@ static int ti_sci_pm_domain_probe(struct platform_device *pdev)pm_genpd_init (&pd->pd,NULL , true);list_add (&pd->node, &pd_provider->pd_list); + }else { +of_node_put (args.np); } + index++; } }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 113/772 spi: tegra210-quad: Avoid shift-out-of-bounds
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Breno Leitao <[email protected]>
[ Upstream commit f399051ec1ff02e74ae5c2517aed2cc486fd005b ]
A shift-out-of-bounds issue was identified by UBSAN in the tegra_qspi_fill_tx_fifo_from_client_txbuf() function.
UBSAN: shift-out-of-bounds in drivers/spi/spi-tegra210-quad.c:345:27 shift exponent 32 is too large for 32-bit type 'u32' (aka 'unsigned int') Call trace: tegra_qspi_start_cpu_based_transfer
The problem arises when shifting the contents of tx_buf left by 8 times the value of i, which can exceed 4 and result in an exponent larger than 32 bits.
Resolve this by restrict the value of i to be less than 4, preventing the shift operation from overflowing.
--- drivers/spi/spi-tegra210-quad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/spi/spi-tegra210-quad.c +1 -1
@@ -340,7 +340,7 @@ tegra_qspi_fill_tx_fifo_from_client_txbuf(struct tegra_qspi *tqspi, struct spi_tfor (count =0 ; count < max_n_32bit; count++) {u32 x =0 ; -for (i =0 ; len && (i < bytes_per_word); i++, len--) +for (i =0 ; len && (i <min (4 , bytes_per_word)); i++, len--) x |= (u32)(*tx_buf++) << (i *8 );tegra_qspi_writel (tqspi, x,QSPI_TX_FIFO ); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 114/772 spi: zynqmp-gqspi: Undo runtime PM changes at driver exit time
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <[email protected]>
[ Upstream commit 2219576883e709737f3100aa9ded84976be49bd7 ]
It's important to undo pm_runtime_use_autosuspend() with pm_runtime_dont_use_autosuspend() at driver exit time.
So, call pm_runtime_dont_use_autosuspend() at driver exit time to fix it.
--- drivers/spi/spi-zynqmp-gqspi.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/spi/spi-zynqmp-gqspi.c +2 -0
@@ -1219,6 +1219,7 @@ static int zynqmp_qspi_probe(struct platform_device *pdev) clk_dis_all:pm_runtime_disable (&pdev->dev); +pm_runtime_dont_use_autosuspend (&pdev->dev);pm_runtime_put_noidle (&pdev->dev);pm_runtime_set_suspended (&pdev->dev);clk_disable_unprepare (xqspi->refclk);
@@ -1249,6 +1250,7 @@ static int zynqmp_qspi_remove(struct platform_device *pdev)zynqmp_gqspi_write (xqspi,GQSPI_EN_OFST ,0x0 );pm_runtime_disable (&pdev->dev); +pm_runtime_dont_use_autosuspend (&pdev->dev);pm_runtime_put_noidle (&pdev->dev);pm_runtime_set_suspended (&pdev->dev);clk_disable_unprepare (xqspi->refclk);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 115/772 regmap: irq: Set lockdep class for hierarchical IRQ domains
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Shevchenko <[email protected]>
[ Upstream commit 953e549471cabc9d4980f1da2e9fa79f4c23da06 ]
Lockdep gives a false positive splat as it can't distinguish the lock which is taken by different IRQ descriptors from different IRQ chips that are organized in a way of a hierarchy:
======================================================
WARNING: possible circular locking dependency detected
6.12.0-rc5-next-20241101-00148-g9fabf8160b53 #562 Tainted: G W
------------------------------------------------------
modprobe/141 is trying to acquire lock:
ffff899446947868 (intel_soc_pmic_bxtwc:502:(&bxtwc_regmap_config)->lock){+.+.}-{4:4}, at: regmap_update_bits_base+0x33/0x90
but task is already holding lock:
ffff899446947c68 (&d->lock){+.+.}-{4:4}, at: __setup_irq+0x682/0x790
which lock already depends on the new lock.
-> #3 (&d->lock){+.+.}-{4:4}:
-> #2 (&desc->request_mutex){+.+.}-{4:4}:
-> #1 (ipclock){+.+.}-{4:4}:
-> #0 (intel_soc_pmic_bxtwc:502:(&bxtwc_regmap_config)->lock){+.+.}-{4:4}:
Chain exists of:
intel_soc_pmic_bxtwc:502:(&bxtwc_regmap_config)->lock --> &desc->request_mutex --> &d->lock
Possible unsafe locking scenario: CPU0 CPU1
---- ----
lock(&d->lock);
lock(&desc->request_mutex);
lock(&d->lock);
lock(intel_soc_pmic_bxtwc:502:(&bxtwc_regmap_config)->lock);
*** DEADLOCK ***3 locks held by modprobe/141:
#0: ffff8994419368f8 (&dev->mutex){....}-{4:4}, at: __driver_attach+0xf6/0x250
#1: ffff89944690b250 (&desc->request_mutex){+.+.}-{4:4}, at: __setup_irq+0x1a2/0x790
#2: ffff899446947c68 (&d->lock){+.+.}-{4:4}, at: __setup_irq+0x682/0x790Set a lockdep class when we map the IRQ so that it doesn't warn about a lockdep bug that doesn't exist.
--- drivers/base/regmap/regmap-irq.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/base/regmap/regmap-irq.c +4 -0
@@ -591,12 +591,16 @@ static irqreturn_t regmap_irq_thread(int irq, void *d)return IRQ_NONE ; } +static struct lock_class_key regmap_irq_lock_class; +static struct lock_class_key regmap_irq_request_class; +static int regmap_irq_map (struct irq_domain *h,unsigned int virq,irq_hw_number_t hw) {struct regmap_irq_chip_data *data = h->host_data;irq_set_chip_data (virq, data); +irq_set_lockdep_class (virq, ®map_irq_lock_class, ®map_irq_request_class);irq_set_chip (virq, &data->irq_chip);irq_set_nested_thread (virq,1 );irq_set_parent (virq, data->irq);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 116/772 arm64: dts: mt8183: jacuzzi: Move panel under aux-bus
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hsin-Yi Wang <[email protected]>
[ Upstream commit 474c162878ba3dbd620538d129f576f2bca7b9e1 ]
Read edp panel edid through aux bus, which is a more preferred way. Also use a more generic compatible since each jacuzzi models use different panels.
Stable-dep-of: c4e8cf13f174 ("arm64: dts: mediatek: mt8183-kukui-jacuzzi: Fix DP bridge supply names")
--- .../dts/mediatek/mt8183-kukui-jacuzzi.dtsi | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi.dtsi +14 -12
@@ -8,18 +8,6 @@ #include <arm/cros-ec-keyboard.dtsi> / { - panel: panel { - compatible = "auo,b116xw03"; - power-supply = <&pp3300_panel>; - backlight = <&backlight_lcd0>; - - port { - panel_in: endpoint { - remote-endpoint = <&anx7625_out>; - }; - }; - }; - pp1200_mipibrdg: pp1200-mipibrdg { compatible = "regulator-fixed"; regulator-name = "pp1200_mipibrdg";
@@ -188,6 +176,20 @@ anx7625_out: endpoint { }; }; }; + + aux-bus { + panel: panel { + compatible = "edp-panel"; + power-supply = <&pp3300_panel>; + backlight = <&backlight_lcd0>; + + port { + panel_in: endpoint { + remote-endpoint = <&anx7625_out>; + }; + }; + }; + }; }; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 117/772 arm64: dts: mediatek: mt8183-kukui-jacuzzi: Fix DP bridge supply names
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit c4e8cf13f1740037483565d5b802764e2426515b ]
Some of the regulator supplies for the MIPI-DPI-to-DP bridge and their associated nodes are incorrectly named. In particular, the 1.0V supply was modeled as a 1.2V supply.
Fix all the incorrect names, and also fix the voltage of the 1.0V regulator.
--- .../dts/mediatek/mt8183-kukui-jacuzzi.dtsi | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi.dtsi +14 -12
@@ -8,11 +8,13 @@ #include <arm/cros-ec-keyboard.dtsi> / { - pp1200_mipibrdg: pp1200-mipibrdg { + pp1000_mipibrdg: pp1000-mipibrdg { compatible = "regulator-fixed"; - regulator-name = "pp1200_mipibrdg"; + regulator-name = "pp1000_mipibrdg"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; pinctrl-names = "default"; - pinctrl-0 = <&pp1200_mipibrdg_en>; + pinctrl-0 = <&pp1000_mipibrdg_en>; enable-active-high; regulator-boot-on;
@@ -24,7 +26,7 @@ pp1800_mipibrdg: pp1800-mipibrdg { compatible = "regulator-fixed"; regulator-name = "pp1800_mipibrdg"; pinctrl-names = "default"; - pinctrl-0 = <&pp1800_lcd_en>; + pinctrl-0 = <&pp1800_mipibrdg_en>; enable-active-high; regulator-boot-on;
@@ -46,11 +48,11 @@ pp3300_panel: pp3300-panel { gpio = <&pio 35 GPIO_ACTIVE_HIGH>; }; - vddio_mipibrdg: vddio-mipibrdg { + pp3300_mipibrdg: pp3300-mipibrdg { compatible = "regulator-fixed"; - regulator-name = "vddio_mipibrdg"; + regulator-name = "pp3300_mipibrdg"; pinctrl-names = "default"; - pinctrl-0 = <&vddio_mipibrdg_en>; + pinctrl-0 = <&pp3300_mipibrdg_en>; enable-active-high; regulator-boot-on;
@@ -152,9 +154,9 @@ anx_bridge: anx7625@58 { panel_flags = <1>; enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>; reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>; - vdd10-supply = <&pp1200_mipibrdg>; + vdd10-supply = <&pp1000_mipibrdg>; vdd18-supply = <&pp1800_mipibrdg>; - vdd33-supply = <&vddio_mipibrdg>; + vdd33-supply = <&pp3300_mipibrdg>; ports { #address-cells = <1>;
@@ -397,14 +399,14 @@ &pio { "", ""; - pp1200_mipibrdg_en: pp1200-mipibrdg-en { + pp1000_mipibrdg_en: pp1000-mipibrdg-en { pins1 { pinmux = <PINMUX_GPIO54__FUNC_GPIO54>; output-low; }; }; - pp1800_lcd_en: pp1800-lcd-en { + pp1800_mipibrdg_en: pp1800-mipibrdg-en { pins1 { pinmux = <PINMUX_GPIO36__FUNC_GPIO36>; output-low;
@@ -466,7 +468,7 @@ trackpad-int { }; }; - vddio_mipibrdg_en: vddio-mipibrdg-en { + pp3300_mipibrdg_en: pp3300-mipibrdg-en { pins1 { pinmux = <PINMUX_GPIO37__FUNC_GPIO37>; output-low;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 118/772 arm64: dts: mediatek: mt8183-kukui-jacuzzi: Add supplies for fixed regulators
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit aaecb1da58a72bfbd2c35d4aadc43caa02f11862 ]
When the fixed regulators for the LCD panel and DP bridge were added, their supplies were not modeled in. These, except for the 1.0V supply, are just load switches, and need and have a supply.
Add the supplies for each of the fixed regulators.
--- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi.dtsi +4 -0
@@ -20,6 +20,7 @@ pp1000_mipibrdg: pp1000-mipibrdg { regulator-boot-on; gpio = <&pio 54 GPIO_ACTIVE_HIGH>; + vin-supply = <&pp1800_alw>; }; pp1800_mipibrdg: pp1800-mipibrdg {
@@ -32,6 +33,7 @@ pp1800_mipibrdg: pp1800-mipibrdg { regulator-boot-on; gpio = <&pio 36 GPIO_ACTIVE_HIGH>; + vin-supply = <&pp1800_alw>; }; pp3300_panel: pp3300-panel {
@@ -46,6 +48,7 @@ pp3300_panel: pp3300-panel { regulator-boot-on; gpio = <&pio 35 GPIO_ACTIVE_HIGH>; + vin-supply = <&pp3300_alw>; }; pp3300_mipibrdg: pp3300-mipibrdg {
@@ -58,6 +61,7 @@ pp3300_mipibrdg: pp3300-mipibrdg { regulator-boot-on; gpio = <&pio 37 GPIO_ACTIVE_HIGH>; + vin-supply = <&pp3300_alw>; }; volume_buttons: volume-buttons {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 119/772 selftests/resctrl: Protect against array overrun during iMC config parsing
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Reinette Chatre <[email protected]>
[ Upstream commit 48ed4e799e8fbebae838dca404a8527763d41191 ]
The MBM and MBA tests need to discover the event and umask with which to configure the performance event used to measure read memory bandwidth. This is done by parsing the /sys/bus/event_source/devices/uncore_imc_<imc instance>/events/cas_count_read file for each iMC instance that contains the formatted
output: "event=<event>,umask=<umask>"
Parsing of cas_count_read contents is done by initializing an array of MAX_TOKENS elements with tokens (deliminated by "=,") from this file. Remove the unnecessary append of a delimiter to the string needing to be parsed. Per the strtok() man page: "delimiter bytes at the start or end of the string are ignored". This has no impact on the token placement within the array.
After initialization, the actual event and umask is determined by parsing the tokens directly following the "event" and "umask" tokens respectively.
Iterating through the array up to index "i < MAX_TOKENS" but then accessing index "i + 1" risks array overrun during the final iteration. Avoid array overrun by ensuring that the index used within for loop will always be valid.
--- tools/testing/selftests/resctrl/resctrl_val.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/testing/selftests/resctrl/resctrl_val.c +1 -2
@@ -102,13 +102,12 @@ void get_event_and_umask(char *cas_count_cfg, int count, bool op)char *token[MAX_TOKENS ];int i =0 ; -strcat (cas_count_cfg,"," ); token[0 ] =strtok (cas_count_cfg,"=," );for (i =1 ; i <MAX_TOKENS ; i++) token[i] =strtok (NULL ,"=," ); -for (i =0 ; i <MAX_TOKENS ; i++) { +for (i =0 ; i <MAX_TOKENS -1 ; i++) {if (!token[i])break ;if (strcmp (token[i],"event" ) ==0 ) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 120/772 firmware: arm_scpi: Check the DVFS OPP count returned by the firmware
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luo Qiu <[email protected]>
[ Upstream commit 109aa654f85c5141e813b2cd1bd36d90be678407 ]
Fix a kernel crash with the below call trace when the SCPI firmware returns OPP count of zero.
dvfs_info.opp_count may be zero on some platforms during the reboot test, and the kernel will crash after dereferencing the pointer to kcalloc(info->count, sizeof(*opp), GFP_KERNEL).
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000028 | Mem abort info: | ESR = 0x96000004 | Exception class = DABT (current EL), IL = 32 bits | SET = 0, FnV = 0 | EA = 0, S1PTW = 0 | Data abort info: | ISV = 0, ISS = 0x00000004 | CM = 0, WnR = 0 | user pgtable: 4k pages, 48-bit VAs, pgdp = 00000000faefa08c | [0000000000000028] pgd=0000000000000000 | Internal error: Oops: 96000004 [#1] SMP | scpi-hwmon: probe of PHYT000D:00 failed with error -110 | Process systemd-udevd (pid: 1701, stack limit = 0x00000000aaede86c) | CPU: 2 PID: 1701 Comm: systemd-udevd Not tainted 4.19.90+ #1 | Hardware name: PHYTIUM LTD Phytium FT2000/4/Phytium FT2000/4, BIOS | pstate: 60000005 (nZCv daif -PAN -UAO) | pc : scpi_dvfs_recalc_rate+0x40/0x58 [clk_scpi] | lr : clk_register+0x438/0x720 | Call trace: | scpi_dvfs_recalc_rate+0x40/0x58 [clk_scpi] | devm_clk_hw_register+0x50/0xa0 | scpi_clk_ops_init.isra.2+0xa0/0x138 [clk_scpi] | scpi_clocks_probe+0x528/0x70c [clk_scpi] | platform_drv_probe+0x58/0xa8 | really_probe+0x260/0x3d0 | driver_probe_device+0x12c/0x148 | device_driver_attach+0x74/0x98 | __driver_attach+0xb4/0xe8 | bus_for_each_dev+0x88/0xe0 | driver_attach+0x30/0x40 | bus_add_driver+0x178/0x2b0 | driver_register+0x64/0x118 | __platform_driver_register+0x54/0x60 | scpi_clocks_driver_init+0x24/0x1000 [clk_scpi] | do_one_initcall+0x54/0x220 | do_init_module+0x54/0x1c8 | load_module+0x14a4/0x1668 | __se_sys_finit_module+0xf8/0x110 | __arm64_sys_finit_module+0x24/0x30 | el0_svc_common+0x78/0x170 | el0_svc_handler+0x38/0x78 | el0_svc+0x8/0x340 | Code: 937d7c00 a94153f3 a8c27bfd f9400421 (b8606820) | ---[ end trace 06feb22469d89fa8 ]--- | Kernel panic - not syncing: Fatal exception | SMP: stopping secondary CPUs | Kernel Offset: disabled | CPU features: 0x10,a0002008 | Memory Limit: none
Message-Id: <[email protected]>
--- drivers/firmware/arm_scpi.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/firmware/arm_scpi.c +3 -0
@@ -627,6 +627,9 @@ static struct scpi_dvfs_info *scpi_dvfs_get_info(u8 domain)if (ret)return ERR_PTR (ret); +if (!buf.opp_count) +return ERR_PTR (-ENOENT ); + info =kmalloc (sizeof (*info),GFP_KERNEL );if (!info)return ERR_PTR (-ENOMEM );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 121/772 venus: venc: add handling for VIDIOC_ENCODER_CMD
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dikshita Agarwal <[email protected]>
[ Upstream commit 7493db46e4c4aa5126dd32f8eae12a4cdcf7a401 ]
Add handling for below commands in encoder:
1. V4L2_ENC_CMD_STOP
2. V4L2_ENC_CMD_START
Stable-dep-of: 6c9934c5a00a ("media: venus: fix enc/dec destruction order")
--- drivers/media/platform/qcom/venus/core.h | 9 ++++ drivers/media/platform/qcom/venus/venc.c | 68 ++++++++++++++++++++++++ 2 files changed, 77 insertions(+)
drivers/media/platform/qcom/venus/core.h +9 -0
@@ -317,6 +317,14 @@ enum venus_dec_state { VENUS_DEC_STATE_DRC = 7, }; +enum venus_enc_state { +VENUS_ENC_STATE_DEINIT =0 , +VENUS_ENC_STATE_INIT =1 , +VENUS_ENC_STATE_ENCODING =2 , +VENUS_ENC_STATE_STOPPED =3 , +VENUS_ENC_STATE_DRAIN =4 , +}; +struct venus_ts_metadata {bool used;u64 ts_ns;
@@ -428,6 +436,7 @@ struct venus_inst {u8 quantization;u8 xfer_func;enum venus_dec_state codec_state; +enum venus_enc_state enc_state;wait_queue_head_t reconf_wait;unsigned int subscriptions;int buf_count;
drivers/media/platform/qcom/venus/venc.c +68 -0
114 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 122/772 media: venus: provide ctx queue lock for ioctl synchronization
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sergey Senozhatsky <[email protected]>
[ Upstream commit 34318b808ef20cdddd4e187ea2df0455936cf61b ]
Video device has to provide a lock so that __video_do_ioctl() can serialize IOCTL calls. Introduce a dedicated venus_inst mutex for the purpose of vb2 operations synchronization.
Stable-dep-of: 6c9934c5a00a ("media: venus: fix enc/dec destruction order")
--- drivers/media/platform/qcom/venus/core.h | 2 ++ drivers/media/platform/qcom/venus/vdec.c | 4 ++++ drivers/media/platform/qcom/venus/venc.c | 4 ++++ 3 files changed, 10 insertions(+)
drivers/media/platform/qcom/venus/core.h +2 -0
@@ -390,6 +390,7 @@ enum venus_inst_modes {* @sequence_out: a sequence counter for output queue * @m2m_dev: a reference to m2m device structure * @m2m_ctx: a reference to m2m context structure +* @ctx_q_lock: a lock to serialize video device ioctl calls * @state: current state of the instance * @done: a completion for sync HFI operation * @error: an error returned during last HFI sync operation
@@ -461,6 +462,7 @@ struct venus_inst {u32 sequence_out;struct v4l2_m2m_dev *m2m_dev;struct v4l2_m2m_ctx *m2m_ctx; +struct mutex ctx_q_lock;unsigned int state;struct completion done;unsigned int error;
drivers/media/platform/qcom/venus/vdec.c +4 -0
@@ -1604,6 +1604,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, src_vq->allow_zero_bytesused =1 ; src_vq->min_buffers_needed =0 ; src_vq->dev = inst->core->dev; + src_vq->lock = &inst->ctx_q_lock; ret =vb2_queue_init (src_vq);if (ret)return ret;
@@ -1618,6 +1619,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, dst_vq->allow_zero_bytesused =1 ; dst_vq->min_buffers_needed =0 ; dst_vq->dev = inst->core->dev; + dst_vq->lock = &inst->ctx_q_lock;return vb2_queue_init (dst_vq); }
@@ -1636,6 +1638,7 @@ static int vdec_open(struct file *file)INIT_LIST_HEAD (&inst->internalbufs);INIT_LIST_HEAD (&inst->list);mutex_init (&inst->lock); +mutex_init (&inst->ctx_q_lock); inst->core = core; inst->session_type =VIDC_SESSION_TYPE_DEC ;
@@ -1712,6 +1715,7 @@ static int vdec_close(struct file *file)ida_destroy (&inst->dpb_ids);hfi_session_destroy (inst);mutex_destroy (&inst->lock); +mutex_destroy (&inst->ctx_q_lock);v4l2_fh_del (&inst->fh);v4l2_fh_exit (&inst->fh);
drivers/media/platform/qcom/venus/venc.c +4 -0
@@ -1370,6 +1370,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, src_vq->allow_zero_bytesused =1 ; src_vq->min_buffers_needed =1 ; src_vq->dev = inst->core->dev; + src_vq->lock = &inst->ctx_q_lock;if (inst->core->res->hfi_version ==HFI_VERSION_1XX ) src_vq->bidirectional =1 ; ret =vb2_queue_init (src_vq);
@@ -1386,6 +1387,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, dst_vq->allow_zero_bytesused =1 ; dst_vq->min_buffers_needed =1 ; dst_vq->dev = inst->core->dev; + dst_vq->lock = &inst->ctx_q_lock;return vb2_queue_init (dst_vq); }
@@ -1418,6 +1420,7 @@ static int venc_open(struct file *file)INIT_LIST_HEAD (&inst->internalbufs);INIT_LIST_HEAD (&inst->list);mutex_init (&inst->lock); +mutex_init (&inst->ctx_q_lock); inst->core = core; inst->session_type =VIDC_SESSION_TYPE_ENC ;
@@ -1487,6 +1490,7 @@ static int venc_close(struct file *file)venc_ctrl_deinit (inst);hfi_session_destroy (inst);mutex_destroy (&inst->lock); +mutex_destroy (&inst->ctx_q_lock);v4l2_fh_del (&inst->fh);v4l2_fh_exit (&inst->fh);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 123/772 media: atomisp: Add check for rgby_data memory allocation failure
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Huafei <[email protected]>
[ Upstream commit ed61c59139509f76d3592683c90dc3fdc6e23cd6 ]
In ia_css_3a_statistics_allocate(), there is no check on the allocation result of the rgby_data memory. If rgby_data is not successfully allocated, it may trigger the assert(host_stats->rgby_data) assertion in ia_css_s3a_hmem_decode(). Adding a check to fix this potential issue.
--- drivers/staging/media/atomisp/pci/sh_css_params.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/staging/media/atomisp/pci/sh_css_params.c +2 -0
@@ -4137,6 +4137,8 @@ ia_css_3a_statistics_allocate(const struct ia_css_3a_grid_info *grid) goto err;/* No weighted histogram, no structure, treat the histogram data as a byte dump in a byte array */ me->rgby_data =kvmalloc (sizeof_hmem (HMEM0_ID ),GFP_KERNEL ); +if (!me->rgby_data) + goto err;IA_CSS_LEAVE ("return=%p" , me);return me;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 124/772 platform/x86: panasonic-laptop: Return errno correctly in show callback
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yao Zi <[email protected]>
[ Upstream commit 5c7bebc1a3f0661db558d60e14dde27fc216d9dc ]
When an error occurs in sysfs show callback, we should return the errno directly instead of formatting it as the result, which produces meaningless output and doesn't inform the userspace of the error.
--- drivers/platform/x86/panasonic-laptop.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/platform/x86/panasonic-laptop.c +7 -3
@@ -602,8 +602,7 @@ static ssize_t eco_mode_show(struct device *dev, struct device_attribute *attr, result =1 ;break ;default : - result = -EIO ; -break ; +return -EIO ; }return sysfs_emit (buf,"%u\n" , result); }
@@ -749,7 +748,12 @@ static ssize_t current_brightness_store(struct device *dev, struct device_attribstatic ssize_t cdpower_show (struct device *dev,struct device_attribute *attr,char *buf) { -return sysfs_emit (buf,"%d\n" ,get_optd_power_state ()); +int state =get_optd_power_state (); + +if (state <0 ) +return state; + +return sysfs_emit (buf,"%d\n" , state); } static ssize_t cdpower_store(struct device *dev, struct device_attribute *attr,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 125/772 drm/mm: Mark drm_mm_interval_tree*() functions with __maybe_unused
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Shevchenko <[email protected]>
[ Upstream commit 53bd7c1c0077db533472ae32799157758302ef48 ]
The INTERVAL_TREE_DEFINE() uncoditionally provides a bunch of helper functions which in some cases may be not used. This, in particular, prevents kernel builds with clang, make W=1 and CONFIG_WERROR=y:
.../drm/drm_mm.c:152:1: error: unused function 'drm_mm_interval_tree_insert' [-Werror,-Wunused-function]
152 | INTERVAL_TREE_DEFINE(struct drm_mm_node, rb,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153 | u64, __subtree_last,
| ~~~~~~~~~~~~~~~~~~~~
154 | START, LAST, static inline, drm_mm_interval_tree)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Fix this by marking drm_mm_interval_tree*() functions with __maybe_unused.
See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static inline functions for W=1 build").
--- drivers/gpu/drm/drm_mm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/drm_mm.c +1 -1
@@ -151,7 +151,7 @@ static void show_leaks(struct drm_mm *mm) { } INTERVAL_TREE_DEFINE(struct drm_mm_node, rb, u64, __subtree_last, - START, LAST, static inline, drm_mm_interval_tree) + START, LAST, static inline __maybe_unused, drm_mm_interval_tree)struct drm_mm_node *__drm_mm_interval_first (const struct drm_mm *mm,u64 start,u64 last)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 126/772 drm/vc4: hvs: Dont write gamma luts on 2711
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Stevenson <[email protected]>
[ Upstream commit 52efe364d1968ee3e3ed45eb44eb924b63635315 ]
The gamma block has changed in 2711, therefore writing the lut in vc4_hvs_lut_load is incorrect.
Whilst the gamma property isn't created for 2711, it is called from vc4_hvs_init_channel, so abort if attempted.
--- drivers/gpu/drm/vc4/vc4_hvs.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/vc4/vc4_hvs.c +3 -0
@@ -220,6 +220,9 @@ static void vc4_hvs_lut_load(struct vc4_hvs *hvs,if (!drm_dev_enter (drm, &idx))return ; +if (hvs->vc4->is_vc5) +return ; +/* The LUT memory is laid out with each HVS channel in order, * each of which takes 256 writes for R, 256 for G, then 256 * for B.
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 127/772 drm/vc4: hdmi: Avoid hang with debug registers when suspended
In reply to Greg Kroah-Hartman6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dom Cobley <[email protected]>
[ Upstream commit 223ee2567a55e4f80315c768d2969e6a3b9fb23d ]
Trying to read /sys/kernel/debug/dri/1/hdmi1_regs when the hdmi is disconnected results in a fatal system hang.
This is due to the pm suspend code disabling the dvp clock. That is just a gate of the 108MHz clock in DVP_HT_RPI_MISC_CONFIG, which results in accesses hanging AXI bus.
Protect against this.
--- drivers/gpu/drm/vc4/vc4_hdmi.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/gpu/drm/vc4/vc4_hdmi.c +4 -0
@@ -170,6 +170,8 @@ static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)if (!drm_dev_enter (drm, &idx))return -ENODEV ; +WARN_ON (pm_runtime_resume_and_get (&vc4_hdmi->pdev->dev)); +drm_print_regset32 (&p, &vc4_hdmi->hdmi_regset);drm_print_regset32 (&p, &vc4_hdmi->hd_regset);drm_print_regset32 (&p, &vc4_hdmi->cec_regset);
@@ -179,6 +181,8 @@ static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)drm_print_regset32 (&p, &vc4_hdmi->ram_regset);drm_print_regset32 (&p, &vc4_hdmi->rm_regset); +pm_runtime_put (&vc4_hdmi->pdev->dev); +drm_dev_exit (idx);return 0 ;
Signature · 1 line
2.43.0