Linux 6.18.56
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.56 kernel.
All users of the 6.18 kernel series must upgrade.
The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/arch/arm64/silicon-errata.rst | 2 Documentation/filesystems/netfs_library.rst | 26 Makefile | 2 arch/arc/include/asm/atomic64-arcv2.h | 6 arch/arc/include/asm/cmpxchg.h | 4 arch/arm64/Kconfig | 30 + arch/arm64/include/asm/kvm_host.h | 2 arch/arm64/include/asm/kvm_nested.h | 3 arch/arm64/kernel/cpu_errata.c | 24 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kernel/signal.c | 34 - arch/arm64/kernel/topology.c | 17 arch/arm64/kernel/vdso/Makefile | 2 arch/arm64/kvm/arm.c | 12 arch/arm64/kvm/emulate-nested.c | 15 arch/arm64/kvm/hyp/nvhe/pkvm.c | 9 arch/arm64/kvm/mmu.c | 46 - arch/arm64/kvm/nested.c | 96 +-- arch/arm64/kvm/vgic/vgic-its.c | 12 arch/arm64/mm/mmu.c | 2 arch/arm64/tools/cpucaps | 2 arch/loongarch/vdso/Makefile | 1 arch/powerpc/kernel/vdso/Makefile | 1 arch/powerpc/perf/imc-pmu.c | 23 arch/riscv/kernel/vdso/Makefile | 1 arch/riscv/kvm/aia_imsic.c | 5 arch/s390/kernel/vdso64/Makefile | 1 arch/x86/crypto/aesni-intel_glue.c | 2 arch/x86/entry/vdso/Makefile | 1 arch/x86/include/asm/kvm-x86-nested-ops.h | 35 + arch/x86/include/asm/kvm_host.h | 22 arch/x86/kernel/sys_x86_64.c | 15 arch/x86/kvm/hyperv.c | 6 arch/x86/kvm/irq.h | 6 arch/x86/kvm/mmu/mmu.c | 6 arch/x86/kvm/mmu/paging_tmpl.h | 2 arch/x86/kvm/svm/nested.c | 1 arch/x86/kvm/svm/sev.c | 46 - arch/x86/kvm/svm/svm.c | 13 arch/x86/kvm/tss.h | 7 arch/x86/kvm/vmx/nested.c | 7 arch/x86/kvm/vmx/vmx.c | 2 arch/x86/kvm/x86.c | 63 +- arch/x86/kvm/x86.h | 2 arch/x86/mm/pgtable.c | 38 - block/blk-mq.c | 115 ++- block/fops.c | 5 block/mq-deadline.c | 2 drivers/android/binder.c | 3 drivers/android/binder/thread.rs | 8 drivers/block/virtio_blk.c | 1 drivers/bluetooth/btintel.c | 15 drivers/bluetooth/btintel_pcie.c | 12 drivers/bluetooth/btusb.c | 2 drivers/char/tpm/tpm2-cmd.c | 2 drivers/char/tpm/tpm2-sessions.c | 1 drivers/edac/altera_edac.c | 67 +- drivers/edac/versalnet_edac.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 13 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 9 drivers/gpu/drm/amd/amdgpu/vi.c | 21 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 drivers/gpu/drm/amd/display/dc/dc.h | 1 drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c | 4 drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c | 1 drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c | 1 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 39 - drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 10 drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomfwctrl.c | 11 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 17 drivers/gpu/drm/radeon/radeon_bios.c | 6 drivers/hid/bpf/hid_bpf_dispatch.c | 2 drivers/hid/hid-multitouch.c | 2 drivers/i2c/busses/i2c-at91-master.c | 8 drivers/i2c/busses/i2c-xiic.c | 61 +- drivers/iio/accel/kionix-kx022a.c | 30 - drivers/iio/accel/kxcjk-1013.c | 2 drivers/iio/accel/sca3000.c | 2 drivers/iio/adc/ad4030.c | 23 drivers/iio/adc/ad7173.c | 4 drivers/iio/adc/ad_sigma_delta.c | 31 - drivers/iio/adc/ade9000.c | 36 - drivers/iio/adc/adi-axi-adc.c | 61 +- drivers/iio/adc/aspeed_adc.c | 13 drivers/iio/adc/axp288_adc.c | 8 drivers/iio/adc/max1363.c | 8 drivers/iio/adc/pac1934.c | 4 drivers/iio/adc/rohm-bd79124.c | 20 drivers/iio/adc/stm32-adc.c | 43 - drivers/iio/adc/sun4i-gpadc-iio.c | 10 drivers/iio/adc/xilinx-xadc-core.c | 9 drivers/iio/buffer/industrialio-buffer-dmaengine.c | 16 drivers/iio/cdc/ad7150.c | 8 drivers/iio/dac/rohm-bd79703.c | 3 drivers/iio/frequency/admv1013.c | 9 drivers/iio/gyro/adis16136.c | 2 drivers/iio/health/max30102.c | 12 drivers/iio/imu/adis16400.c | 2 drivers/iio/imu/adis16480.c | 4 drivers/iio/industrialio-buffer.c | 7 drivers/iio/industrialio-trigger.c | 2 drivers/iio/light/gp2ap020a00f.c | 2 drivers/iio/light/rohm-bu27034.c | 62 +- drivers/iio/pressure/bmp280-core.c | 2 drivers/iio/pressure/rohm-bm1390.c | 2 drivers/iio/proximity/aw96103.c | 30 - drivers/iio/proximity/isl29501.c | 2 drivers/iio/proximity/pulsedlight-lidar-lite-v2.c | 4 drivers/iio/proximity/sx9324.c | 2 drivers/iio/proximity/vcnl3020.c | 24 drivers/iio/proximity/vl53l0x-i2c.c | 3 drivers/input/keyboard/atkbd.c | 8 drivers/input/mouse/synaptics.c | 7 drivers/input/serio/i8042-acpipnpio.h | 9 drivers/input/touchscreen/s6sy761.c | 14 drivers/mtd/devices/block2mtd.c | 2 drivers/mtd/devices/mtd_intel_dg.c | 3 drivers/mtd/mtdcore.c | 2 drivers/mtd/nand/raw/cadence-nand-controller.c | 6 drivers/mtd/nand/raw/vf610_nfc.c | 85 ++ drivers/mtd/nand/spi/core.c | 48 + drivers/mtd/spi-nor/core.c | 2 drivers/net/ethernet/broadcom/bcmsysport.c | 8 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 34 - drivers/net/ethernet/broadcom/genet/bcmgenet.h | 2 drivers/net/ethernet/google/gve/gve_tx_dqo.c | 14 drivers/net/ethernet/marvell/mvneta.c | 2 drivers/net/ethernet/marvell/octeontx2/af/mcs.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 2 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 38 - drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 3 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 10 drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c | 9 drivers/net/ethernet/microchip/sparx5/sparx5_mactable.c | 34 + drivers/net/ethernet/microchip/sparx5/sparx5_main.c | 121 +--- drivers/net/ethernet/microchip/sparx5/sparx5_main.h | 10 drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c | 1 drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c | 21 drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c | 2 drivers/net/ethernet/microchip/vcap/vcap_api.c | 2 drivers/net/ethernet/microsoft/mana/mana_en.c | 43 + drivers/net/ethernet/realtek/r8169_main.c | 6 drivers/net/ethernet/stmicro/stmmac/stmmac.h | 4 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 99 +-- drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_xdp.c | 2 drivers/net/pcs/pcs-rzn1-miic.c | 3 drivers/net/pfcp.c | 3 drivers/net/phy/aquantia/aquantia_main.c | 5 drivers/net/phy/qcom/at803x.c | 8 drivers/net/usb/qmi_wwan.c | 1 drivers/net/wireless/ath/ath11k/mac.c | 1 drivers/net/wireless/ath/ath9k/hif_usb.c | 19 drivers/net/wireless/ath/ath9k/wmi.c | 16 drivers/net/wireless/ath/ath9k/wmi.h | 1 drivers/net/wireless/intel/iwlegacy/3945-mac.c | 1 drivers/net/wireless/silabs/wfx/hif_tx.c | 4 drivers/net/wireless/st/cw1200/bh.c | 8 drivers/net/wireless/st/cw1200/txrx.c | 14 drivers/net/wireless/ti/wlcore/main.c | 4 drivers/net/xen-netfront.c | 12 drivers/nvme/host/multipath.c | 7 drivers/nvme/host/pci.c | 2 drivers/nvme/target/auth.c | 4 drivers/nvme/target/configfs.c | 9 drivers/nvme/target/core.c | 7 drivers/nvme/target/fabrics-cmd-auth.c | 5 drivers/nvme/target/nvmet.h | 4 drivers/nvme/target/pci-epf.c | 3 drivers/of/base.c | 10 drivers/of/irq.c | 2 drivers/of/overlay.c | 17 drivers/pci/pci.c | 15 drivers/rtc/dev.c | 2 drivers/rtc/rtc-ac100.c | 39 - drivers/rtc/rtc-mpfs.c | 6 drivers/rtc/rtc-spear.c | 11 drivers/spi/spi-cs42l43.c | 97 +++ drivers/staging/greybus/uart.c | 3 drivers/thunderbolt/ctl.c | 63 +- drivers/thunderbolt/quirks.c | 3 drivers/thunderbolt/switch.c | 9 drivers/thunderbolt/tb.c | 27 drivers/thunderbolt/test.c | 21 drivers/thunderbolt/tunnel.c | 26 drivers/thunderbolt/xdomain.c | 4 drivers/tty/amiserial.c | 9 drivers/tty/n_gsm.c | 47 - drivers/tty/serial/8250/8250_bcm7271.c | 2 drivers/tty/serial/8250/8250_omap.c | 15 drivers/tty/serial/kgdboc.c | 9 drivers/tty/serial/ma35d1_serial.c | 6 drivers/tty/serial/max3100.c | 13 drivers/tty/serial/qcom_geni_serial.c | 5 drivers/tty/serial/sc16is7xx.c | 53 + drivers/tty/serial/serial-tegra.c | 18 drivers/tty/serial/serial_core.c | 15 drivers/tty/serial/vt8500_serial.c | 1 drivers/tty/tty_io.c | 54 + drivers/tty/tty_port.c | 91 ++- drivers/tty/vcc.c | 5 drivers/tty/vt/selection.c | 4 drivers/tty/vt/vc_screen.c | 23 drivers/tty/vt/vt.c | 5 drivers/usb/cdns3/cdns3-gadget.c | 4 drivers/usb/cdns3/cdns3-pci-wrap.c | 5 drivers/usb/chipidea/ci_hdrc_tegra.c | 4 drivers/usb/class/cdc-acm.c | 41 - drivers/usb/class/cdc-acm.h | 1 drivers/usb/core/hub.c | 7 drivers/usb/core/message.c | 8 drivers/usb/dwc2/hcd.c | 3 drivers/usb/dwc3/core.h | 19 drivers/usb/dwc3/dwc3-am62.c | 1 drivers/usb/dwc3/ep0.c | 9 drivers/usb/dwc3/gadget.c | 108 +++ drivers/usb/gadget/function/f_fs.c | 15 drivers/usb/gadget/function/f_midi2.c | 4 drivers/usb/gadget/function/f_uac1_legacy.c | 6 drivers/usb/gadget/udc/aspeed-vhub/core.c | 4 drivers/usb/gadget/udc/aspeed-vhub/dev.c | 2 drivers/usb/gadget/udc/aspeed-vhub/hub.c | 5 drivers/usb/gadget/udc/aspeed-vhub/vhub.h | 1 drivers/usb/gadget/udc/dummy_hcd.c | 4 drivers/usb/host/octeon-hcd.c | 2 drivers/usb/host/ohci-da8xx.c | 2 drivers/usb/host/ohci-s3c2410.c | 1 drivers/usb/host/ohci-spear.c | 1 drivers/usb/host/ohci-st.c | 1 drivers/usb/serial/bus.c | 6 drivers/usb/serial/cp210x.c | 1 drivers/usb/serial/generic.c | 10 drivers/usb/serial/option.c | 14 drivers/usb/serial/quatech2.c | 19 drivers/usb/serial/ssu100.c | 18 drivers/usb/serial/usb-serial.c | 127 +++- drivers/usb/serial/xr_serial.c | 10 drivers/usb/storage/sierra_ms.c | 7 drivers/usb/typec/anx7411.c | 5 drivers/usb/typec/port-mapper.c | 21 drivers/usb/typec/tcpm/tcpm.c | 2 drivers/usb/typec/tipd/core.c | 11 drivers/usb/typec/ucsi/displayport.c | 9 drivers/usb/typec/ucsi/ucsi.c | 17 drivers/usb/typec/ucsi/ucsi_acpi.c | 33 + drivers/usb/typec/ucsi/ucsi_glink.c | 15 drivers/virt/nitro_enclaves/ne_misc_dev.c | 1 drivers/virt/vmgenid.c | 9 fs/attr.c | 12 fs/btrfs/inode.c | 3 fs/ext4/inode.c | 4 fs/f2fs/file.c | 4 fs/netfs/buffered_read.c | 7 fs/netfs/buffered_write.c | 9 fs/netfs/direct_write.c | 9 fs/netfs/internal.h | 2 fs/netfs/misc.c | 99 +++ fs/smb/client/cached_dir.c | 6 fs/smb/client/cifsfs.c | 7 fs/smb/client/cifsglob.h | 10 fs/smb/client/dir.c | 39 - fs/smb/client/link.c | 15 fs/smb/client/smb2file.c | 19 fs/smb/client/smb2inode.c | 23 fs/smb/client/smb2misc.c | 9 fs/smb/client/smb2ops.c | 119 ++- fs/smb/client/smb2pdu.c | 156 +++-- fs/smb/client/smb2proto.h | 2 fs/smb/client/transport.c | 142 +++- fs/verity/Kconfig | 3 fs/verity/open.c | 8 fs/xfs/scrub/newbt.c | 8 include/linux/fsverity.h | 25 include/linux/netfilter_netdev.h | 2 include/linux/netfs.h | 2 include/linux/perf_event.h | 7 include/linux/rtnetlink.h | 7 include/linux/skbuff.h | 2 include/linux/soc/qcom/geni-se.h | 15 include/linux/tty.h | 1 include/linux/tty_driver.h | 6 include/linux/tty_port.h | 22 include/linux/units.h | 3 include/linux/unwind_deferred.h | 18 include/linux/usb/serial.h | 1 include/net/bluetooth/hci_core.h | 5 include/net/dst_metadata.h | 7 include/net/mac80211.h | 4 include/net/mana/mana.h | 8 include/net/neighbour.h | 15 include/net/netfilter/nf_flow_table.h | 2 include/net/sch_generic.h | 9 include/net/xdp.h | 5 include/sound/core.h | 9 include/uapi/linux/random.h | 2 init/Kconfig | 5 io_uring/cmd_net.c | 19 io_uring/io_uring.c | 7 io_uring/zcrx.c | 9 kernel/audit_tree.c | 24 kernel/events/core.c | 298 ++++------ kernel/events/ring_buffer.c | 7 kernel/kprobes.c | 8 kernel/module/main.c | 8 kernel/trace/fprobe.c | 25 mm/damon/core.c | 27 mm/execmem.c | 55 - mm/huge_memory.c | 4 mm/kasan/common.c | 13 mm/shmem.c | 7 mm/vma.c | 18 net/bluetooth/hci_conn.c | 18 net/bluetooth/hci_core.c | 54 + net/bluetooth/hci_debugfs.c | 2 net/bluetooth/hci_sync.c | 19 net/bluetooth/rfcomm/tty.c | 7 net/bluetooth/smp.c | 2 net/core/dev.c | 80 +- net/core/neighbour.c | 21 net/core/page_pool.c | 2 net/core/skbuff.c | 8 net/core/sock.c | 4 net/ipv4/af_inet.c | 2 net/ipv4/tcp_input.c | 6 net/ipv4/tcp_ipv4.c | 2 net/ipv6/addrconf.c | 2 net/ipv6/ndisc.c | 8 net/ipv6/seg6_iptunnel.c | 2 net/mac80211/agg-rx.c | 2 net/mac80211/chan.c | 45 + net/mac80211/drop.h | 47 + net/mac80211/fils_aead.c | 8 net/mac80211/ieee80211_i.h | 2 net/mac80211/mesh_pathtbl.c | 30 - net/mac80211/mlme.c | 4 net/mac80211/rc80211_minstrel_ht.c | 30 - net/mac80211/rx.c | 104 +-- net/mac80211/spectmgmt.c | 4 net/mac80211/sta_info.c | 6 net/mac80211/tx.c | 128 +++- net/mctp/device.c | 6 net/mptcp/protocol.c | 2 net/netfilter/ipset/ip_set_bitmap_gen.h | 2 net/netfilter/ipvs/ip_vs_conn.c | 3 net/netfilter/ipvs/ip_vs_lblc.c | 4 net/netfilter/ipvs/ip_vs_lblcr.c | 3 net/netfilter/ipvs/ip_vs_sync.c | 33 + net/netfilter/nf_flow_table_core.c | 7 net/netfilter/nf_flow_table_offload.c | 14 net/netfilter/nf_nat_bpf.c | 3 net/netfilter/nf_nat_core.c | 5 net/netfilter/nft_flow_offload.c | 7 net/packet/af_packet.c | 3 net/rds/tcp.c | 9 net/sched/act_ct.c | 2 net/sched/act_skbedit.c | 5 net/sched/cls_api.c | 15 net/sched/sch_codel.c | 2 net/sched/sch_fq_codel.c | 4 net/sctp/socket.c | 2 net/sunrpc/xprtrdma/svc_rdma_transport.c | 8 net/tipc/crypto.c | 20 net/wireless/nl80211.c | 11 net/wireless/scan.c | 22 rust/kernel/devres.rs | 164 ++--- rust/kernel/irq/request.rs | 89 +- sound/core/seq/seq_compat.c | 4 sound/hda/codecs/realtek/alc269.c | 3 sound/hda/controllers/tegra.c | 3 sound/pci/ice1712/ice1712.c | 2 sound/soc/codecs/max98363.c | 2 sound/soc/codecs/rt1017-sdca-sdw.c | 27 sound/soc/codecs/rt274.c | 4 sound/soc/codecs/rt286.c | 2 sound/soc/codecs/wm8903.c | 2 sound/soc/qcom/lpass-cpu.c | 4 sound/soc/sdw_utils/soc_sdw_utils.c | 20 sound/soc/tegra/tegra186_asrc.c | 2 sound/usb/caiaq/device.c | 3 sound/usb/line6/playback.c | 7 sound/usb/misc/ua101.c | 9 sound/usb/quirks.c | 4 tools/testing/selftests/mm/hugepage-mremap.c | 5 385 files changed, 4293 insertions(+), 2068 deletions(-)
Aamir Ahmed (3):
rtc: ac100: Assign .num before accessing .hws
wifi: wfx: validate MIB read length before copying to caller
rtc: ac100: Fix clock provider use-after-free on probe failure
Aaron Kling (1):
ALSA: hda/tegra: Re-enable SDO workaround for Tegra194
Abdurrahman Hussain (6):
of/overlay: put property on deadprops only after changeset add succeeds of/overlay: only treat a positive changeset id as registered of/overlay: don't leak fragment references when changeset init fails of/overlay: don't create "//" paths for fragments targeting the root
i2c: xiic: preserve PEC byte length in SMBus block read setup
i2c: xiic: don't clobber msg->len to signal block-read completion
Alan Stern (1):
USB: gadget: dummy-hcd: Fix wait for outstanding request completions
Aldo Ariel Panzardo (1):
HID: multitouch: stop the release timer from being rearmed on remove
Alice Ryhl (2):
rust_binder: cancel deferred work items in thread exit
rust: irq: pass RegistrationInner as cookie to request_irq
Alireza Asgari (1):
net: fix checksum offsets in skb_splice_from_iter()
Alistair Francis (1):
nvmet-tcp: Don't error if TLS is enabed on a reset
Amit Sunil Dhamne (1):
usb: typec: tcpm: recover after failure to start the frs ams
Andre Eikmeyer (1):
drm/amdgpu: reset VI ASIC on MacBookPro15,1
Andrea Parri (1):
arm64: mm: Fix the break-before-make flush range for erratum 2645198
Andrey Albershteyn (1):
fs,fsverity: remove check for fsverity being enabled in setattr_prepare()
Andrey Ryabinin (1):
kasan: unpoison task stack below watermark only in generic mode
Andy Shevchenko (1):
units: Add HZ_PER_GHZ
Anirudh Virdi (1):
net/mlx5: Fix slab-out-of-bounds when handling team device events
Antoniu Miclaus (3):
iio: adc: ade9000: fix overlapping scan_index for current and voltage channels
iio: adc: ade9000: handle Phase C dip events in IRQ1 handler
iio: adc: ade9000: request interrupts after powering the device
Aohan Mei (1):
netfilter: nft_flow_offload: drop flowtable reference on init error path
Arka Mondal (3):
iio: gyro: adis16136: fix unprotected debugfs reads
iio: imu: adis16400: fix unprotected debugfs reads
iio: imu: adis16480: fix unprotected debugfs reads
Arthur Heymans (1):
drm/amd/display: Preserve eDP mode on initial ASSR failure
Asad Kamal (1):
drm/amd/powerplay: fix VoltageObjectInfo zero-stride loop and OOB read
Baha Mesleh (1):
octeontx2-af: mcs: Fix SC resource cleanup loop
Baolin Wang (1):
mm: shmem: ignore sysfs configs for shmem forced collapse
Bartosz Golaszewski (1):
net: phy: aquantia: fix system interface type not updated in forced mode
Bean Huo (1):
nvme-pci: add NVME_QUIRK_DMAPOOL_ALIGN_512 for Micron 4100AT
Beata Michalska (2):
arm64: errata: Factor out broken AMU const counter cap
arm64: errata: Add Cortex-A725 erratum 3821522 workaround
Benjamin Tissoires (1):
HID: bpf: cast size to ssize_t when checking hid_bpf_hw_request
Binbin Deng (1):
net/mctp: publish the mctp_dev only after it is initialised
Carlo Szelinsky (1):
USB: serial: option: add Quectel EG060W
Cezary Rojewski (2):
ASoC: codecs: rt286: Revert delay value for jack setup
ASoC: codecs: rt274: Fix format setting for 44100 rate
Chandrashekar Devegowda (3):
Bluetooth: btintel: fix buffer over-read in btintel_hw_error()
Bluetooth: btintel_pcie: fix plen overflow in btintel_pcie_recv_frame()
Bluetooth: btintel_pcie: reject oversized TX packets in send_frame()
ChenXiaoSong (2):
smb/client: use stack-allocated smb2_file_all_info in smb3_query_mf_symlink() smb/client: pass cifs_open_info_data to SMB2_open()
Chengfeng Ye (7):
Bluetooth: RFCOMM: Fix initial port reference race
Bluetooth: hci_sync: Fix inquiry cache use-after-free
Bluetooth: hci_conn: Lock parent access during enhanced SCO setup
Bluetooth: hci_core: Serialize ACL scheduling with channel deletion
Bluetooth: hci_core: Serialize SCO and ISO scheduling with teardown
Bluetooth: hci_core: Serialize fragmented ISO packet queueing
Bluetooth: Serialize SMP remote OOB data access
Christoph Hellwig (1):
fs,fsverity: reject size changes on fsverity files in setattr_prepare
Chuck Lever (1):
svcrdma: Use svc_xprt_put to free listener on create failure
Cong Nguyen (2):
iio: adc: max1363: sign-extend bipolar differential channel reads
iio: proximity: pulsedlight: fix iio_device left registered on PM setup failure
Daehyeon Ko (3):
nvme-multipath: fix underflow in ANA log bounds checks
nvmet: pci-epf: reject too-short SGL segments
thunderbolt: Reject oversized XDomain properties responses
Daniel Machon (5):
net: sparx5: move netdev and notifier block registration to probe
net: sparx5: move VCAP initialization to probe
net: sparx5: move MAC table initialization and add deinit function
net: sparx5: move stats initialization and add deinit function
net: sparx5: move PTP IRQ handling out of sparx5_start()
Daniel Starke (1):
tty: n_gsm: fix missing modem controls after DLCI open in convergence layer type 2
Danilo Krummrich (4):
rust: devres: fix race condition due to nesting
rust: devres: add 'static bound to Devres<T>
rust: devres: fix race between concurrent revokers
rust: devres: ensure revocation is complete before device finishes unbinding
Dapeng Mi (1):
perf/core: Check kernel access when kernel callchains are requested
Darrick J. Wong (1):
xfs: don't let memory failures leak blocks and kill repairs
David Heidelberg (1):
Input: s6sy761 - fix resume ordering and restore sensing
David Howells (1):
cifs: Remove the RFC1002 header from smb_hdr
Dexuan Cui (1):
net: mana: Sync page pool RX frags for CPU
Dinh Nguyen (4):
EDAC/altera: Do not allow driver unbinding EDAC/altera: Drop __init from ECC setup paths for re-probe safety EDAC/altera: Fix memory leak on dci allocation failure EDAC/altera: Fix use-after-free in error paths
Dipayaan Roy (1):
net: mana: remove double CQ cleanup in mana_create_rxq error path
Donggeun Yoo (1):
iio: proximity: vl53l0x-i2c: claim direct mode for raw reads
Eric Biggers (1):
fsverity: add dependency on 64K or smaller pages
Eric Dumazet (3):
net: restrict SO_RESERVE_MEM to TCP sockets and cap max value
ipv6: sr: use skb_get_hash_net() in seg6_make_flowlabel()
ipv4: free inet_opt and ireq_opt after an RCU grace period
Fabrice Gasnier (2):
iio: adc: stm32-adc: fix check on internal channel availability
iio: adc: stm32-adc: fix possible division by zero in processed channel
Fan Wu (9):
usb: gadget: aspeed-vhub: cancel wake work on device removal
usb: typec: ucsi: glink: fix use-after-free of ucsi on remove
usb: cdns3: fix use-after-free in cdns3_gadget_exit()
tty: serial: max3100: shut down timer before freeing port
serial: 8250_bcm7271: fix use-after-free in brcmuart_remove()
iio: adc: ad_sigma_delta: fix use-after-free on unbind
iio: adc: xilinx-xadc: free IRQ before cancelling the unmask worker on unbind
iio: light: gp2ap020a00f: drain irq_work after free_irq
iio: trigger: cancel reenable_work before freeing trigger
Felix Fietkau (2):
wifi: mac80211: prevent AP VLAN tx from other interfaces
wifi: mac80211: set info->band for 802.3 encap offload frames
Felix Gu (2):
iio: adc: sun4i-gpadc-iio: clean up on thermal zone registration failure
iio: adc: sun4i-gpadc-iio: drop underflowing pm_runtime_put() calls
Fernando Fernandez Mancera (1):
netfilter: bpf: reject invalid NAT manipulation types
Florian Fainelli (2):
net: systemport: Fix buffer overflow in bcm_sysport_get_stats()
net: systemport: Fix RUNT MIB counter register offset calculation
Florian Westphal (1):
netfilter: ipset: do not update comments from kernel-side adds
Francisco Beltrán Millalén (1):
drm/amdgpu: reset VI ASIC on MacBookPro14,3
Frank Sorenson (1):
smb: client: split cifsFileInfo bitfields to avoid shared-byte RMW races
Fuad Tabba (2):
KVM: arm64: Clear HCR_EL2.RW for 32-bit non-protected vCPUs
KVM: arm64: Apply the fine-grained UNDEFs without FEAT_FGT
Georgios Karantzas (1):
wifi: ath9k_htc: bound TX aggregation to MAX_TX_BUF_SIZE
Gilberto Conde (1):
net: usb: qmi_wwan: add Quectel EG120K-EA
Greg Kroah-Hartman (1):
Linux 6.18.56
Guangshuo Li (5):
drm/mediatek: Fix ovl adaptor platform device leak drm/amdgpu: fix IP instance memory leak on kobject add failure drm/amdgpu: fix ACP MFD device leak on init failure EDAC/versalnet: Drop remote processor handle refcount on driver removal
wifi: iwlegacy: 3945: free EEPROM data on remove
Guixin Liu (2):
nvmet: copy the hostid into the ctrl before creating PR pc_refs
nvme-multipath: set BLK_FEAT_ZONED only after the zone info is known
Han Xu (1):
mtd: spinand: Enable QE on all dies
Hannu Varjoranta (1):
gve: DQO: accept TSO packets with non-protocol gso_type bits
Hao Ge (1):
module: fix lost error code from codetag_load_module()
Haojie Li (1):
drm/mediatek: Add missing IS_ERR check for ovl_adaptor platform device
Harshit Mogalapalli (1):
net: microchip: vcap: stop scanning after deleting key field
Hongjian Dai (1):
i2c: at91: release DMA channels when probe defers
Hubert Mazur (1):
mm/execmem: make the populate and alloc atomic
Hui Peng (2):
vt: selection: Fix unsigned underflow and slab-out-of-bounds read in paste_selection()
usb: core: clear both ep_in and ep_out for non-ep0 control endpoints
Hui Su (1):
iio: pressure: bmp280: fix out-of-bounds access in sampling frequency lookup
HyeongJun An (1):
ASoC: wm8903: Move the DRC QR threshold to the register that holds it
Ian Lin (2):
USB: serial: option: add Compal EXM-G1x support
USB: serial: option: add Compal EXC-T1 support
Ian Rogers (1):
perf: Replace perf_event_header__init_id with full header init
Ilkka Lappeteläinen (1):
net/packet: prevent TX_RING byte count overflow
Ilya Maximets (1):
net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone
Imre Kaloz (1):
drm/radeon: Read the VRAM VBIOS signature with readb()
Jamal Hadi Salim (4):
net/sched: cls_api: reclaim an empty proto on the error path net/sched: fq_codel: match the no-drop threshold to the packet size net/sched: sch_codel: match the no-drop threshold to the packet size
net: cap skb->queue_mapping when the tx queue is picked
Jameson Thies (1):
usb: typec: ucsi: displayport: Current CAM OOB index fixup
Janani Sunil (1):
iio: adc: adi-axi-adc: Initialize state mutex
Jari Seppälä (1):
octeontx2-pf: Fix RSS indirection table size
Jeff Jo (1):
tcp: refresh TS.Recent for accepted old ACKs
Jens Axboe (1):
io_uring: fix task_work add use-after-free with SQPOLL
Jiakai Xu (1):
RISC-V: KVM: Fix null pointer dereference in kvm_riscv_aia_imsic_has_attr()
Jiale Yao (1):
iio: accel: kxcjk-1013: reject duplicate event disable
Jiangshan Yi (4):
drm/amd/display: check dc_state_create_copy() for NULL in dm_suspend
ASoC: codecs: max98363: fix uninitialized stream_config->type
ASoC: codecs: rt1017-sdca-sdw: fix uninitialized stream_config->type
tpm: fix off-by-four bounds check in tpm2_get_random()
Jiazi Liu (1):
usb: dwc3: gadget: fix IRQ storm on invalid event buffer count
Jie Deng (1):
usb: cdns3: Fix NULL pointer dereference in cdns3_pci_probe
Jinseob Kim (1):
iio: buffer: serialize buffer teardown with mode claims
Johan Hovold (14):
USB: cdc-acm: fix racy TIOCMIWAIT implementation
USB: serial: fix port tear down use-after-free
tty: amiserial: fix broken TIOCMIWAIT
tty: tty_port: restore TTY_IO_ERROR on activation failure
tty: port: fix tty_port_tty_vhangup() race
tty: abort break signalling on hangup
serial: revert guards in uart_wait_modem_status()
serial: fix TIOCMIWAIT race
USB: serial: quatech2: fix baud rate overflow
USB: serial: ssu100: fix baud rate overflow
USB: serial: fix dynamic id driver deregistration race
USB: serial: fix driver deregistration order
USB: serial: fix ioctl hangup race
tty: fix saved termios reset race
Johannes Berg (1):
wifi: mac80211: remove RX_DROP
Jonathan Cameron (1):
iio: buffer: Ensure bounce buffer used for unaligned case is zeroed.
Josef Bacik (1):
xen/netfront: drop RX packets with a short Ethernet header
Joshua Rogers (2):
tty: vcc: zero-initialize control packet in vcc_send_ctl()
tty: vcc: hold port lock when clearing tty pointer in vcc_cleanup
Julian Anastasov (3):
ipvs: fix missing counter decrement in lblc
ipvs: do not create invisible templates
ipvs: filter some flags received in the backup server
Julian Sun (1):
nvmet: preserve device path on allocation failure
Jun Yang (1):
sctp: check RCV_SHUTDOWN after the sendmsg connect wait
Junyuan Feng (1):
io_uring/zcrx: requeue multishot receives stopped by a local resource
Jérémy Carrat (1):
USB: serial: cp210x: add Corsair AX1500i Power Supply
Jérémy Jean (2):
audit: fix exe mark UAF in kill_rules()
tipc: prevent GCM nonce reuse on peer key changes
Karl Mehltretter (2):
mtd: core: call _get_device() with the master MTD
random: fix vgetrandom_opaque_params kernel-doc
Keith Busch (1):
blk-mq: set RQF_USE_SCHED when the operation is known
Kendall Willis (1):
serial: 8250_omap: fix wake irq cleared during suspend
Krzysztof Kozlowski (1):
iio: adc: aspeed: Simplify with dev_err_probe
Kuniyuki Iwashima (2):
neighbour: Use RCU list helpers for neigh_parms.list writers.
neighbour: Annotate access to neigh_parms fields.
Kurt Lieber (1):
thunderbolt: Disable CL states for the Anker Prime TB5 dock
Kyle Zeng (1):
ALSA: seq: Serialize compat port-info ioctls
Laurent Wandrebeck (1):
x86/mm: Don't apply va_align to hugetlb mappings on AMD F15h
Laxman Acharya Padhya (1):
iio: proximity: aw96103: validate firmware data length
Leon Hwang (1):
kprobes: Skip disarmed probes when checking optkprobe overlap
Linkai Gong (1):
usb: typec: anx7411 - stop the IRQ before destroying the workqueue
Linmao Li (2):
Bluetooth: hci_core: Fix inquiry cache timestamps on 64-bit systems
iio: adc: ade9000: fix NULL pointer dereference in clkout registration
Liu Chao (1):
usb: gadget: f_uac1_legacy: validate bRequest index in generic_{set,get}_cmd
Liu Dalin (1):
rtc: dev: zero-initialize struct rtc_wkalrm to prevent information leak
Lorenzo Bianconi (2):
net: stmmac: fix rx Scatter-Gather support
net: mvneta: clear XDP pfmemalloc flag between frames
Lorenzo Stoakes (1):
mm/vma: rename __mmap_prepare() function to avoid confusion
Lorenzo Stoakes (ARM) (1):
mm/vma: predicate setting mmap_prepare VMA fields on new vma alloc
Lovekesh Solanki (3):
Input: i8042 - add nomux quirk for Fujitsu LIFEBOOK U7410
Input: synaptics - add LEN205b entry to smbus_pnp_ids for ThinkPad T490
usb: hub: use shorter 120ms post resume hold for SS root hubs
Luo Gengkun (1):
perf: Fix race between perf_event_exit_task() and perf_pending_task()
Manush Prajwal (1):
rtc: mpfs: fix unchecked devm_clk_get() error pointer in probe()
Maoyi Xie (1):
rds_tcp: close NULL deref window in rds_tcp_set_callbacks
Marc Zyngier (4):
KVM: arm64: nv: Fix life cycle of the nested_mmus array
KVM: arm64: nv: Delay freeing of shadow S2 structures until VM destruction
KVM: arm64: vgic-its: Fix MOVALL handling of source redistributor
KVM: arm64: Always populate FGT masks at boot time
Marcelo Schmitt (2):
iio: adc: ad7173: Fix digital filter configuration
iio: adc: ad4030: Use BIT macro to improve code readability
Marco Chen (1):
iio: health: max30102: fix NULL dereference in interrupt handler
Marek Maslanka (1):
usb: typec: port-mapper: Only match USB4 port if host interface is available
Marian Rotariu (1):
usb: typec: tipd: don't send GAID when probe fails in APP mode
Mark Rutland (1):
arm64/fpsimd: signal: Forbid non-streaming SVE payload on SME-only systems
Martino Papero (1):
Input: atkbd - skip deactivate for Lenovo IdeaPad Slim 3 15IWC11
Masami Hiramatsu (Google) (1):
fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()
Matt Fleming (1):
mm/huge_memory: initialise workingset state before folio split
Matthieu Baerts (NGI0) (1):
mptcp: fix msk->timer_ival reset
Matti Vaittinen (10):
iio: dac: rohm-bd79703: Do not allow writing SCALE
iio: light: rohm-bu27034: Fix error return
iio: accel: kionix-kx022a: Fix array boundary check
iio: accel: kionix-kx022a: Prevent memory leak and fix state
iio: adc: rohm-bd79124: Catch regmap errors at measurement start/stop
iio: adc: rohm-bd79124: Fix channel initialization
iio: adc: rohm-bd79124: Fix GPIO mask check
iio: adc: rohm-bd79124: Fix rising alarm
iio: light: rohm-bu27034: Fix infinite delay on error
iio: pressure: rohm-bm1390: Return error when read fails
Mehmet Fide (2):
mtd: rawnand: vf610_nfc: fix reads on chips with more than 64 bytes of OOB
mtd: rawnand: vf610_nfc: fix false bitflips on reads of erased pages
Menachem Adin (1):
mtd: mtd_intel_dg: reset poll counter for each erase
Menglong Dong (1):
tracing: fprobe: fix suspicious rcu usage in fprobe_entry
Michael Hennerich (1):
iio: buffer-dmaengine: fix sg entry iteration when building dma_vecs
Mika Westerberg (1):
thunderbolt: Fix KASAN reported use-after-free when request is canceled
Mike Rapoport (Microsoft) (1):
selftests/mm: hugetlb-mremap: add setup of HugeTLB pages
Mikhail Gavrilov (1):
x86/mm: Drop unnecessary PMD page copy when freeing
Mina Almasry (1):
net: page_pool: fix use-after-free in page_pool_recycle_ring_bulk()
Mingyu Wang (1):
tty: vt: fix memory leak in vc_allocate()
Mohamad Raizudeen (1):
crypto: x86/aes-gcm - fix always true check for last AAD segment
Mostafa Saleh (1):
KVM: arm64: Use stage-1 leaf size for VM_PFNMAP
Myeonghun Pak (5):
usb: ohci-da8xx: disable controller wakeup on cleanup
usb: ohci-s3c2410: disable controller wakeup on removal
usb: ohci-spear: disable controller wakeup on removal
usb: ohci-st: disable controller wakeup on removal
usb: chipidea: tegra: disable runtime PM on resume failure
Namjae Jeon (1):
smb: client: use finish_no_open() for non-regular inodes
Nathan Chancellor (1):
random: vDSO: avoid call to memset() when zeroing reserved parameter
Nguyen Ngoc Thang (2):
ALSA: caiaq: unregister the input device when probe fails
Bluetooth: hci_sync: don't drain cmd_sync backlog on unregister
Nicolai Buchwitz (2):
net: bcmgenet: allocate RX buffers as page fragments
net: bcmgenet: fix NULL dereference in set_coalesce before first open
Nicolas Escande (1):
wifi: ath11k: reset ar->num_stations on hardware start
Niklas Cassel (1):
virtio_blk: set the zone write granularity
Nikola Prica (1):
PCI: Accept AtomicOps already enabled by the hypervisor
Nuno Sá (3):
mtd: spinand: fix zero oobavail when no ECC engine is used
mtd: spinand: fix NULL pointer dereference with no ECC engine
iio: adc: adi-axi-adc: Make use of dev_err_probe()
Oleg Keri (1):
arm64: topology: fix arch_freq_get_on_cpu() overflow above 4.19 GHz
Oleksij Rempel (1):
r8169: disable EEE on RTL8168h/8111h
Orgad Shaneh (1):
usb: octeon-hcd: fix the FIFO-flush timeout computation
Pablo Neira Ayuso (1):
netfilter: flowtable: generalize pending status bit
Pannarat Wiriyaarritham (1):
usb: typec: ucsi: acpi: Assume UCSI 1.2 on Acer Nitro ANV15-41
Paolo Bonzini (1):
KVM: move TSS constants from kvm_host.h to tss.h
Paul Mbewe (2):
serial: sc16is7xx: fix TX gap caused by kfifo circular buffer wrap-around
serial: sc16is7xx: refill TX FIFO below trigger using fresh TXLVL
Paulo Alcantara (8):
netfs: zero gaps in read-gaps folio to avoid writing back stale data
smb: client: discard post-EOF pagecache when extending a file via zero range
smb: client: discard post-EOF pagecache when extending a file via copy range
smb: client: flush and commit data before querying allocated ranges
netfs: clear post-EOF pagecache when extending a file via write
smb: client: flush dirty data before zeroing a range
smb: client: distinguish real EOF from a stale remote_i_size on read
smb: client: only require read lease for size-extending preallocate
Pei Xiao (1):
mtd: block2mtd: Fix divide error when erase_size is zero
Pengpeng Hou (3):
wifi: ath9k: reject short WMI command responses
iio: cdc: ad7150: fix OF matching and publish module aliases
iio: adc: aspeed: propagate reset deassert errors
Peter Zijlstra (1):
unwind: Shorten lines
Prashanth K (1):
usb: typec: ucsi: Get the connector fwnode based on reg value
Prathamesh Deshpande (1):
net/mlx5e: Fix AF_XDP TX timestamp teardown NULL dereference
Qishuai Liu (1):
ipv6: fix prefix route expiry in modify_prefix_route()
Qu Wenruo (1):
btrfs: initialize inode mapping flags for cached inodes
Quentin Freimanis (2):
net: sparx5: skip ptp deinit if init was skipped
net: sparx5: make ports inherit the switch base mac address type
Radhey Shyam Pandey (3):
usb: dwc3: am62: Fix runtime PM usage count leak on probe error path
usb: typec: tipd: fix uninitialized typec_partner_desc in tps6598x_connect()
usb: typec: tipd: fix uninitialized typec_partner_desc in cd321x_update_work()
Raphaël Larocque (1):
Input: synaptics - limit T440p InterTouch quirk to LEN0036
Richard Fitzgerald (2):
ASoC: sdw_utils: Set snd_soc_dai_link_ch_map.codec_ch_mask for capture
spi: cs42l43: Workaround for wrong speaker ID on Dell XPS 13 DX13260
Rounak Das (1):
EDAC/altera: Fix device node reference leaks in the SDMMC ECC setup
Ruide Cao (1):
wifi: mac80211: reject invalid 320 MHz CSA bandwidth
Runyu Xiao (5):
rtc: spear: initialize IRQ state before requesting alarm IRQ
USB: dwc2: shut down wakeup timer before freeing HCD state
mtd: rawnand: cadence: Initialize IRQ state before requesting IRQ
mtd: spi-nor: core: Fix mutex leak in spi_nor_rww_start_exclusive()
iio: admv1013: initialize callback mutex before registering notifier
Russell King (Oracle) (1):
net: stmmac: convert priv->sph* to boolean and rename
SJ Park (1):
mm/damon/core: don't skip damos_adjust_quota() while esz is not zero
Sagnik Sasmal (1):
mtd: spinand: Do not update the QE bit on devices without one
Sai Teja Aluvala (1):
Bluetooth: btintel: validate DDC record lengths
Salah Triki (5):
iio: accel: sca3000: fix frequency divider condition check
iio: frequency: admv1013: fix wrong channel field used in admv1013_read_raw()
iio: proximity: isl29501: Fix return type of isl29501_register_write
iio: proximity: vcnl3020: fix ISR bitmask check in IRQ handler
iio: adc: ad4030: fix invalid oversampling_ratio validation
Sandeep Haemoon (1):
net: ethernet: mtk_eth_soc: allocate dummy netdev sooner
Sang-Hoon Choi (1):
Bluetooth: hci_core: free the HCI ID if naming fails
Sean Christopherson (9):
KVM: nVMX: Force MSR bitmap refresh if runtime eVMCS controls are modified
KVM: SEV: Nullify "have run CPUs" mask pointer when freeing it
KVM: SEV: Do cache maintenance on the source VM *before* clearing SEV state
KVM: x86/mmu: Bail from shadow walks if the root is invalid or a dummy
KVM: x86: Move IRQ-related helper declarations from kvm_host.h => irq.h
KVM: SVM: Use the active VMCB's MSR bitmap when checking if MSR is intercepted
KVM: x86: Reject nested CAP enablement if nested virtualization is disabled
KVM: x86: Add static calls for nested virtualization ops
KVM: x86: Re-pend GET_NESTED_STATE_PAGES if getting said pages fails
Sebastian Sjoholm (1):
USB: serial: option: add Quectel RG660QB
SeongJae Park (1):
mm/damon/core: do non-safe region walk on kdamond_apply_schemes()
Sheetal (1):
ASoC: tegra: Fix ASRC Stream6 input threshold control
Shyam Prasad N (1):
cifs: on replayable errors back-off before replay, not after
Simon Gassner (1):
serial: tegra: don't clear the Tx FIFO on an Rx-only reset
Slavin Liu (1):
iio: adc: pac1934: check ACPI label duplication
Stanislaw Gruszka (1):
wifi: cfg80211: fix RTS threshold setting for single-radio PHY
Surendran Kanagaraj (1):
tpm: Disable TPM on null key name mismatch
Sven Peter (5):
thunderbolt: Hold a router reference for each allocated HopID
thunderbolt: Mark discovered tunnels as active
thunderbolt: Tear down inactive DP tunnels when the domain is stopped
thunderbolt: Fix domain reference leak when DPRX read is canceled
thunderbolt: Don't access a DP tunnel after its DPRX read was canceled
Syed Labeeq Sajid Bukhari (1):
usb: storage: sierra_ms: reject short SWoC info transfers
Takashi Iwai (4):
ALSA: usb-audio: Apply IGNORE_CTL_ERROR quirk to all Audient devices
ALSA: core: Define auto-cleanup for snd_card_free()
ALSA: ice1712: Fix the error handling via auto-cleanup at probe
usb: gadget: midi2: Fix the jack descriptor array sizes
Tamizh Chelvam Raja (3):
wifi: mac80211: Add multicast to unicast support for 802.3 path
wifi: mac80211: Add 802.3 multicast encapsulation offload support
wifi: mac80211: Add sta pointer sanity check in ieee80211_8023_xmit()
Theo Andersen Carton (1):
drm/amdgpu: skip the noirq suspend reset for a switcheroo-parked GPU
Tianchu Chen (1):
wifi: cw1200: fix TX padding OOB read leaking heap data to device
Tibor Harcsa (1):
Bluetooth: btusb: Add IMC Networks QCA9377 to quirks table
Timur Kristóf (4):
drm/amd/pm/si: Check AMD_IS_MOBILITY flag for PPSMC_SYSTEMFLAG_GPIO_DC drm/amd/pm/si: Fix updating clock limits on AC/DC drm/amd/display: Mark DCE 6.4 as not APU
drm/amd/display: Fix fast updates on DCE 8.1
Tomer Pomeranc (2):
binder: fix is_failure flag for superseded transaction cleanup
binder: fix leaked fd fixups on TF_UPDATE_TXN supersede
Viken Dadhaniya (2):
soc: qcom: geni-se: Correct QUP Core ICC vote constants
tty: serial: qcom_geni_serial: Keep console RX functional after deep idle
Vineet Gupta (1):
ARC: arch_cmpxchg_relaxed to use size of pointed type not pointer
Vitaly Kuznetsov (1):
virt: vmgenid: remap memory as decrypted
Vladyslav Ivashchenko (1):
iio: adc: axp288: Add TS bias override for Haier HV103H
Weiming Shi (1):
nvmet-auth: fix out-of-bounds write in nvmet_auth_challenge()
Wentao Liang (6):
of/irq: Fix remaining refcount leaks in of_irq_init()
wifi: wlcore: Fix runtime PM leak in wlcore_remove() drm/mediatek: Fix pdev reference leak in mtk_drm_bind()
kgdboc: Fix tty driver reference leak in configure_kgdboc()
serial: ma35d1: Fix clock reference leak in ma35d1serial_probe()
serial: vt8500: Fix clock reference leak in vt8500_serial_probe()
Willem de Bruijn (1):
net: extend IPv6 exthdr detection of tunneled packets
Willian Oliveira (1):
drm/amdgpu/gfx6: fix firmware leak on teardown
Xiang Mei (2):
ALSA: line6: reject oversized playback packets
ALSA: ua101: reject mismatched capture/playback packet sizes
Xuanqiang Luo (1):
pfcp: fix socket lifetime on netdevice registration failure
Yang Xiuwei (1):
block: reject polled dio with user integrity metadata
Yi Yang (1):
vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF
Yongzhao Chen (1):
net: phy: qcom: at803x: Fix IPQ5018 short-cable DAC values
Yoshihisa Yamamoto (1):
net: pcs: rzn1-miic: Clear MIIC protection state before unprotect sequence
Yu Kuai (1):
blk-mq: factor out a helper blk_mq_limit_depth()
Yu-Hsiang Tseng (1):
ALSA: hda/realtek: Fix silent speaker on Higole F9B
Yuchao Zhang (3):
wifi: mac80211: drop oversized fragments to avoid extra_len overflow
USB: cdc-acm: skip URB restart in port_shutdown if disconnected
usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC
Yuho Choi (1):
of: Put coreboot node after compatibility check
Yuqi Xu (2):
wifi: mac80211: minstrel_ht: validate fixed rate index
wifi: mac80211: handle empty FILS association request payload
Yuxiao Wang (1):
nitro_enclaves: fix use-after-free on SLOT_ALLOC failure
Zhang Heng (1):
ALSA: hda/realtek: Fix square wave output on ASUS Strix G615LR
Zhang Jie (1):
iio: proximity: sx9324: Correct proximity channel resolution
Zhao Dongdong (1):
USB: serial: option: add support for SIMCom SIM8260C
Zhao Li (6):
wifi: cfg80211: preserve hidden-group beacon IE ownership
wifi: mac80211: shut down RX BA session timer on teardown
wifi: mac80211: drain PS delivery work during station teardown
wifi: mac80211: account proxy paths against the mesh path limit
wifi: mac80211: keep fallback association elements alive
wifi: mac80211: release mesh path quota on failed additions
Zhengchuan Liang (1):
perf: Require kernel access for text poke events
Zhichen Wang (1):
virt: vmgenid: set driver_data before registering notification handlers
Zhiling Zou (3):
ipvs: bound LBLCR and LBLC cache growth
wifi: mac80211: keep paired old chanctx alive
wifi: mac80211: count only matching reservations in reserved switch
Zihan Xi (3):
smb: client: close handle after create-context parsing failure
smb: client: close completed creates on compound wait errors
wifi: mac80211: fix mesh fast xmit path deletion UAF
Zimeng Li (1):
ASoC: qcom: lpass-cpu: use DAI table index for playback constraints
Zizhi Wo (1):
vt: skip screen update for DEC alignment test on backgroup consoles
lollipopkit (1):
io_uring/cmd_net: end TX_TIMESTAMP multishot when the CQ is full
Greg Kroah-Hartman
maintainerDocumentation/arch/arm64/silicon-errata.rst +2 -0
@@ -168,6 +168,8 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A725 | #3821522 | ARM64_ERRATUM_3821522 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-X1 | #1502854 | N/A | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-X1 | #3324344 | ARM64_ERRATUM_3194386 |
Documentation/filesystems/netfs_library.rst +26 -0
@@ -451,6 +451,32 @@ one. The inode should be marked ``NETFS_ICTX_SINGLE_NO_UPLOAD`` if this API is to be used. The writeback function requires the buffer to be of ITER_FOLIOQ type. +Clearing Stale Post-EOF Pagecache +--------------------------------- + +When a file is extended, data left in the pagecache past the old EOF by a write +through an mmap must not be exposed as file content. Netfslib clears this on +its own write paths, and exports a helper so a filesystem can do the same from +a resize path (truncate, setattr, fallocate and the like) that holds the +inode's ``i_rwsem`` exclusively across the whole resize:: + + void netfs_clear_stale_post_isize(struct inode *inode, unsigned long long from, + unsigned long long to); + +This zeroes any such data within the ``[from, to)`` hole to be made, where +@from is the old EOF and @to is the new one, and the caller must have already +updated ``i_size`` to @to before calling it. Only the folio straddling @from +can hold data written past the EOF through an mmap, as pages wholly beyond the +EOF can't be faulted in, so the zeroing is limited to that folio. The folio is +zeroed rather than dropped so that a concurrent extending write can't lose +data. + +This overlaps with ``pagecache_isize_extended()`` but can't reuse it: that +helper is keyed on a sub-page block size and is a no-op when the block size is +``>= PAGE_SIZE`` (as on network filesystems), and it doesn't wait for +writeback. As both address the same problem, a change to one should probably +be reflected in the other to keep them in sync. + High-Level VM API ==================
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 55 +SUBLEVEL = 56 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arc/include/asm/atomic64-arcv2.h +6 -0
@@ -156,6 +156,12 @@ static inline u64 __arch_cmpxchg64_relaxed(volatile void *ptr, u64 old, u64 new) }#define arch_cmpxchg64_relaxed __arch_cmpxchg64_relaxed +static inline s64 arch_atomic64_cmpxchg_relaxed (atomic64_t *v,s64 old,s64 new) +{ +return arch_cmpxchg64_relaxed (&v->counter, old, new); +} +#define arch_atomic64_cmpxchg_relaxed arch_atomic64_cmpxchg_relaxed +static inline s64 arch_atomic64_xchg (atomic64_t *ptr,s64 new) {s64 prev;
arch/arc/include/asm/cmpxchg.h +2 -2
@@ -46,7 +46,7 @@ __typeof__(*(ptr)) _n_ = (new); \ __typeof__(*(ptr)) _prev_; \ \ -switch (sizeof ((_p_))) { \ +switch (sizeof (*(_p_))) { \case 1 : \ _prev_ = (__typeof__(*(ptr)))cmpxchg_emu_u8((volatile u8 *__force)_p_, (uintptr_t)_o_, (uintptr_t)_n_); \break ; \
@@ -102,7 +102,7 @@__typeof__ (ptr) _p_ = (ptr); \ __typeof__(*(ptr)) _val_ = (val); \ \ -switch (sizeof (*(_p_))) { \ +switch (sizeof (*(_p_))) { \case 4 : \ _val_ =__arch_xchg (_p_, _val_); \break ; \
arch/arm64/Kconfig +30 -0
@@ -1049,9 +1049,17 @@ config ARM64_ERRATUM_1902691 If unsure, say Y. +config ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT + bool + # Targeting errata affecting AMEVCNTR01, the AMU constant counter. + # On affected CPUs the counter may not increment at the expected rate, + # making it unreliable. As a result, AMU users should treat it as + # unavailable rather than relying on misleading counter values. + config ARM64_ERRATUM_2457168 bool "Cortex-A510: 2457168: workaround for AMEVCNTR01 incrementing incorrectly" depends on ARM64_AMU_EXTN + select ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT default y help This option adds the workaround for ARM Cortex-A510 erratum 2457168.
@@ -1082,6 +1090,28 @@ config ARM64_ERRATUM_2645198 If unsure, say Y. +config ARM64_ERRATUM_3821522 + bool "Cortex-A725: 3821522: workaround for possible CNT_CYCLES increment error due to WFE/WFI" + depends on ARM64_AMU_EXTN + select ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT + default y + help + This option adds the workaround for ARM Cortex-A725 erratum 3821522. + + On affected A725 cores, the CNT_CYCLES event may incur a significant + increment error when entering and subsequently exiting WFx. + As a result, the CNT_CYCLES may diverge from the system counter + frequency at which it is expected to increment. + This renders the AMU counter AMEVCNTR01, that implements CNT_CYCLES, + being unreliable and unsuitable for use. + + Since there is no hardware workaround, reads of the affected CNT_CYCLES + counter return 0 in the relevant paths. This causes users of the counter + to treat it as unavailable and is functionally equivalent to firmware + disabling the affected counter. + + If unsure, say Y. + config ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD bool
arch/arm64/include/asm/kvm_host.h +1 -1
@@ -307,7 +307,7 @@ struct kvm_arch {* Stage 2 paging state for VMs with nested S2 using a virtual * VMID. */ -struct kvm_s2_mmu *nested_mmus; +struct kvm_s2_mmu **nested_mmus;size_t nested_mmus_size;int nested_mmus_next;
arch/arm64/include/asm/kvm_nested.h +2 -1
@@ -65,7 +65,8 @@ static inline u64 translate_ttbr0_el2_to_ttbr0_el1(u64 ttbr0)extern bool forward_smc_trap (struct kvm_vcpu *vcpu);extern bool forward_debug_exception (struct kvm_vcpu *vcpu); -extern void kvm_init_nested (struct kvm *kvm); +extern int kvm_init_nested (struct kvm *kvm); +extern void kvm_destroy_nested (struct kvm *kvm);extern int kvm_vcpu_init_nested (struct kvm_vcpu *vcpu);extern void kvm_init_nested_s2_mmu (struct kvm_s2_mmu *mmu);extern struct kvm_s2_mmu *lookup_s2_mmu (struct kvm_vcpu *vcpu);
arch/arm64/kernel/cpu_errata.c +18 -6
@@ -353,6 +353,20 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = { };#endif +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT +static const struct midr_range workaround_amu_constcnt_list[] = { +#ifdef CONFIG_ARM64_ERRATUM_2457168 +/* Cortex-A510 r0p0-r1p1 */ +MIDR_RANGE (MIDR_CORTEX_A510 ,0 ,0 ,1 ,1 ), +#endif +#ifdef CONFIG_ARM64_ERRATUM_3821522 +/* Cortex-A725 r0p0 - r0p2 */ +MIDR_RANGE (MIDR_CORTEX_A725 ,0 ,0 ,0 ,2 ), +#endif + {} +}; +#endif /* CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT */ +#ifdef CONFIG_CAVIUM_ERRATUM_23154 static const struct midr_range cavium_erratum_23154_cpus[] = { MIDR_ALL_VERSIONS(MIDR_THUNDERX),
@@ -869,14 +883,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = { ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2) },#endif -#ifdef CONFIG_ARM64_ERRATUM_2457168 +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT { - .desc = "ARM erratum 2457168", - .capability = ARM64_WORKAROUND_2457168, + .desc = "Broken AMU AMEVCNTR01 (const counter)", + .capability = ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT, .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE, - - /* Cortex-A510 r0p0-r1p1 */ - CAP_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1) + CAP_MIDR_RANGE_LIST(workaround_amu_constcnt_list) }, #endif #ifdef CONFIG_ARM64_ERRATUM_2038923
arch/arm64/kernel/cpufeature.c +1 -1
@@ -2054,7 +2054,7 @@ static void cpu_amu_enable(struct arm64_cpu_capabilities const *cap)cpumask_set_cpu (smp_processor_id (), &amu_cpus);/* 0 reference values signal broken/disabled counters */ -if (!this_cpu_has_cap (ARM64_WORKAROUND_2457168 )) +if (!this_cpu_has_cap (ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT ))update_freq_counters_refs (); } }
arch/arm64/kernel/signal.c +20 -14
@@ -433,6 +433,7 @@ static int restore_sve_fpsimd_context(struct user_ctxs *user)unsigned int vl, vq;struct user_fpsimd_state fpsimd;u16 user_vl, flags; +bool fpsimd_only;bool sm;if (user->sve_size <sizeof (*user->sve))
@@ -443,19 +444,33 @@ static int restore_sve_fpsimd_context(struct user_ctxs *user)if (err)return err; + fpsimd_only = (user->sve_size ==sizeof (*user->sve)); sm = flags &SVE_SIG_FLAG_SM ; +if (sm) {if (!system_supports_sme ())return -EINVAL ; +/* +* Streaming SVE state is always preserved with an SVE payload. +* Only accept streaming state which has an SVE payload. +*/ +if (fpsimd_only) +return -EINVAL ; + vl =task_get_sme_vl (current); }else {/* -* A SME only system use SVE for streaming mode so can -* have a SVE formatted context with a zero VL and no -* payload data. +* Non-streaming SVE state may be preserved without an SVE +* payload, in which case all state is saved in the FPSIMD +* context. +* +* On SME-only systems, non-streaming (FPSIMD-only) state is +* always preserved without an SVE payload, and with VL==0. On +* such systems, only accept non-streaming state without an SVE +* payload. */ -if (!system_supports_sve () && !system_supports_sme ()) +if (!system_supports_sve () && !fpsimd_only)return -EINVAL ; vl =task_get_sve_vl (current);
@@ -464,16 +479,7 @@ static int restore_sve_fpsimd_context(struct user_ctxs *user)if (user_vl != vl)return -EINVAL ; -/* -* Non-streaming SVE state may be preserved without an SVE payload, in -* which case the SVE context only has a header with VL==0, and all -* state can be restored from the FPSIMD context. -* -* Streaming SVE state is always preserved with an SVE payload. For -* consistency and robustness, reject restoring streaming SVE state -* without an SVE payload. -*/ -if (!sm && user->sve_size ==sizeof (*user->sve)) +if (fpsimd_only)return restore_fpsimd_context (user); vq =sve_vq_from_vl (vl);
arch/arm64/kernel/topology.c +8 -9
@@ -287,7 +287,6 @@ int arch_freq_get_on_cpu(int cpu)struct amu_cntr_sample *amu_sample;unsigned int start_cpu = cpu;unsigned long last_update; -unsigned int freq =0 ;u64 scale;if (!amu_fie_cpu_supported (cpu) || !arch_scale_freq_ref (cpu))
@@ -346,9 +345,8 @@ int arch_freq_get_on_cpu(int cpu)* (see amu_scale_freq_tick for details) */ scale =arch_scale_freq_capacity (cpu); - freq = scale *arch_scale_freq_ref (cpu); - freq >>=SCHED_CAPACITY_SHIFT ; -return freq; + +return (scale *arch_scale_freq_ref (cpu)) >>SCHED_CAPACITY_SHIFT ; }static void amu_fie_setup (const struct cpumask *cpus)
@@ -428,12 +426,13 @@ static void cpu_read_corecnt(void *val)static void cpu_read_constcnt (void *val) {/* -* Return 0 if the current CPU is affected by erratum 2457168. A value -* of 0 is also returned if the current CPU does not support AMUs or if -* the counter is disabled. A return value of 0 at counter read is -* properly handled as an error case by the users of the counter. +* Return 0 if the current CPU is affected by a HW erratum. +* A value of 0 is also returned if the current CPU does not +* support AMUs or if the counter is disabled. A return +* value of 0 at counter read is properly handled as an error +* case by the users of the counter. */ - *(u64 *)val =this_cpu_has_cap (ARM64_WORKAROUND_2457168 ) ? + *(u64 *)val =this_cpu_has_cap (ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT ) ?0UL :read_constcnt (); }
arch/arm64/kernel/vdso/Makefile +1 -1
@@ -41,7 +41,7 @@ CC_FLAGS_REMOVE_VDSO := $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \ $(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \ -Wmissing-prototypes -Wmissing-declarations -CC_FLAGS_ADD_VDSO := -O2 -mcmodel=tiny -fasynchronous-unwind-tables +CC_FLAGS_ADD_VDSO := -O2 -mcmodel=tiny -fasynchronous-unwind-tables $(CONFIG_CC_OPT_INLINE_MEMSET) CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_REMOVE_VDSO) CFLAGS_REMOVE_vgetrandom.o = $(CC_FLAGS_REMOVE_VDSO)
arch/arm64/kvm/arm.c +9 -3
@@ -176,8 +176,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)mutex_unlock (&kvm->lock);#endif -kvm_init_nested (kvm); - ret =kvm_share_hyp (kvm, kvm +1 );if (ret)return ret;
@@ -192,6 +190,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)if (ret) goto err_free_cpumask; + ret =kvm_init_nested (kvm); +if (ret) + goto err_uninit_mmu; +if (is_protected_kvm_enabled ()) {/* * If any failures occur after this is successful, make sure to
@@ -199,7 +201,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)*/ ret =pkvm_init_host_vm (kvm);if (ret) - goto err_free_cpumask; + goto err_uninit_mmu; }kvm_vgic_early_init (kvm);
@@ -215,6 +217,9 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)return 0 ; +err_uninit_mmu: +kvm_uninit_stage2_mmu (kvm); +kvm_destroy_nested (kvm); err_free_cpumask:free_cpumask_var (kvm->arch.supported_cpus); err_unshare_kvm:
@@ -271,6 +276,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)kvm_unshare_hyp (kvm, kvm +1 ); +kvm_destroy_nested (kvm);kvm_arm_teardown_hypercalls (kvm); }
arch/arm64/kvm/emulate-nested.c +6 -9
@@ -2269,9 +2269,6 @@ int __init populate_nv_trap_config(void)kvm_info ("nv: %ld coarse grained trap handlers\n" ,ARRAY_SIZE (encoding_to_cgt)); -if (!cpus_have_final_cap (ARM64_HAS_FGT )) - goto check_mcb; -for (int i =0 ; i <ARRAY_SIZE (encoding_to_fgt); i++) {const struct encoding_to_trap_config *fgt = &encoding_to_fgt[i];union trap_config tc;
@@ -2291,6 +2288,12 @@ int __init populate_nv_trap_config(void) } tc.val |= fgt->tc.val; + +if (!aggregate_fgt (tc)) { + ret = -EINVAL ; +print_nv_trap_error (fgt,"FGT bit is reserved" , ret); + } + prev =xa_store (&sr_forward_xa, enc,xa_mk_value (tc.val),GFP_KERNEL );
@@ -2298,11 +2301,6 @@ int __init populate_nv_trap_config(void) ret =xa_err (prev);print_nv_trap_error (fgt,"Failed FGT insertion" , ret); } - -if (!aggregate_fgt (tc)) { - ret = -EINVAL ; -print_nv_trap_error (fgt,"FGT bit is reserved" , ret); - } } }
@@ -2318,7 +2316,6 @@ int __init populate_nv_trap_config(void)kvm_info ("nv: %ld fine grained trap handlers\n" ,ARRAY_SIZE (encoding_to_fgt)); -check_mcb:for (int id = __MULTIPLE_CONTROL_BITS__; id < __COMPLEX_CONDITIONS__; id++) {const enum cgt_group_id *cgids;
arch/arm64/kvm/hyp/nvhe/pkvm.c +9 -0
@@ -52,6 +52,15 @@ static void pkvm_vcpu_reset_hcr(struct kvm_vcpu *vcpu)else vcpu->arch.hcr_el2 |=HCR_TID2 ; +/* +* Without AArch32 EL1, leave RW set and let the entry fail with an +* illegal exception return: the *32_EL2 registers EL2 would otherwise +* switch are UNDEFINED there. +*/ +if (vcpu_has_feature (vcpu,KVM_ARM_VCPU_EL1_32BIT ) && +cpus_have_final_cap (ARM64_HAS_32BIT_EL1 )) + vcpu->arch.hcr_el2 &= ~HCR_EL2_RW ; +if (vcpu_has_ptrauth (vcpu)) vcpu->arch.hcr_el2 |= (HCR_API |HCR_APK );
arch/arm64/kvm/mmu.c +6 -40
80 lines not on this page · raw message
arch/arm64/kvm/nested.c +47 -49
175 lines not on this page · raw message
arch/arm64/kvm/vgic/vgic-its.c +8 -4
@@ -310,12 +310,16 @@ static int update_lpi_config(struct kvm *kvm, struct vgic_irq *irq,return ret; } -static int update_affinity (struct vgic_irq *irq,struct kvm_vcpu *vcpu) +static int update_affinity (struct vgic_irq *irq, +struct kvm_vcpu *from_vcpu,struct kvm_vcpu *vcpu) {struct its_vlpi_map map;int ret;guard (raw_spinlock_irqsave)(&irq->irq_lock); +if (from_vcpu && irq->target_vcpu != from_vcpu) +return 0 ; + irq->target_vcpu = vcpu;if (!irq->hw)
@@ -353,7 +357,7 @@ static void update_affinity_ite(struct kvm *kvm, struct its_ite *ite)return ; vcpu =collection_to_vcpu (kvm, ite->collection); -update_affinity (ite->irq, vcpu); +update_affinity (ite->irq,NULL , vcpu); }/*
@@ -846,7 +850,7 @@ static int vgic_its_cmd_handle_movi(struct kvm *kvm, struct vgic_its *its,vgic_its_invalidate_cache (its); -return update_affinity (ite->irq, vcpu); +return update_affinity (ite->irq,NULL , vcpu); }static bool __is_visible_gfn_locked (struct vgic_its *its,gpa_t gpa)
@@ -1373,7 +1377,7 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,if (!irq)continue ; -update_affinity (irq, vcpu2); +update_affinity (irq, vcpu1, vcpu2);vgic_put_irq (kvm, irq); }
arch/arm64/mm/mmu.c +1 -1
@@ -2150,7 +2150,7 @@ pte_t modify_prot_start_ptes(struct vm_area_struct *vma, unsigned long addr,* in cases where cpu is affected with errata #2645198. */ if (pte_accessible (vma->vm_mm, pte) &&pte_user_exec (pte)) -__flush_tlb_range (vma, addr, nr *PAGE_SIZE , +__flush_tlb_range (vma, addr, addr + nr *PAGE_SIZE ,PAGE_SIZE , true,3 ); }
arch/arm64/tools/cpucaps +1 -1
@@ -98,7 +98,6 @@ WORKAROUND_1902691 WORKAROUND_2038923 WORKAROUND_2064142 WORKAROUND_2077057 -WORKAROUND_2457168 WORKAROUND_2645198 WORKAROUND_2658417 WORKAROUND_4193714
@@ -122,3 +121,4 @@ WORKAROUND_REPEAT_TLBI WORKAROUND_SPECULATIVE_AT WORKAROUND_SPECULATIVE_SSBS WORKAROUND_SPECULATIVE_UNPRIV_LOAD +WORKAROUND_BROKEN_AMU_CONSTCNT
arch/loongarch/vdso/Makefile +1 -0
@@ -13,6 +13,7 @@ ccflags-vdso := \ $(filter -E%,$(KBUILD_CFLAGS)) \ $(filter -march=%,$(KBUILD_CFLAGS)) \ $(filter -m%-float,$(KBUILD_CFLAGS)) \ + $(CONFIG_CC_OPT_INLINE_MEMSET) \ $(CLANG_FLAGS) \ -D__VDSO__
arch/powerpc/kernel/vdso/Makefile +1 -0
@@ -43,6 +43,7 @@ ccflags-y := -fno-common -fno-builtin -DBUILD_VDSO ccflags-y += $(DISABLE_LATENT_ENTROPY_PLUGIN) ccflags-y += $(call cc-option, -fno-stack-protector) ccflags-y += -DDISABLE_BRANCH_PROFILING +ccflags-y += $(CONFIG_CC_OPT_INLINE_MEMSET) ccflags-y += -ffreestanding -fasynchronous-unwind-tables ccflags-remove-y := $(CC_FLAGS_FTRACE) ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack $(CLANG_FLAGS)
arch/powerpc/perf/imc-pmu.c +12 -11
@@ -1280,6 +1280,8 @@ static int trace_imc_prepare_sample(struct trace_imc_data *mem,struct perf_event_header *header, struct perf_event *event) { + u16 misc = 0; +/* Sanity checks for a valid record */ if (be64_to_cpu (READ_ONCE (mem->tb1)) > *prev_tb) *prev_tb =be64_to_cpu (READ_ONCE (mem->tb1));
@@ -1294,23 +1296,19 @@ static int trace_imc_prepare_sample(struct trace_imc_data *mem, data->ip =be64_to_cpu (READ_ONCE (mem->ip)); data->period = event->hw.last_period; - header->type =PERF_RECORD_SAMPLE ; - header->size =sizeof (*header) + event->header_size; - header->misc =0 ; -if (cpu_has_feature (CPU_FTR_ARCH_31 )) {switch (IMC_TRACE_RECORD_VAL_HVPR (be64_to_cpu (READ_ONCE (mem->val)))) {case 0 :/* when MSR HV and PR not set in the trace-record */ - header->misc |=PERF_RECORD_MISC_GUEST_KERNEL ; + misc |=PERF_RECORD_MISC_GUEST_KERNEL ;break ;case 1 :/* MSR HV is 0 and PR is 1 */ - header->misc |=PERF_RECORD_MISC_GUEST_USER ; + misc |=PERF_RECORD_MISC_GUEST_USER ;break ;case 2 :/* MSR HV is 1 and PR is 0 */ - header->misc |=PERF_RECORD_MISC_KERNEL ; + misc |=PERF_RECORD_MISC_KERNEL ;break ;case 3 :/* MSR HV is 1 and PR is 1 */ - header->misc |=PERF_RECORD_MISC_USER ; + misc |=PERF_RECORD_MISC_USER ;break ;default :pr_info ("IMC: Unable to set the flag based on MSR bits\n" );
@@ -1318,11 +1316,14 @@ static int trace_imc_prepare_sample(struct trace_imc_data *mem, } }else {if (is_kernel_addr (data->ip)) - header->misc |=PERF_RECORD_MISC_KERNEL ; + misc |=PERF_RECORD_MISC_KERNEL ;else - header->misc |=PERF_RECORD_MISC_USER ; + misc |=PERF_RECORD_MISC_USER ; } -perf_event_header__init_id (header, data, event); +perf_event_header__init (header, data, +PERF_RECORD_SAMPLE , misc, +sizeof (*header) + event->header_size, + event);return 0 ; }
arch/riscv/kernel/vdso/Makefile +1 -0
@@ -27,6 +27,7 @@ endif ccflags-y := -fno-stack-protector ccflags-y += -DDISABLE_BRANCH_PROFILING ccflags-y += -fno-builtin +ccflags-y += $(CONFIG_CC_OPT_INLINE_MEMSET) ifneq ($(c-gettimeofday-y),) CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)
arch/riscv/kvm/aia_imsic.c +4 -1
@@ -1002,8 +1002,11 @@ int kvm_riscv_aia_imsic_has_attr(struct kvm *kvm, unsigned long type)if (!vcpu)return -ENODEV ; - isel =KVM_DEV_RISCV_AIA_IMSIC_GET_ISEL (type); imsic = vcpu->arch.aia_context.imsic_state; +if (!imsic) +return -ENODEV ; + + isel =KVM_DEV_RISCV_AIA_IMSIC_GET_ISEL (type);return imsic_mrif_isel_check (imsic->nr_eix, isel); }
arch/s390/kernel/vdso64/Makefile +1 -0
@@ -32,6 +32,7 @@ KBUILD_CFLAGS_64 := $(filter-out -mno-pic-data-is-text-relative,$(KBUILD_CFLAGS_ KBUILD_CFLAGS_64 := $(filter-out -munaligned-symbols,$(KBUILD_CFLAGS_64)) KBUILD_CFLAGS_64 := $(filter-out -fno-asynchronous-unwind-tables,$(KBUILD_CFLAGS_64)) KBUILD_CFLAGS_64 += -m64 -fPIC -fno-common -fno-builtin -fasynchronous-unwind-tables +KBUILD_CFLAGS_64 += $(CONFIG_CC_OPT_INLINE_MEMSET) ldflags-y := -shared -soname=linux-vdso64.so.1 \ --hash-style=both --build-id=sha1 -T
arch/x86/crypto/aesni-intel_glue.c +1 -1
@@ -1286,6 +1286,7 @@ static void gcm_process_assoc(const struct aes_gcm_key *key, u8 ghash_acc[16],unsigned int len;const u8 *src = walk.addr; + assoclen -= orig_len_this_step;if (unlikely (pos)) { len =min (len_this_step,16 - pos);memcpy (&buf[pos], src, len);
@@ -1313,7 +1314,6 @@ static void gcm_process_assoc(const struct aes_gcm_key *key, u8 ghash_acc[16],kernel_fpu_end ();kernel_fpu_begin (); } - assoclen -= orig_len_this_step; }if (unlikely (pos))aes_gcm_aad_update (key, ghash_acc, buf, pos, flags);
arch/x86/entry/vdso/Makefile +1 -0
@@ -54,6 +54,7 @@ $(obj)/vdso-image-%.c: $(obj)/vdso%.so.dbg $(obj)/vdso%.so $(obj)/vdso2c FORCE CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \ $(filter -g%,$(KBUILD_CFLAGS)) -fno-stack-protector \ -fno-omit-frame-pointer -foptimize-sibling-calls \ + $(CONFIG_CC_OPT_INLINE_MEMSET) \ -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO ifdef CONFIG_MITIGATION_RETPOLINE
arch/x86/include/asm/kvm-x86-nested-ops.h new file +35 -0
@@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#if !defined(KVM_X86_NESTED_OP ) || \ + !defined(KVM_X86_NESTED_OP_OPTIONAL ) || \ + !defined(KVM_X86_NESTED_OP_OPTIONAL_RET0 ) +#error Missing one or more KVM_X86_NESTED_OP #defines +#else +/* +* KVM_X86_NESTED_OP() and KVM_X86_NESTED_OP_OPTIONAL() are used to help +* generate both DECLARE/DEFINE_STATIC_CALL() invocations and +* "static_call_update()" calls. +* +* KVM_X86_NESTED_OP_OPTIONAL() can be used for those functions that can have +* a NULL definition. KVM_X86_NESTED_OP_OPTIONAL_RET0() can be used likewise +* to make a definition optional, but in this case the default will +* be __static_call_return0. +*/ +KVM_X86_NESTED_OP(leave_nested) +KVM_X86_NESTED_OP(is_exception_vmexit) +KVM_X86_NESTED_OP(check_events) +KVM_X86_NESTED_OP_OPTIONAL_RET0(has_events) +KVM_X86_NESTED_OP(triple_fault) +KVM_X86_NESTED_OP(get_state) +KVM_X86_NESTED_OP(set_state) +KVM_X86_NESTED_OP(get_nested_state_pages) +KVM_X86_NESTED_OP_OPTIONAL_RET0(write_log_dirty) +#ifdef CONFIG_KVM_HYPERV +KVM_X86_NESTED_OP_OPTIONAL(enable_evmcs) +KVM_X86_NESTED_OP_OPTIONAL_RET0(get_evmcs_version) +KVM_X86_NESTED_OP(hv_inject_synthetic_vmexit_post_tlb_flush) +#endif +#endif + +#undef KVM_X86_NESTED_OP +#undef KVM_X86_NESTED_OP_OPTIONAL +#undef KVM_X86_NESTED_OP_OPTIONAL_RET0
arch/x86/include/asm/kvm_host.h +10 -12
@@ -1954,6 +1954,8 @@ struct kvm_x86_ops { };struct kvm_x86_nested_ops { +bool enabled; +void (*leave_nested)(struct kvm_vcpu *vcpu);bool (*is_exception_vmexit)(struct kvm_vcpu *vcpu,u8 vector,u32 error_code);
@@ -2007,6 +2009,14 @@ extern struct kvm_x86_ops kvm_x86_ops;#define KVM_X86_OP_OPTIONAL_RET0 KVM_X86_OP#include <asm/kvm-x86-ops.h> +#define kvm_nested_call (func) static_call(kvm_x86_nested_##func) + +#define KVM_X86_NESTED_OP (func) \ + DECLARE_STATIC_CALL(kvm_x86_nested_##func, *(((struct kvm_x86_nested_ops *)0)->func)); +#define KVM_X86_NESTED_OP_OPTIONAL KVM_X86_NESTED_OP +#define KVM_X86_NESTED_OP_OPTIONAL_RET0 KVM_X86_NESTED_OP +#include <asm/kvm-x86-nested-ops.h> +int kvm_x86_vendor_init (struct kvm_x86_init_ops *ops);void kvm_x86_vendor_exit (void );
@@ -2350,13 +2360,6 @@ static inline void kvm_inject_gp(struct kvm_vcpu *vcpu, u32 error_code)kvm_queue_exception_e (vcpu,GP_VECTOR , error_code); } -#define TSS_IOPB_BASE_OFFSET 0x66 -#define TSS_BASE_SIZE 0x68 -#define TSS_IOPB_SIZE (65536 / 8) -#define TSS_REDIRECTION_SIZE (256 / 8) -#define RMODE_TSS_SIZE \ - (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1) -enum {TASK_SWITCH_CALL =0 ,TASK_SWITCH_IRET =1 ,
@@ -2379,12 +2382,7 @@ enum {# define kvm_memslots_for_spte_role (kvm, role) __kvm_memslots(kvm, 0)#endif -int kvm_cpu_has_injectable_intr (struct kvm_vcpu *v); -int kvm_cpu_has_interrupt (struct kvm_vcpu *vcpu); -int kvm_cpu_has_extint (struct kvm_vcpu *v);int kvm_arch_interrupt_allowed (struct kvm_vcpu *vcpu); -int kvm_cpu_get_extint (struct kvm_vcpu *v); -int kvm_cpu_get_interrupt (struct kvm_vcpu *v);void kvm_vcpu_reset (struct kvm_vcpu *vcpu,bool init_event); int kvm_pv_send_ipi(struct kvm *kvm, unsigned long ipi_bitmap_low,
arch/x86/kernel/sys_x86_64.c +11 -4
@@ -50,9 +50,16 @@ static unsigned long get_align_mask(struct file *filp)* value before calling vm_unmapped_area() or ORed directly to the * address. */ -static unsigned long get_align_bits (void ) +static unsigned long get_align_bits (struct file *filp) { -return va_align.bits &get_align_mask (NULL ); +/* +* va_align.bits is smaller than the huge page size and will +* lead to misaligned huge pages. Ignore it for huge mappings. +*/ +if (is_file_hugepages (filp)) +return 0 ; + +return va_align.bits &get_align_mask (filp); }static int __init control_va_addr_alignment (char *str)
@@ -157,7 +164,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, }if (filp) { info.align_mask =get_align_mask (filp); - info.align_offset +=get_align_bits (); + info.align_offset +=get_align_bits (filp); }return vm_unmapped_area (&info);
@@ -222,7 +229,7 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr0,if (filp) { info.align_mask =get_align_mask (filp); - info.align_offset +=get_align_bits (); + info.align_offset +=get_align_bits (filp); } addr =vm_unmapped_area (&info);if (!(addr & ~PAGE_MASK ))
arch/x86/kvm/hyperv.c +3 -3
@@ -2415,7 +2415,7 @@ static int kvm_hv_hypercall_complete(struct kvm_vcpu *vcpu, u64 result) ret =kvm_skip_emulated_instruction (vcpu);if (tlb_lock_count) - kvm_x86_ops.nested_ops->hv_inject_synthetic_vmexit_post_tlb_flush (vcpu); +kvm_nested_call (hv_inject_synthetic_vmexit_post_tlb_flush)(vcpu);return ret; }
@@ -2799,8 +2799,8 @@ int kvm_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, };int i, nent =ARRAY_SIZE (cpuid_entries); -if (kvm_x86_ops.nested_ops->get_evmcs_version) - evmcs_ver = kvm_x86_ops.nested_ops->get_evmcs_version (vcpu); +if (kvm_x86_ops.nested_ops->enabled) + evmcs_ver =kvm_nested_call (get_evmcs_version)(vcpu);if (cpuid->nent < nent)return -E2BIG ;
arch/x86/kvm/irq.h +6 -0
@@ -112,6 +112,12 @@ static inline int irqchip_in_kernel(struct kvm *kvm)return mode !=KVM_IRQCHIP_NONE ; } +int kvm_cpu_has_injectable_intr (struct kvm_vcpu *v); +int kvm_cpu_has_interrupt (struct kvm_vcpu *vcpu); +int kvm_cpu_has_extint (struct kvm_vcpu *v); +int kvm_cpu_get_extint (struct kvm_vcpu *v); +int kvm_cpu_get_interrupt (struct kvm_vcpu *v); +void kvm_inject_pending_timer_irqs (struct kvm_vcpu *vcpu);void kvm_inject_apic_timer_irqs (struct kvm_vcpu *vcpu);void kvm_apic_nmi_wd_deliver (struct kvm_vcpu *vcpu);
arch/x86/kvm/mmu/mmu.c +6 -0
@@ -2479,6 +2479,12 @@ static void shadow_walk_init_using_root(struct kvm_shadow_walk_iterator *iterato { iterator->addr = addr; iterator->shadow_addr = root; + +if (WARN_ON_ONCE (!VALID_PAGE (root)) ||kvm_mmu_is_dummy_root (root)) { + iterator->level =0 ; +return ; + } + iterator->level = vcpu->arch.mmu->root_role.level; if (iterator->level >= PT64_ROOT_4LEVEL &&
arch/x86/kvm/mmu/paging_tmpl.h +1 -1
@@ -222,7 +222,7 @@ static int FNAME(update_accessed_dirty_bits)(struct kvm_vcpu *vcpu, !(pte & PT_GUEST_DIRTY_MASK)) {trace_kvm_mmu_set_dirty_bit (table_gfn, index,sizeof (pte));#if PTTYPE ==PTTYPE_EPT -if (kvm_x86_ops.nested_ops->write_log_dirty (vcpu, addr)) +if (kvm_nested_call (write_log_dirty)(vcpu, addr))return -EINVAL ;#endif pte |=PT_GUEST_DIRTY_MASK ;
arch/x86/kvm/svm/nested.c +1 -0
@@ -23,6 +23,7 @@#include "kvm_emulate.h" #include "trace.h" +#include "irq.h" #include "mmu.h" #include "x86.h" #include "smm.h"
arch/x86/kvm/svm/sev.c +29 -17
97 lines not on this page · raw message
arch/x86/kvm/svm/svm.c +2 -11
@@ -654,17 +654,7 @@ static void clr_dr_intercepts(struct vcpu_svm *svm)static bool msr_write_intercepted (struct kvm_vcpu *vcpu,u32 msr) { -/* -* For non-nested case: -* If the L01 MSR bitmap does not intercept the MSR, then we need to -* save it. -* -* For nested case: -* If the L02 MSR bitmap does not intercept the MSR, then we need to -* save it. -*/ -void *msrpm =is_guest_mode (vcpu) ?to_svm (vcpu)->nested.msrpm : -to_svm (vcpu)->msrpm; +void *msrpm =__va (__sme_clr (to_svm (vcpu)->vmcb->control.msrpm_base_pa));return svm_test_msr_bitmap_write (msrpm, msr); }
@@ -5461,6 +5451,7 @@ static __init int svm_hardware_setup(void)if (r)return r; } + svm_nested_ops.enabled = nested;/* * KVM's MMU doesn't support using 2-level paging for itself, and thus
arch/x86/kvm/tss.h +7 -0
@@ -57,4 +57,11 @@ struct tss_segment_16 { u16 ldt; }; +#define TSS_IOPB_BASE_OFFSET 0x66 +#define TSS_BASE_SIZE 0x68 +#define TSS_IOPB_SIZE (65536 / 8) +#define TSS_REDIRECTION_SIZE (256 / 8) +#define RMODE_TSS_SIZE \ + (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1) +#endif
arch/x86/kvm/vmx/nested.c +7 -0
@@ -11,6 +11,7 @@#include "x86.h" #include "cpuid.h" #include "hyperv.h" +#include "irq.h" #include "mmu.h" #include "nested.h" #include "pmu.h"
@@ -1700,6 +1701,9 @@ static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx)static void copy_enlightened_to_vmcs12 (struct vcpu_vmx *vmx,u32 hv_clean_fields) {#ifdef CONFIG_KVM_HYPERV +const u64 runtime_controls =HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1 | +HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2 | +HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC ;struct vmcs12 *vmcs12 = vmx->nested.cached_vmcs12;struct hv_enlightened_vmcs *evmcs =nested_vmx_evmcs (vmx);struct kvm_vcpu_hv *hv_vcpu =to_hv_vcpu (&vmx->vcpu);
@@ -1708,6 +1712,9 @@ static void copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx, u32 hv_clean_fields vmcs12->tpr_threshold = evmcs->tpr_threshold; vmcs12->guest_rip = evmcs->guest_rip; +if ((hv_clean_fields & runtime_controls) != runtime_controls) + vmx->nested.force_msr_bitmap_recalc = true; +if (unlikely (!(hv_clean_fields &HV_VMX_ENLIGHTENED_CLEAN_FIELD_ENLIGHTENMENTSCONTROL ))) { hv_vcpu->nested.pa_page_gpa = evmcs->partition_assist_page;
arch/x86/kvm/vmx/vmx.c +2 -0
@@ -71,6 +71,7 @@#include "x86.h" #include "x86_ops.h" #include "smm.h" +#include "tss.h" #include "vmx_onhyperv.h" #include "posted_intr.h"
@@ -8641,6 +8642,7 @@ __init int vmx_hardware_setup(void)if (r)return r; } + vmx_nested_ops.enabled = nested; r =alloc_kvm_area ();if (r && nested)
arch/x86/kvm/x86.c +40 -23
169 lines not on this page · raw message
arch/x86/kvm/x86.h +1 -1
@@ -165,7 +165,7 @@ int kvm_check_nested_events(struct kvm_vcpu *vcpu);/* Forcibly leave the nested mode in cases like a vCPU reset */ static inline void kvm_leave_nested (struct kvm_vcpu *vcpu) { - kvm_x86_ops.nested_ops->leave_nested (vcpu); +kvm_nested_call (leave_nested)(vcpu); }/*
arch/x86/mm/pgtable.c +14 -24
@@ -716,47 +716,37 @@ int pmd_clear_huge(pmd_t *pmd) }#ifdef CONFIG_X86_64 -/** -* pud_free_pmd_page - Clear PUD entry and free PMD page -* @pud: Pointer to a PUD -* @addr: Virtual address associated with PUD -* -* Context: The PUD range has been unmapped and TLB purged. -* Return: 1 if clearing the entry succeeded. 0 otherwise. -* -* NOTE: Callers must allow a single page allocation. +/* +* Given a PUD poitner, detach and free the pointed-to +* PMD page and any PTE page children. The entire range +* under the PUD must not have any valid translations +* and the TLB must have already been flushed. */ int pud_free_pmd_page (pud_t *pud,unsigned long addr) { -pmd_t *pmd, *pmd_sv;struct ptdesc *pt; +pmd_t *pmd;int i; pmd =pud_pgtable (*pud); - pmd_sv = (pmd_t *)__get_free_page (GFP_KERNEL ); -if (!pmd_sv) -return 0 ; - -for (i =0 ; i <PTRS_PER_PMD ; i++) { - pmd_sv[i] = pmd[i]; -if (!pmd_none (pmd[i])) -pmd_clear (&pmd[i]); - } +/* Detach the PMD page: */ pud_clear (pud); -/* INVLPG to clear all paging-structure caches */ +/* +* PMD and all its descendents are unreachable +* via normal page walks. Make them unreachable +* in cached mid-level walks too: +*/ flush_tlb_kernel_range (addr, addr +PAGE_SIZE -1 );for (i =0 ; i <PTRS_PER_PMD ; i++) { -if (!pmd_none (pmd_sv[i])) { - pt =page_ptdesc (pmd_page (pmd_sv[i])); +if (!pmd_none (pmd[i])) { + pt =page_ptdesc (pmd_page (pmd[i]));pagetable_dtor_free (pt); } } -free_page ((unsigned long )pmd_sv); -pmd_free (&init_mm, pmd);return 1 ;
block/blk-mq.c +71 -44
173 lines not on this page · raw message
block/fops.c +5 -0
@@ -409,6 +409,11 @@ static ssize_t blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter)if (blkdev_dio_invalid (bdev, iocb, iter))return -EINVAL ; +/* HIPRI needs private as bio; HAS_METADATA keeps it as uio_meta */ +if ((iocb->ki_flags &IOCB_HIPRI ) && + (iocb->ki_flags &IOCB_HAS_METADATA )) +return -EOPNOTSUPP ; +if (iov_iter_rw (iter) ==WRITE ) {u16 max_write_streams =bdev_max_write_streams (bdev);
block/mq-deadline.c +1 -1
@@ -704,7 +704,7 @@ static void dd_insert_requests(struct blk_mq_hw_ctx *hctx,blk_mq_free_requests (&free); } -/* Callback from inside blk_mq_rq_ctx_init(). */ +/* Callback from inside blk_mq_rq_late_init(). */ static void dd_prepare_request (struct request *rq) { rq->elv.priv[0 ] =NULL ;
drivers/android/binder.c +2 -1
@@ -2930,8 +2930,9 @@ static int binder_proc_transaction(struct binder_transaction *t, t_outdated->buffer =NULL ; buffer->transaction =NULL ;trace_binder_transaction_update_buffer_release (buffer); -binder_release_entire_buffer (proc,NULL , buffer, false); +binder_release_entire_buffer (proc,NULL , buffer, true);binder_alloc_free_buf (&proc->alloc, buffer); +binder_free_txn_fixups (t_outdated);kfree (t_outdated);binder_stats_deleted (BINDER_STAT_TRANSACTION ); }
drivers/android/binder/thread.rs +7 -1
@@ -656,6 +656,12 @@ pub(crate) fn push_return_work(&self, reply: u32) { self.inner.lock ().push_return_work (reply); } +pub (crate )fn pop_work_even_if_deferred (&self) ->Option <DLArc <dyn DeliverToRead >> { +let mut thread_inner = self.inner.lock (); + thread_inner.process_work_list =true ; + thread_inner.pop_work () + } +fn translate_object ( &self, obj_index: usize,
@@ -1606,7 +1612,7 @@ pub(crate) fn release(self: &Arc<Self>) { self.unwind_transaction_stack ();// Cancel all pending work items. -while let Ok (Some (work)) = self.get_work_local (false ) { +while let Some (work) = self.pop_work_even_if_deferred () { work.into_arc ().cancel (); } }
drivers/block/virtio_blk.c +1 -0
@@ -740,6 +740,7 @@ static int virtblk_read_zoned_limits(struct virtio_blk *vblk,dev_warn (&vdev->dev,"zero write granularity reported\n" );return -ENODEV ; } + lim->zone_write_granularity = wg; lim->physical_block_size = wg; lim->io_min = wg;
drivers/bluetooth/btintel.c +12 -3
@@ -274,7 +274,8 @@ void btintel_hw_error(struct hci_dev *hdev, u8 code) goto unlock; } -bt_dev_err (hdev,"Exception info %s" , (char *)(skb->data +1 )); +bt_dev_err (hdev,"Exception info %.*s" , (int )(skb->len -1 ), + (char *)(skb->data +1 ));kfree_skb (skb);
@@ -393,8 +394,16 @@ int btintel_load_ddc_config(struct hci_dev *hdev, const char *ddc_name)/* DDC file contains one or more DDC structure which has * Length (1 byte), DDC ID (2 bytes), and DDC value (Length - 2). */ -while (fw->size > fw_ptr - fw->data) { -u8 cmd_plen = fw_ptr[0 ] +sizeof (u8); +while (fw->size > (size_t )(fw_ptr - fw->data)) { +size_t remaining = fw->size - (fw_ptr - fw->data); +unsigned int cmd_plen = fw_ptr[0 ] +1U ; + +if (cmd_plen <3 || cmd_plen >U8_MAX || cmd_plen > remaining) { +bt_dev_err (hdev,"Malformed DDC record (plen=%u, remaining=%zu)" , + cmd_plen, remaining); +release_firmware (fw); +return -EINVAL ; + } skb =__hci_cmd_sync (hdev,0xfc8b , cmd_plen, fw_ptr,HCI_INIT_TIMEOUT );
drivers/bluetooth/btintel_pcie.c +11 -1
@@ -1116,7 +1116,7 @@ static int btintel_pcie_recv_frame(struct btintel_pcie_data *data, {int ret;u8 pkt_type; -u16 plen; +u32 plen;u32 pcie_pkt_type;void *pdata;struct hci_dev *hdev = data->hdev;
@@ -1968,6 +1968,16 @@ static int btintel_pcie_send_frame(struct hci_dev *hdev,if (test_bit (BTINTEL_PCIE_CORE_HALTED , &data->flags))return -ENODEV ; +/* Account for the 4-byte PCIe type header prepended before the +* DMA copy. Written as a subtraction to avoid wrap-around on +* attacker-controlled skb->len. +*/ +if (skb->len >BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ) { +bt_dev_err (hdev,"Packet too large: %u > %u" , skb->len, +BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ); +return -EMSGSIZE ; + } +/* Due to the fw limitation, the type header of the packet should be * 4 bytes unlike 1 byte for UART. In UART, the firmware can read * the first byte to get the packet type and redirect the rest of data
drivers/bluetooth/btusb.c +2 -0
@@ -307,6 +307,8 @@ static const struct usb_device_id quirks_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x13d3, 0x3501), .driver_info = BTUSB_QCA_ROME | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x13d3, 0x3503), .driver_info = BTUSB_QCA_ROME | + BTUSB_WIDEBAND_SPEECH }, /* QCA WCN6855 chipset */ { USB_DEVICE(0x0489, 0xe0c7), .driver_info = BTUSB_QCA_WCN6855 |
drivers/char/tpm/tpm2-cmd.c +1 -1
@@ -298,7 +298,7 @@ int tpm2_get_random(struct tpm_chip *chip, u8 *dest, size_t max) out = (struct tpm2_get_random_out *)&buf.data[offset]; recd =min_t (u32,be16_to_cpu (out->size), num_bytes);if (tpm_buf_length (&buf) < -TPM_HEADER_SIZE + + offset + offsetof(struct tpm2_get_random_out , buffer) + recd) { err = -EFAULT ;
drivers/char/tpm/tpm2-sessions.c +1 -0
@@ -983,6 +983,7 @@ static int tpm2_load_null(struct tpm_chip *chip, u32 *null_key)/* Deduce from the name change TPM interference: */ dev_err (&chip->dev,"null key integrity check failed\n" );tpm2_flush_context (chip, tmp_null_key); + rc = -ENODEV ; err:if (rc) {
drivers/edac/altera_edac.c +35 -32
196 lines not on this page · raw message
drivers/edac/versalnet_edac.c +1 -0
@@ -938,6 +938,7 @@ static void mc_remove(struct platform_device *pdev)remove_versalnet (priv);rproc_shutdown (priv->mcdi->r5_rproc);cdx_mcdi_finish (priv->mcdi); +rproc_put (priv->mcdi->r5_rproc);kfree (priv->mcdi); }
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c +9 -4
@@ -318,7 +318,7 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block) r =device_for_each_child (adev->acp.parent, &adev->acp.acp_genpd->gpd, acp_genpd_add_device);if (r) - goto failure; + goto failure_remove_mfd;break ; }default :
@@ -440,7 +440,7 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block) r =device_for_each_child (adev->acp.parent, &adev->acp.acp_genpd->gpd, acp_genpd_add_device);if (r) - goto failure; + goto failure_remove_mfd; }/* Assert Soft reset of ACP */
@@ -458,7 +458,7 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block)if (--count ==0 ) {dev_err (&adev->pdev->dev,"Failed to reset ACP\n" ); r = -ETIMEDOUT ; - goto failure; + goto failure_remove_mfd; }udelay (100 ); }
@@ -476,7 +476,7 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block)if (--count ==0 ) {dev_err (&adev->pdev->dev,"Failed to reset ACP\n" ); r = -ETIMEDOUT ; - goto failure; + goto failure_remove_mfd; }udelay (100 ); }
@@ -486,6 +486,11 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block)cgs_write_register (adev->acp.cgs_device, mmACP_SOFT_RESET, val);return 0 ; +failure_remove_mfd: +device_for_each_child (adev->acp.parent,NULL , + acp_genpd_remove_device); +mfd_remove_devices (adev->acp.parent); + failure:kfree (i2s_pdata);kfree (adev->acp.acp_res);
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +2 -0
@@ -1151,6 +1151,8 @@ static int amdgpu_discovery_sysfs_ips(struct amdgpu_device *adev, ip_hw_instance->kobj.kset = &ip_hw_id->hw_id_kset; res =kobject_add (&ip_hw_instance->kobj,NULL ,"%d" , ip_hw_instance->num_instance); +if (res) +kobject_put (&ip_hw_instance->kobj); next_ip:if (reg_base_64) ip_offset += struct_size(ip, base_address_64,
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +8 -0
@@ -2643,6 +2643,14 @@ static int amdgpu_pmops_suspend_noirq(struct device *dev)struct amdgpu_device *adev =drm_to_adev (drm_dev);int r; +/* +* A GPU parked by vga_switcheroo has no power and no PCIe link, so the +* ASIC reset below would fail and abort the whole noirq suspend phase. +* Bail out like amdgpu_device_prepare/suspend/resume() already do. +*/ +if (drm_dev->switch_power_state ==DRM_SWITCH_POWER_OFF ) +return 0 ; +if (amdgpu_acpi_should_gpu_reset (adev)) {amdgpu_device_lock_reset_domain (adev->reset_domain); r =amdgpu_asic_reset (adev);
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +9 -0
@@ -322,6 +322,14 @@ static const u32 verde_rlc_save_restore_register_list[] = 0x00000000 }; +static void gfx_v6_0_free_microcode (struct amdgpu_device *adev) +{ +amdgpu_ucode_release (&adev->gfx.pfp_fw); +amdgpu_ucode_release (&adev->gfx.me_fw); +amdgpu_ucode_release (&adev->gfx.ce_fw); +amdgpu_ucode_release (&adev->gfx.rlc_fw); +} +static int gfx_v6_0_init_microcode (struct amdgpu_device *adev) {const char *chip_name;
@@ -3187,6 +3195,7 @@ static int gfx_v6_0_sw_fini(struct amdgpu_ip_block *ip_block)amdgpu_ring_fini (&adev->gfx.compute_ring[i]);amdgpu_gfx_rlc_fini (adev); +gfx_v6_0_free_microcode (adev);return 0 ; }
drivers/gpu/drm/amd/amdgpu/vi.c +21 -0
@@ -1407,10 +1407,31 @@ static uint64_t vi_get_pcie_replay_count(struct amdgpu_device *adev)return (nak_r + nak_g); } +struct vi_reset_quirk { +u16 device; +u16 subsystem_vendor; +u16 subsystem_device; +u8 revision; +}; + +static const struct vi_reset_quirk vi_reset_quirks[] = { + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x0190 ,0xe3 },/* Radeon Pro 555X */ + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x018f ,0xc2 },/* Radeon Pro 560X */ + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x017a ,0xc7 },/* Radeon Pro 555 */ +}; +static bool vi_need_reset_on_init (struct amdgpu_device *adev) { +unsigned int i;u32 clock_cntl, pc; +for (i =0 ; i <ARRAY_SIZE (vi_reset_quirks); i++) +if (adev->pdev->device == vi_reset_quirks[i].device && + adev->pdev->subsystem_vendor == vi_reset_quirks[i].subsystem_vendor && + adev->pdev->subsystem_device == vi_reset_quirks[i].subsystem_device && + adev->pdev->revision == vi_reset_quirks[i].revision) +return true; +if (adev->flags &AMD_IS_APU )return false;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +7 -2
@@ -3266,9 +3266,14 @@ static int dm_suspend(struct amdgpu_ip_block *ip_block)dc_allow_idle_optimizations (adev->dm.dc, false); dm->cached_dc_state =dc_state_create_copy (dm->dc->current_state); +if (!dm->cached_dc_state) { +drm_err (adev_to_drm (adev), +"Failed to allocate cached DC state during suspend\n" ); +mutex_unlock (&dm->dc_lock); +return -ENOMEM ; + } -if (dm->cached_dc_state) -dm_gpureset_toggle_interrupts (adev, dm->cached_dc_state, false); +dm_gpureset_toggle_interrupts (adev, dm->cached_dc_state, false); res =amdgpu_dm_commit_zero_streams (dm->dc);if (res !=DC_OK ) {
drivers/gpu/drm/amd/display/dc/dc.h +1 -0
@@ -1624,6 +1624,7 @@ struct dc_scratch_space {struct ddc_service *ddc;enum dp_panel_mode panel_mode; +bool panel_mode_initialized;bool aux_mode;/* Private to DC core */
drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c +3 -1
@@ -91,6 +91,7 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode) } link->panel_mode = panel_mode; + link->panel_mode_initialized = true; DC_LOG_DETECTION_DP_CAPS("Link: %d eDP panel mode supported: %d " "eDP panel mode enabled: %d \n", link->link_index,
@@ -1293,7 +1294,8 @@ void edp_set_panel_assr(struct dc_link *link, struct pipe_ctx *pipe_ctx, result = cp_psp->funcs.enable_assr (cp_psp->handle, link); -if (!result && link->panel_mode !=DP_PANEL_MODE_EDP ) +if (!result && link->panel_mode_initialized && + link->panel_mode !=DP_PANEL_MODE_EDP ) *panel_mode =DP_PANEL_MODE_DEFAULT ; } }
drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c +0 -1
@@ -1306,7 +1306,6 @@ static bool dce64_construct( dc->caps.max_downscale_ratio =200 ; dc->caps.i2c_speed_in_khz =40 ; dc->caps.max_cursor_size =64 ; - dc->caps.is_apu = true;/************************************************* * Create resources *
drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c +1 -0
@@ -1121,6 +1121,7 @@ static bool dce81_construct( dc->caps.max_cursor_size =128 ; dc->caps.min_horizontal_blanking_period =80 ; dc->caps.is_apu = true; + dc->debug = debug_defaults;/************************************************* * Create resources *
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +20 -19
@@ -5263,7 +5263,8 @@ static int si_init_smc_table(struct amdgpu_device *adev)break ; } -if (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_HARDWAREDC ) +if ((adev->flags &AMD_IS_MOBILITY ) && + (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_HARDWAREDC )) table->systemFlags |=PPSMC_SYSTEMFLAG_GPIO_DC ;if (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_REGULATOR_HOT ) {
@@ -7230,6 +7231,19 @@ static void si_parse_pplib_non_clock_info(struct amdgpu_device *adev, adev->pm.dpm.uvd_ps = rps; } +static void si_update_limits (struct amdgpu_clock_and_voltage_limits *limits, +struct rv7xx_pl *pl) +{ +if (pl->sclk > limits->sclk) + limits->sclk = pl->sclk; +if (pl->mclk > limits->mclk) + limits->mclk = pl->mclk; +if (pl->vddc > limits->vddc) + limits->vddc = pl->vddc; +if (pl->vddci > limits->vddci) + limits->vddci = pl->vddci; +} +static void si_parse_pplib_clock_info (struct amdgpu_device *adev,struct amdgpu_ps *rps,int index,union pplib_clock_info *clock_info)
@@ -7238,7 +7252,6 @@ static void si_parse_pplib_clock_info(struct amdgpu_device *adev,struct evergreen_power_info *eg_pi =evergreen_get_pi (adev);struct si_power_info *si_pi =si_get_pi (adev);struct si_ps *ps =si_get_ps (rps); -struct amdgpu_clock_and_voltage_limits *limits;u16 leakage_voltage;struct rv7xx_pl *pl = &ps->performance_levels[index];int ret;
@@ -7303,26 +7316,14 @@ static void si_parse_pplib_clock_info(struct amdgpu_device *adev,* VBIOS can contain conflicting values between: * - the maximum allowed clocks and voltages on AC or DC * - the clocks and voltages in power states on AC or DC +* +* Assume that the AC limits are the maximum of all power states, +* and the DC limits are the maximum of battery power states. */ +si_update_limits (&adev->pm.dpm.dyn_state.max_clock_voltage_on_ac, pl);if ((rps->class &ATOM_PPLIB_CLASSIFICATION_UI_MASK ) == -ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE ) - limits = &adev->pm.dpm.dyn_state.max_clock_voltage_on_ac; -else if ((rps->class &ATOM_PPLIB_CLASSIFICATION_UI_MASK ) ==ATOM_PPLIB_CLASSIFICATION_UI_BATTERY ) - limits = &adev->pm.dpm.dyn_state.max_clock_voltage_on_dc; -else - limits =NULL ; - -if (limits) { -if (pl->sclk > limits->sclk) - limits->sclk = pl->sclk; -if (pl->mclk > limits->mclk) - limits->mclk = pl->mclk; -if (pl->vddc > limits->vddc) - limits->vddc = pl->vddc; -if (pl->vddci > limits->vddci) - limits->vddci = pl->vddci; - } +si_update_limits (&adev->pm.dpm.dyn_state.max_clock_voltage_on_dc, pl); }union pplib_power_state {
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c +8 -2
@@ -268,15 +268,21 @@ static const ATOM_VOLTAGE_OBJECT_V3 *atomctrl_lookup_voltage_type_v3( unsigned int offset = offsetof(ATOM_VOLTAGE_OBJECT_INFO_V3_1, asVoltageObj[0]);uint8_t *start = (uint8_t *)voltage_object_info_table; -while (offset < size) { +while (offset +sizeof (ATOM_VOLTAGE_OBJECT_HEADER_V3 ) <= size) {const ATOM_VOLTAGE_OBJECT_V3 *voltage_object = (const ATOM_VOLTAGE_OBJECT_V3 *)(start + offset); +u16 obj_size; + + obj_size =le16_to_cpu (voltage_object->asGpioVoltageObj.sHeader.usSize); +if (obj_size <sizeof (voltage_object->asGpioVoltageObj.sHeader) || + offset + obj_size > size) +break ;if (voltage_type == voltage_object->asGpioVoltageObj.sHeader.ucVoltageType && voltage_mode == voltage_object->asGpioVoltageObj.sHeader.ucVoltageMode)return voltage_object; - offset +=le16_to_cpu (voltage_object->asGpioVoltageObj.sHeader.usSize); + offset += obj_size; }return NULL ;
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomfwctrl.c +8 -3
@@ -36,16 +36,21 @@ static const union atom_voltage_object_v4 *pp_atomfwctrl_lookup_voltage_type_v4( offsetof(struct atom_voltage_objects_info_v4_1, voltage_object[0]);unsigned long start = (unsigned long )voltage_object_info_table; -while (offset < size) { +while (offset +sizeof (struct atom_voltage_object_header_v4 ) <= size) {const union atom_voltage_object_v4 *voltage_object = (const union atom_voltage_object_v4 *)(start + offset); +u16 obj_size; + + obj_size =le16_to_cpu (voltage_object->gpio_voltage_obj.header.object_size); +if (obj_size <sizeof (voltage_object->gpio_voltage_obj.header) || + offset + obj_size > size) +break ;if (voltage_type == voltage_object->gpio_voltage_obj.header.voltage_type && voltage_mode == voltage_object->gpio_voltage_obj.header.voltage_mode)return voltage_object; - offset +=le16_to_cpu (voltage_object->gpio_voltage_obj.header.object_size); - + offset += obj_size; }return NULL ;
drivers/gpu/drm/mediatek/mtk_drm_drv.c +15 -2
@@ -652,8 +652,10 @@ static int mtk_drm_bind(struct device *dev) private->mtk_drm_bound = true; private->dev = dev; -if (!mtk_drm_get_all_drm_priv (dev)) +if (!mtk_drm_get_all_drm_priv (dev)) { +put_device (private->mutex_dev);return 0 ; + } drm =drm_dev_alloc (&mtk_drm_driver, dev);if (IS_ERR (drm)) {
@@ -1070,7 +1072,7 @@ static int mtk_drm_probe(struct platform_device *pdev)struct mtk_mmsys_driver_data *mtk_drm_data;struct device_node *node;struct component_match *match =NULL ; -struct platform_device *ovl_adaptor; +struct platform_device *ovl_adaptor =NULL ;int ret;int i;
@@ -1122,6 +1124,9 @@ static int mtk_drm_probe(struct platform_device *pdev)PLATFORM_DEVID_AUTO , (void *)private->mmsys_dev, sizeof(*private->mmsys_dev)); +if (IS_ERR (ovl_adaptor)) +return PTR_ERR (ovl_adaptor); + private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR ].dev = &ovl_adaptor->dev;mtk_ddp_comp_init (dev,NULL , &private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR ],DDP_COMPONENT_DRM_OVL_ADAPTOR );
@@ -1215,6 +1220,8 @@ static int mtk_drm_probe(struct platform_device *pdev) err_pm:pm_runtime_disable (dev); err_node: +if (ovl_adaptor) +platform_device_unregister (ovl_adaptor);of_node_put (private->mutex_node);for (i =0 ; i <DDP_COMPONENT_DRM_ID_MAX ; i++)of_node_put (private->comp_node[i]);
@@ -1224,9 +1231,15 @@ static int mtk_drm_probe(struct platform_device *pdev)static void mtk_drm_remove (struct platform_device *pdev) {struct mtk_drm_private *private =platform_get_drvdata (pdev); +struct device *ovl_adaptor_dev;int i; + ovl_adaptor_dev = + private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR ].dev; +component_master_del (&pdev->dev, &mtk_drm_ops); +if (ovl_adaptor_dev) +platform_device_unregister (to_platform_device (ovl_adaptor_dev));pm_runtime_disable (&pdev->dev);of_node_put (private->mutex_node);for (i =0 ; i <DDP_COMPONENT_DRM_ID_MAX ; i++)
drivers/gpu/drm/radeon/radeon_bios.c +5 -1
@@ -49,6 +49,7 @@static bool igp_read_bios_from_vram (struct radeon_device *rdev) {uint8_t __iomem *bios; +uint8_t val1, val2;resource_size_t vram_base;resource_size_t size =256 *1024 ;/* ??? */
@@ -63,7 +64,10 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)return false; } -if (size ==0 || bios[0 ] !=0x55 || bios[1 ] !=0xaa ) { + val1 =readb (&bios[0 ]); + val2 =readb (&bios[1 ]); + +if (size ==0 || val1 !=0x55 || val2 !=0xaa ) {iounmap (bios);return false; }
drivers/hid/bpf/hid_bpf_dispatch.c +1 -1
@@ -456,7 +456,7 @@ hid_bpf_hw_request(struct hid_bpf_ctx *ctx, __u8 *buf, size_t buf__sz, (u64 )(long )ctx, true); /* prevent infinite recursions */ -if (ret > size) +if (ret > (ssize_t )size) ret = size;if (ret >0 )memcpy (buf, dma_data, ret);
drivers/hid/hid-multitouch.c +1 -1
@@ -2250,7 +2250,7 @@ static void mt_remove(struct hid_device *hdev) {struct mt_device *td =hid_get_drvdata (hdev); -timer_delete_sync (&td->release_timer); +timer_shutdown_sync (&td->release_timer);sysfs_remove_group (&hdev->dev.kobj, &mt_attribute_group);hid_hw_stop (hdev);
drivers/i2c/busses/i2c-at91-master.c +7 -1
@@ -921,8 +921,14 @@ int at91_twi_probe_master(struct platform_device *pdev,at91_calc_twi_clock (dev); rc =at91_init_twi_recovery_info (pdev, dev); -if (rc == -EPROBE_DEFER ) +if (rc == -EPROBE_DEFER ) { +/* +* The DMA channels were already set up above, release them +* before deferring the probe so they are not leaked. +*/ +at91_twi_dma_release (dev);return rc; + } dev->adapter.algo = &at91_twi_algorithm; dev->adapter.quirks = &at91_twi_quirks;
drivers/i2c/busses/i2c-xiic.c +46 -15
120 lines not on this page · raw message
drivers/iio/accel/kionix-kx022a.c +24 -6
@@ -649,7 +649,7 @@ static int kx022a_read_raw(struct iio_dev *idev,if (ret)return ret; -if ((regval &KX022A_MASK_ODR ) > +if ((regval &KX022A_MASK_ODR ) >=ARRAY_SIZE (kx022a_accel_samp_freq_table)) {dev_err (data->dev,"Invalid ODR\n" );return -EINVAL ;
@@ -980,26 +980,44 @@ static int kx022a_fifo_enable(struct kx022a_data *data)guard (mutex)(&data->mutex); ret =__kx022a_turn_on_off (data, false);if (ret) -return ret; + goto err_free_out;/* Update watermark to HW */ ret =kx022a_fifo_set_wmi (data);if (ret) -return ret; + goto err_turn_on_out;/* Enable buffer */ ret =regmap_set_bits (data->regmap, data->chip_info->buf_cntl2,KX022A_MASK_BUF_EN );if (ret) -return ret; + goto err_turn_on_out; data->state |=KX022A_STATE_FIFO ; ret =regmap_set_bits (data->regmap, data->ien_reg,KX022A_MASK_WMI );if (ret) -return ret; + goto err_buf_disable_out; -return __kx022a_turn_on_off (data, true); + ret =__kx022a_turn_on_off (data, true); +if (ret) + goto err_wmi_clear_out; + +return ret; + +err_wmi_clear_out: +regmap_clear_bits (data->regmap, data->ien_reg, +KX022A_MASK_WMI ); +err_buf_disable_out: +regmap_clear_bits (data->regmap, data->chip_info->buf_cntl2, +KX022A_MASK_BUF_EN ); + data->state &= ~KX022A_STATE_FIFO ; +err_turn_on_out: +__kx022a_turn_on_off (data, true); +err_free_out: +kfree (data->fifo_buffer); + +return ret; }static int kx022a_buffer_postenable (struct iio_dev *idev)
drivers/iio/accel/kxcjk-1013.c +1 -1
@@ -1031,7 +1031,7 @@ static int kxcjk1013_write_event_config(struct iio_dev *indio_dev,struct kxcjk1013_data *data =iio_priv (indio_dev);int ret; -if (state && data->ev_enable_state) +if (state == data->ev_enable_state)return 0 ;mutex_lock (&data->mutex);
drivers/iio/accel/sca3000.c +1 -1
@@ -647,7 +647,7 @@ static int sca3000_write_raw_samp_freq(struct sca3000_state *st, int val)if (val == base_freq /2 ) ctrlval |=SCA3000_REG_OUT_CTRL_BUF_DIV_2 ; -if (val == base_freq /4 ) +else if (val == base_freq /4 ) ctrlval |=SCA3000_REG_OUT_CTRL_BUF_DIV_4 ;else if (val != base_freq)return -EINVAL ;
drivers/iio/adc/ad4030.c +18 -5
@@ -232,10 +232,16 @@ struct ad4030_state { .num_ext_scan_type = ARRAY_SIZE(_scan_type), \ } +/* +* AD4030 can average over 2^N samples, where N = 1, 2, 3, ..., 16. +* We use N = 0 to mean no sample averaging. +*/ static const int ad4030_average_modes[] = { -1 ,2 ,4 ,8 ,16 ,32 ,64 ,128 , -256 ,512 ,1024 ,2048 ,4096 ,8192 ,16384 ,32768 , -65536 , +BIT (0 ),/* No sampling average */ +BIT (1 ),BIT (2 ),BIT (3 ),BIT (4 ), +BIT (5 ),BIT (6 ),BIT (7 ),BIT (8 ), +BIT (9 ),BIT (10 ),BIT (11 ),BIT (12 ), +BIT (13 ),BIT (14 ),BIT (15 ),BIT (16 ), };static int ad4030_enter_config_mode (struct ad4030_state *st)
@@ -508,13 +514,20 @@ static int ad4030_set_chan_calibbias(struct iio_dev *indio_dev,static int ad4030_set_avg_frame_len (struct iio_dev *dev,int avg_val) {struct ad4030_state *st =iio_priv (dev); -unsigned int avg_log2 =ilog2 (avg_val);unsigned int last_avg_idx =ARRAY_SIZE (ad4030_average_modes) -1 ; +unsigned int avg_log2;int ret; -if (avg_val <0 || avg_val > ad4030_average_modes[last_avg_idx]) +/* Reject unsupported modes */ +if (avg_val > ad4030_average_modes[last_avg_idx])return -EINVAL ; +/* Avoid invalid values for logarithm since it's undefined */ +if (avg_val <1 ) +return -EINVAL ; + + avg_log2 =ilog2 (avg_val); + ret =regmap_write (st->regmap,AD4030_REG_AVG ,AD4030_REG_AVG_MASK_AVG_SYNC |FIELD_PREP (AD4030_REG_AVG_MASK_AVG_VAL , avg_log2));
drivers/iio/adc/ad7173.c +2 -2
@@ -776,9 +776,9 @@ static int ad7173_load_config(struct ad7173_state *st,return ad_sd_write_reg (&st->sd,AD7173_REG_FILTER (free_cfg_slot),2 ,FIELD_PREP (AD7173_FILTER_SINC3_MAP ,0 ) | -FIELD_PREP (AD7173_FILTER_ENHFILT_MASK , - post_filter_enable) |FIELD_PREP (AD7173_FILTER_ENHFILTEN , + post_filter_enable) | +FIELD_PREP (AD7173_FILTER_ENHFILT_MASK , post_filter_select) |FIELD_PREP (AD7173_FILTER_ORDER ,0 ) | FIELD_PREP(AD7173_FILTER_ODR_MASK,
drivers/iio/adc/ad_sigma_delta.c +18 -13
@@ -496,7 +496,6 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)const struct iio_scan_type *scan_type = &indio_dev->channels[0 ].scan_type;struct spi_transfer *xfer = sigma_delta->sample_xfer;unsigned int i, slot, channel; -u8 *samples_buf;int ret;if (sigma_delta->num_slots ==1 ) {
@@ -528,7 +527,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev) xfer[1 ].bits_per_word = scan_type->realbits; xfer[1 ].len =spi_bpw_to_bytes (scan_type->realbits); }else { -unsigned int samples_buf_size, scan_size; +unsigned int scan_size;if (sigma_delta->active_slots >1 ) { ret =ad_sigma_delta_append_status (sigma_delta, true);
@@ -536,17 +535,6 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)return ret; } - samples_buf_size = -ALIGN (slot *BITS_TO_BYTES (scan_type->storagebits), -sizeof (s64)); - samples_buf_size +=sizeof (s64); - samples_buf =devm_krealloc (&sigma_delta->spi->dev, - sigma_delta->samples_buf, - samples_buf_size,GFP_KERNEL ); -if (!samples_buf) -return -ENOMEM ; - - sigma_delta->samples_buf = samples_buf; scan_size =BITS_TO_BYTES (scan_type->realbits + scan_type->shift);/* For 24-bit data, there is an extra byte of padding. */ xfer[1 ].rx_buf = &sigma_delta->rx_buf[scan_size ==3 ?1 :0 ];
@@ -853,6 +841,23 @@ int devm_ad_sd_setup_buffer_and_trigger(struct device *dev, struct iio_dev *indi indio_dev->setup_ops = &ad_sd_buffer_setup_ops; }else { +const struct iio_scan_type *scan_type = + &indio_dev->channels[0 ].scan_type; +unsigned int samples_buf_size; + +/* +* Worst-case size: all sequencer slots can be active, capped +* at num_slots by ad_sd_validate_scan_mask(). +*/ + samples_buf_size = +ALIGN (sigma_delta->num_slots * +BITS_TO_BYTES (scan_type->storagebits), +sizeof (s64)); + samples_buf_size +=sizeof (s64); + sigma_delta->samples_buf =devm_kzalloc (dev, samples_buf_size,GFP_KERNEL ); +if (!sigma_delta->samples_buf) +return -ENOMEM ; + ret = devm_iio_triggered_buffer_setup(dev, indio_dev, &iio_pollfunc_store_time, &ad_sd_trigger_handler,
drivers/iio/adc/ade9000.c +19 -17
@@ -222,7 +222,7 @@ (ADE9000_ST1_ERROR0 |ADE9000_ST1_ERROR1 | \ ADE9000_ST1_ERROR2 | ADE9000_ST1_ERROR3)#define ADE9000_ST1_CROSSING_FIRST 6 -#define ADE9000_ST1_CROSSING_DEPTH 25 +#define ADE9000_ST1_CROSSING_DEPTH 26#define ADE9000_WFB_TRG_DIP_BIT BIT(0)#define ADE9000_WFB_TRG_SWELL_BIT BIT(1)
@@ -448,7 +448,7 @@ static const struct iio_chan_spec_ext_info ade9000_ext_info[] = {BIT (IIO_CHAN_INFO_CALIBSCALE ), \ .event_spec = ade9000_current_events, \ .num_event_specs = ARRAY_SIZE(ade9000_current_events), \ - .scan_index = num, \ + .scan_index = num * 2, \ .indexed = 1, \ .scan_type = { \ .sign ='s' , \
@@ -468,7 +468,7 @@ static const struct iio_chan_spec_ext_info ade9000_ext_info[] = {BIT (IIO_CHAN_INFO_FREQUENCY ), \ .event_spec = ade9000_voltage_events, \ .num_event_specs = ARRAY_SIZE(ade9000_voltage_events), \ - .scan_index = num + 1, /* interleave with current channels */ \ + .scan_index = num * 2 + 1, /* interleave with current channels */ \ .indexed = 1, \ .scan_type = { \ .sign ='s' , \
@@ -1652,8 +1652,9 @@ static int ade9000_setup_clkout(struct device *dev, struct ade9000_state *st)return 0 ;/* CLKOUT passes through CLKIN with divider of 1 */ - clkout_hw =devm_clk_hw_register_divider (dev,"clkout" ,__clk_get_name (st->clkin), -CLK_SET_RATE_PARENT ,NULL ,0 ,1 ,0 ,NULL ); + clkout_hw =devm_clk_hw_register_fixed_factor (dev,"clkout" , +__clk_get_name (st->clkin), +CLK_SET_RATE_PARENT ,1 ,1 );if (IS_ERR (clkout_hw))return dev_err_probe (dev,PTR_ERR (clkout_hw),"Failed to register clkout" );
@@ -1710,18 +1711,6 @@ static int ade9000_probe(struct spi_device *spi)if (ret)return ret; - ret =ade9000_request_irq (dev,"irq0" , ade9000_irq0_thread, indio_dev); -if (ret) -return ret; - - ret =ade9000_request_irq (dev,"irq1" , ade9000_irq1_thread, indio_dev); -if (ret) -return ret; - - ret =ade9000_request_irq (dev,"dready" , ade9000_dready_thread, indio_dev); -if (ret) -return ret; -/* External CMOS clock input (optional - crystal can be used instead) */ st->clkin =devm_clk_get_optional_enabled (dev,NULL );if (IS_ERR (st->clkin))
@@ -1741,6 +1730,19 @@ static int ade9000_probe(struct spi_device *spi)return dev_err_probe (&spi->dev, ret,"Failed to get and enable vdd regulator\n" ); +/* Request IRQs only after powering the chip; the handlers do SPI access. */ + ret =ade9000_request_irq (dev,"irq0" , ade9000_irq0_thread, indio_dev); +if (ret) +return ret; + + ret =ade9000_request_irq (dev,"irq1" , ade9000_irq1_thread, indio_dev); +if (ret) +return ret; + + ret =ade9000_request_irq (dev,"dready" , ade9000_dready_thread, indio_dev); +if (ret) +return ret; + indio_dev->channels = ade9000_channels; indio_dev->num_channels =ARRAY_SIZE (ade9000_channels);
drivers/iio/adc/adi-axi-adc.c +30 -31
111 lines not on this page · raw message
drivers/iio/adc/aspeed_adc.c +7 -6
@@ -536,12 +536,13 @@ static int aspeed_adc_probe(struct platform_device *pdev)return PTR_ERR (data->clk_scaler); data->rst =devm_reset_control_get_shared (&pdev->dev,NULL ); -if (IS_ERR (data->rst)) { -dev_err (&pdev->dev, -"invalid or missing reset controller device tree entry" ); -return PTR_ERR (data->rst); - } -reset_control_deassert (data->rst); +if (IS_ERR (data->rst)) +return dev_err_probe (&pdev->dev,PTR_ERR (data->rst), +"invalid or missing reset controller device tree entry" ); + + ret =reset_control_deassert (data->rst); +if (ret) +return ret; ret =devm_add_action_or_reset (data->dev, aspeed_adc_reset_assert, data->rst);
drivers/iio/adc/axp288_adc.c +8 -0
@@ -207,6 +207,14 @@ static const struct dmi_system_id axp288_adc_ts_bias_override[] = { }, .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA, }, + { + /* Haier HV103H */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Haier"), + DMI_MATCH(DMI_PRODUCT_NAME, "HV103H"), + }, + .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA, + }, { } };
drivers/iio/adc/max1363.c +8 -0
@@ -407,6 +407,14 @@ static int max1363_read_single_chan(struct iio_dev *indio_dev, data = rxbuf[0 ]; } + +/* +* Differential channels are bipolar and the device returns the sample +* in two's complement, so sign-extend it from the resolution bit. +*/ +if (chan->differential) + data =sign_extend32 (data, st->chip_info->bits -1 ); + *val = data;return 0 ;
drivers/iio/adc/pac1934.c +4 -0
@@ -1108,6 +1108,10 @@ static int pac1934_acpi_parse_channel_config(struct i2c_client *client,devm_kmemdup (dev, rez->package.elements[i].string.pointer, (size_t )rez->package.elements[i].string.length +1 ,GFP_KERNEL ); +if (!info->labels[idx]) { +ACPI_FREE (rez); +return -ENOMEM ; + } info->labels[idx][rez->package.elements[i].string.length] ='\0' ; info->shunts[idx] = rez->package.elements[i +1 ].integer.value *1000 ; info->active_channels[idx] = (info->shunts[idx] !=0 );
drivers/iio/adc/rohm-bd79124.c +14 -6
@@ -222,7 +222,7 @@ static int bd79124gpo_set_multiple(struct gpio_chip *gc, unsigned long *mask,if (ret)return ret; -if (all_gpos ^ *mask) { +if (*mask & ~all_gpos) {dev_dbg (data->dev,"Invalid mux config. Can't set value.\n" );return -EINVAL ;
@@ -403,6 +403,9 @@ static int bd79124_start_measurement(struct bd79124_data *data, int chan)/* See if already started */ ret =regmap_read (data->map,BD79124_REG_AUTO_CHANNELS , &val); +if (ret) +return ret; +if (val &BIT (chan))return 0 ;
@@ -442,11 +445,16 @@ static int bd79124_stop_measurement(struct bd79124_data *data, int chan)/* See if already stopped */ ret =regmap_read (data->map,BD79124_REG_AUTO_CHANNELS , &enabled_chans); +if (ret) +return ret; +if (!(enabled_chans &BIT (chan)))return 0 ; ret =regmap_clear_bits (data->map,BD79124_REG_SEQ_CFG ,BD79124_MSK_SEQ_START ); +if (ret) +return ret;/* Clear the channel from the measured channels */ enabled_chans &= ~BIT (chan);
@@ -546,7 +554,7 @@ static int bd79124_enable_event(struct bd79124_data *data,return ret;if (dir ==IIO_EV_DIR_RISING ) { - limit = &data->alarm_f_limit[channel]; + limit = &data->alarm_r_limit[channel]; reg =BD79124_GET_HIGH_LIMIT_REG (channel); }else { limit = &data->alarm_f_limit[channel];
@@ -941,13 +949,13 @@ static int bd79124_chan_init(struct bd79124_data *data, int channel) {int ret; - ret =regmap_write (data->map,BD79124_GET_HIGH_LIMIT_REG (channel), -BD79124_HIGH_LIMIT_MAX ); + ret =bd79124_write_int_to_reg (data,BD79124_GET_HIGH_LIMIT_REG (channel), +BD79124_HIGH_LIMIT_MAX );if (ret)return ret; -return regmap_write (data->map,BD79124_GET_LOW_LIMIT_REG (channel), -BD79124_LOW_LIMIT_MIN ); +return bd79124_write_int_to_reg (data,BD79124_GET_LOW_LIMIT_REG (channel), +BD79124_LOW_LIMIT_MIN ); }static int bd79124_get_gpio_pins (const struct iio_chan_spec *cs,int num_channels)
drivers/iio/adc/stm32-adc.c +26 -17
70 lines not on this page · raw message
drivers/iio/adc/sun4i-gpadc-iio.c +4 -6
@@ -638,10 +638,10 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)* thermal because no thermal DT node is found. */ if (IS_ERR (info->tzd) &&PTR_ERR (info->tzd) != -ENODEV ) { -dev_err (&pdev->dev, -"could not register thermal sensor: %ld\n" , -PTR_ERR (info->tzd)); -return PTR_ERR (info->tzd); + ret =dev_err_probe (&pdev->dev, +PTR_ERR (info->tzd), +"could not register thermal sensor\n" ); + goto err_map; } }
@@ -657,7 +657,6 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)if (!info->no_irq &&IS_ENABLED (CONFIG_THERMAL_OF ))iio_map_array_unregister (indio_dev); -pm_runtime_put (&pdev->dev);pm_runtime_disable (&pdev->dev);return ret;
@@ -668,7 +667,6 @@ static void sun4i_gpadc_remove(struct platform_device *pdev)struct iio_dev *indio_dev =platform_get_drvdata (pdev);struct sun4i_gpadc_iio *info =iio_priv (indio_dev); -pm_runtime_put (&pdev->dev);pm_runtime_disable (&pdev->dev);if (!IS_ENABLED (CONFIG_THERMAL_OF ))
drivers/iio/adc/xilinx-xadc-core.c +5 -4
@@ -1402,13 +1402,14 @@ static int xadc_probe(struct platform_device *pdev) }if (irq >0 ) { - ret =devm_request_irq (dev, irq, xadc->ops->interrupt_handler, -0 ,dev_name (dev), indio_dev); +/* Clear out any work queued by the interrupt */ + ret =devm_add_action_or_reset (dev, xadc_cancel_delayed_work, + &xadc->zynq_unmask_work);if (ret)return ret; - ret =devm_add_action_or_reset (dev, xadc_cancel_delayed_work, - &xadc->zynq_unmask_work); + ret =devm_request_irq (dev, irq, xadc->ops->interrupt_handler, +0 ,dev_name (dev), indio_dev);if (ret)return ret; }
drivers/iio/buffer/industrialio-buffer-dmaengine.c +11 -5
@@ -82,10 +82,13 @@ static int iio_dmaengine_buffer_submit_block(struct iio_dma_buffer_queue *queue, dma_dir =DMA_MEM_TO_DEV ;
Lines of this file are not shown. View the raw message.
drivers/iio/light/rohm-bu27034.c +37 -25
62 lines not on this page · raw message
drivers/iio/proximity/pulsedlight-lidar-lite-v2.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/cadence-nand-controller.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/vf610_nfc.c +70 -15
85 lines not on this page · raw message
drivers/mtd/nand/spi/core.c +36 -12
48 lines not on this page · raw message
drivers/net/ethernet/broadcom/bcmsysport.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +25 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_tx_dqo.c +7 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/mcs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +26 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c +8 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_mactable.c +32 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +50 -71
121 lines not on this page · raw message
drivers/net/ethernet/microchip/sparx5/sparx5_main.h +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c +21 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/vcap/vcap_api.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +33 -10
43 lines not on this page · raw message
drivers/net/ethernet/realtek/r8169_main.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +57 -42
99 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_xdp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/phy/aquantia/aquantia_main.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/hif_usb.c +9 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/3945-mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/silabs/wfx/hif_tx.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/spi/spi-cs42l43.c +97 -0
97 lines not on this page · raw message
drivers/thunderbolt/ctl.c +31 -32
63 lines not on this page · raw message
drivers/tty/n_gsm.c +14 -33
47 lines not on this page · raw message
drivers/tty/serial/sc16is7xx.c +42 -11
53 lines not on this page · raw message
drivers/tty/tty_io.c +37 -17
54 lines not on this page · raw message
drivers/tty/tty_port.c +61 -30
91 lines not on this page · raw message
drivers/usb/class/cdc-acm.c +23 -18
41 lines not on this page · raw message
drivers/usb/dwc3/gadget.c +106 -2
108 lines not on this page · raw message
drivers/usb/gadget/function/f_uac1_legacy.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/core.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/dev.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/hub.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/vhub.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/usb/serial/usb-serial.c +101 -26
127 lines not on this page · raw message
drivers/virt/nitro_enclaves/ne_misc_dev.c +1 -0
Lines of this file are not shown. View the raw message.
fs/netfs/misc.c +99 -0
99 lines not on this page · raw message
fs/smb/client/smb2ops.c +86 -33
119 lines not on this page · raw message
fs/smb/client/smb2pdu.c +111 -45
156 lines not on this page · raw message
fs/smb/client/transport.c +92 -50
142 lines not on this page · raw message
kernel/events/core.c +128 -170
298 lines not on this page · raw message
mm/execmem.c +29 -26
55 lines not on this page · raw message
net/bluetooth/hci_core.c +44 -10
54 lines not on this page · raw message
net/core/dev.c +56 -24
80 lines not on this page · raw message
net/mac80211/chan.c +36 -9
45 lines not on this page · raw message
net/mac80211/drop.h +45 -2
47 lines not on this page · raw message
net/mac80211/rx.c +56 -48
104 lines not on this page · raw message
net/mac80211/tx.c +103 -25
128 lines not on this page · raw message
net/netfilter/ipset/ip_set_bitmap_gen.h +1 -1
Lines of this file are not shown. View the raw message.
net/sunrpc/xprtrdma/svc_rdma_transport.c +7 -1
Lines of this file are not shown. View the raw message.
rust/kernel/devres.rs +65 -99
164 lines not on this page · raw message
rust/kernel/irq/request.rs +54 -35
89 lines not on this page · raw message
tools/testing/selftests/mm/hugepage-mremap.c +5 -0
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.