Linux 6.6.140
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.140 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.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
------------
Makefile | 2 arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi | 20 arch/arm64/crypto/aes-modes.S | 4 arch/arm64/kvm/arm.c | 5 arch/arm64/kvm/hyp/nvhe/setup.c | 6 arch/arm64/kvm/vgic/vgic-mmio-v2.c | 2 arch/arm64/kvm/vgic/vgic-mmio-v3.c | 2 arch/arm64/mm/mmu.c | 36 - arch/loongarch/kernel/cpu-probe.c | 7 arch/loongarch/kernel/syscall.c | 3 arch/loongarch/pci/acpi.c | 5 arch/loongarch/pci/pci.c | 3 arch/parisc/kernel/syscalls/syscall.tbl | 2 arch/powerpc/kexec/Makefile | 2 arch/s390/kernel/debug.c | 5 arch/um/drivers/cow_user.c | 8 arch/x86/kernel/shstk.c | 45 + arch/x86/kvm/hyperv.c | 2 arch/x86/kvm/mmu/mmu.c | 35 - arch/x86/kvm/svm/nested.c | 56 + arch/x86/kvm/svm/svm.c | 17 arch/x86/kvm/svm/svm.h | 2 arch/x86/kvm/x86.c | 62 +- block/bio-integrity.c | 2 block/bio.c | 14 block/blk.h | 21 certs/extract-cert.c | 6 crypto/authencesn.c | 5 crypto/pcrypt.c | 7 drivers/acpi/cppc_acpi.c | 6 drivers/acpi/power.c | 2 drivers/acpi/scan.c | 2 drivers/acpi/video_detect.c | 8 drivers/base/core.c | 39 - drivers/base/dd.c | 20 drivers/block/rbd.c | 6 drivers/block/zram/zram_drv.c | 3 drivers/bluetooth/virtio_bt.c | 39 + drivers/bus/imx-weim.c | 2 drivers/char/ipmi/ipmi_si_intf.c | 70 +- drivers/char/ipmi/ipmi_ssif.c | 36 + drivers/char/tpm/tpm_tis_core.c | 11 drivers/clk/clk-rk808.c | 2 drivers/clk/imx/clk-imx8-acm.c | 3 drivers/clk/microchip/clk-mpfs-ccc.c | 6 drivers/cpuidle/cpuidle-powernv.c | 5 drivers/cpuidle/cpuidle-pseries.c | 5 drivers/crypto/atmel-aes.c | 2 drivers/crypto/atmel-ecc.c | 1 drivers/crypto/atmel-sha204a.c | 6 drivers/crypto/atmel-tdes.c | 8 drivers/crypto/caam/caamalg_qi2.c | 4 drivers/crypto/caam/caamhash.c | 4 drivers/crypto/ccree/cc_hash.c | 1 drivers/crypto/hisilicon/sec/sec_algs.c | 2 drivers/crypto/nx/nx-842.c | 47 - drivers/crypto/nx/nx-842.h | 25 drivers/crypto/nx/nx-common-powernv.c | 31 - drivers/crypto/nx/nx-common-pseries.c | 33 - drivers/crypto/talitos.c | 254 +++++---- drivers/dma/idxd/device.c | 3 drivers/extcon/extcon-ptn5150.c | 14 drivers/firmware/google/framebuffer-coreboot.c | 12 drivers/gpio/gpiolib-of.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 43 - drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 13 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 11 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 3 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 25 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c | 46 + drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 29 - drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 4 drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 11 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 7 drivers/gpu/drm/amd/pm/powerplay/smumgr/ci_smumgr.c | 13 drivers/gpu/drm/drm_gem_framebuffer_helper.c | 4 drivers/gpu/drm/nouveau/nouveau_gem.c | 2 drivers/gpu/drm/radeon/ci_dpm.c | 9 drivers/gpu/drm/tiny/arcpgu.c | 3 drivers/hid/hid-playstation.c | 6 drivers/hwmon/corsair-psu.c | 4 drivers/hwmon/ltc2992.c | 43 + drivers/i2c/i2c-core-of.c | 2 drivers/iio/adc/ad7768-1.c | 9 drivers/iio/adc/ti-ads7950.c | 11 drivers/infiniband/core/addr.c | 3 drivers/infiniband/hw/hns/hns_roce_qp.c | 7 drivers/infiniband/hw/mana/qp.c | 15 drivers/infiniband/hw/mlx4/srq.c | 4 drivers/infiniband/hw/mlx5/main.c | 1 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 4 drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c | 2 drivers/infiniband/sw/rxe/rxe_recv.c | 14 drivers/infiniband/sw/rxe/rxe_resp.c | 14 drivers/iommu/amd/amd_iommu_types.h | 2 drivers/iommu/amd/init.c | 2 drivers/iommu/amd/iommu.c | 18 drivers/iommu/iommufd/io_pagetable.c | 10 drivers/leds/rgb/leds-qcom-lpg.c | 7 drivers/md/dm-ioctl.c | 6 drivers/md/dm-raid1.c | 6 drivers/md/dm-verity-fec.c | 8 drivers/md/persistent-data/dm-btree-remove.c | 8 drivers/md/raid10.c | 6 drivers/md/raid5-cache.c | 48 + drivers/md/raid5.c | 8 drivers/media/common/videobuf2/videobuf2-dma-sg.c | 1 drivers/media/dvb-frontends/dib8000.c | 4 drivers/media/i2c/imx219.c | 3 drivers/media/i2c/imx412.c | 2 drivers/media/i2c/ov08d10.c | 10 drivers/media/i2c/ov8856.c | 10 drivers/media/pci/saa7164/saa7164-core.c | 47 + drivers/media/pci/zoran/zoran_card.c | 2 drivers/media/platform/amphion/vpu_v4l2.c | 9 drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 1 drivers/media/platform/ti/omap3isp/ispvideo.c | 1 drivers/media/rc/igorplugusb.c | 16 drivers/media/rc/streamzap.c | 12 drivers/media/rc/ttusbir.c | 13 drivers/media/rc/xbox_remote.c | 9 drivers/media/usb/uvc/uvc_queue.c | 3 drivers/mfd/stpmic1.c | 20 drivers/misc/ibmasm/ibmasmfs.c | 7 drivers/misc/ibmasm/lowlevel.c | 12 drivers/misc/ibmasm/remote.c | 5 drivers/mmc/core/block.c | 12 drivers/mmc/core/card.h | 5 drivers/mmc/core/queue.c | 8 drivers/mmc/core/queue.h | 3 drivers/mmc/core/quirks.h | 9 drivers/mmc/host/sdhci-of-dwcmshc.c | 19 drivers/mtd/devices/docg3.c | 8 drivers/mtd/spi-nor/debugfs.c | 4 drivers/mtd/spi-nor/sst.c | 50 + drivers/net/bonding/bond_main.c | 6 drivers/net/can/usb/ucan.c | 2 drivers/net/ethernet/ibm/ibmveth.c | 22 drivers/net/ethernet/ibm/ibmveth.h | 1 drivers/net/ethernet/micrel/ks8851.h | 6 drivers/net/ethernet/micrel/ks8851_common.c | 69 +- drivers/net/ethernet/micrel/ks8851_par.c | 15 drivers/net/ethernet/micrel/ks8851_spi.c | 11 drivers/net/ethernet/microsoft/mana/mana_en.c | 11 drivers/net/ethernet/stmicro/stmmac/chain_mode.c | 2 drivers/net/ethernet/stmicro/stmmac/common.h | 2 drivers/net/ethernet/stmicro/stmmac/ring_mode.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 47 - drivers/net/ethernet/wangxun/libwx/wx_hw.c | 7 drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 3 drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c | 2 drivers/net/phy/mdio_bus.c | 4 drivers/net/wireless/ath/ath5k/base.c | 3 drivers/net/wireless/broadcom/b43/xmit.c | 3 drivers/net/wireless/broadcom/b43legacy/xmit.c | 3 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 6 drivers/net/wireless/marvell/mwifiex/init.c | 2 drivers/net/wireless/mediatek/mt76/mt76_connac.h | 6 drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c | 4 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c | 3 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h | 2 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 7 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 3 drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 51 + drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 28 drivers/net/wireless/realtek/rtw88/pci.c | 3 drivers/net/wireless/rsi/rsi_common.h | 5 drivers/net/wwan/t7xx/t7xx_modem_ops.c | 20 drivers/net/wwan/t7xx/t7xx_port_ctrl_msg.c | 18 drivers/net/wwan/t7xx/t7xx_port_proxy.h | 2 drivers/nvme/host/apple.c | 6 drivers/nvme/host/core.c | 2 drivers/nvme/host/pci.c | 2 drivers/nvme/target/core.c | 2 drivers/of/base.c | 2 drivers/of/dynamic.c | 2 drivers/of/platform.c | 2 drivers/of/unittest.c | 1 drivers/parisc/lasi.c | 12 drivers/pci/endpoint/functions/pci-epf-mhi.c | 4 drivers/pci/endpoint/functions/pci-epf-ntb.c | 56 - drivers/pci/pci.c | 7 drivers/pci/pcie/aer.c | 2 drivers/platform/x86/hp/hp-wmi.c | 5 drivers/power/supply/axp288_charger.c | 19 drivers/power/supply/max17042_battery.c | 2 drivers/pwm/pwm-imx-tpm.c | 8 drivers/regulator/act8945a-regulator.c | 3 drivers/regulator/bd9571mwv-regulator.c | 3 drivers/regulator/max77650-regulator.c | 2 drivers/regulator/mt6357-regulator.c | 2 drivers/regulator/rk808-regulator.c | 3 drivers/remoteproc/xlnx_r5_remoteproc.c | 20 drivers/rtc/rtc-ntxec.c | 2 drivers/scsi/sd.c | 1 drivers/spi/spi-at91-usart.c | 8 drivers/spi/spi-atmel.c | 8 drivers/spi/spi-bcm63xx.c | 8 drivers/spi/spi-bcmbca-hsspi.c | 4 drivers/spi/spi-cadence.c | 15 drivers/spi/spi-coldfire-qspi.c | 10 drivers/spi/spi-dln2.c | 8 drivers/spi/spi-fsl-espi.c | 10 drivers/spi/spi-fsl-spi.c | 14 drivers/spi/spi-img-spfi.c | 8 drivers/spi/spi-imx.c | 5 drivers/spi/spi-lantiq-ssc.c | 8 drivers/spi/spi-meson-spicc.c | 2 drivers/spi/spi-microchip-core-qspi.c | 41 - drivers/spi/spi-mpc52xx.c | 3 drivers/spi/spi-mtk-nor.c | 4 drivers/spi/spi-omap2-mcspi.c | 8 drivers/spi/spi-orion.c | 9 drivers/spi/spi-qup.c | 8 drivers/spi/spi-rockchip.c | 4 drivers/spi/spi-rspi.c | 10 drivers/spi/spi-s3c64xx.c | 9 drivers/spi/spi-sh-hspi.c | 10 drivers/spi/spi-sprd.c | 8 drivers/spi/spi-sun4i.c | 80 +- drivers/spi/spi-sun6i.c | 154 ++--- drivers/spi/spi-synquacer.c | 88 +-- drivers/spi/spi-tegra114.c | 8 drivers/spi/spi-tegra20-sflash.c | 8 drivers/spi/spi-ti-qspi.c | 97 +-- drivers/spi/spi-topcliff-pch.c | 6 drivers/spi/spi-uniphier.c | 212 +++---- drivers/spi/spi-zynq-qspi.c | 79 -- drivers/spi/spi-zynqmp-gqspi.c | 4 drivers/spi/spi.c | 63 +- drivers/staging/media/atomisp/pci/atomisp_ioctl.c | 4 drivers/staging/media/imx/imx-media-csi.c | 40 - drivers/staging/vme_user/vme_fake.c | 2 drivers/target/target_core_configfs.c | 2 drivers/thermal/sprd_thermal.c | 4 drivers/thermal/thermal_core.c | 7 drivers/usb/chipidea/core.c | 45 - drivers/usb/chipidea/otg.c | 7 drivers/usb/class/usblp.c | 3 drivers/usb/common/ulpi.c | 5 drivers/usb/dwc3/core.c | 12 drivers/usb/gadget/udc/omap_udc.c | 4 drivers/usb/host/xhci.c | 1 drivers/usb/serial/option.c | 4 drivers/usb/typec/tcpm/tcpm.c | 2 drivers/video/fbdev/core/fb_defio.c | 179 +++++- drivers/video/fbdev/core/fbcon_rotate.c | 5 drivers/video/fbdev/udlfb.c | 31 + fs/binfmt_elf.c | 2 fs/btrfs/ioctl.c | 5 fs/btrfs/space-info.c | 2 fs/ceph/dir.c | 6 fs/erofs/decompressor.c | 1 fs/erofs/dir.c | 28 fs/ext2/inode.c | 14 fs/ext4/extents.c | 15 fs/ext4/xattr.c | 6 fs/f2fs/data.c | 32 - fs/f2fs/extent_cache.c | 17 fs/f2fs/f2fs.h | 2 fs/f2fs/inode.c | 2 fs/f2fs/node.c | 17 fs/f2fs/segment.c | 6 fs/f2fs/super.c | 11 fs/hfsplus/bfind.c | 51 + fs/hfsplus/catalog.c | 4 fs/hfsplus/dir.c | 2 fs/hfsplus/hfsplus_fs.h | 9 fs/hfsplus/super.c | 6 fs/isofs/export.c | 2 fs/isofs/rock.c | 9 fs/notify/fsnotify.c | 2 fs/notify/inotify/inotify_user.c | 1 fs/notify/mark.c | 18 fs/ntfs3/run.c | 18 fs/ocfs2/aops.c | 74 +- fs/smb/client/cached_dir.c | 8 fs/smb/client/cifsacl.c | 177 ++++-- fs/smb/client/cifsacl.h | 91 --- fs/smb/client/smb2inode.c | 12 fs/smb/client/smb2misc.c | 3 fs/smb/client/smb2ops.c | 11 fs/smb/common/smbacl.h | 122 ++++ fs/smb/server/connection.c | 28 fs/smb/server/connection.h | 6 fs/smb/server/smb2pdu.c | 4 fs/smb/server/smbacl.c | 48 + fs/smb/server/smbacl.h | 113 ---- fs/smb/server/transport_rdma.c | 5 fs/smb/server/transport_tcp.c | 25 fs/smb/server/vfs_cache.c | 40 + fs/tracefs/event_inode.c | 14 fs/tracefs/inode.c | 5 fs/tracefs/internal.h | 3 fs/udf/misc.c | 8 fs/udf/super.c | 4 fs/userfaultfd.c | 2 fs/xfs/xfs_buf.c | 1 include/linux/bpf_verifier.h | 31 - include/linux/damon.h | 2 include/linux/device.h | 45 + include/linux/f2fs_fs.h | 1 include/linux/fb.h | 4 include/linux/fsnotify_backend.h | 1 include/linux/fwnode.h | 44 + include/linux/mmap_lock.h | 6 include/linux/mmc/card.h | 1 include/linux/padata.h | 4 include/linux/printk.h | 13 include/linux/randomize_kstack.h | 26 include/linux/sched.h | 4 include/linux/tpm_eventlog.h | 9 include/linux/usb.h | 3 include/net/mana/mana.h | 1 include/net/mctp.h | 3 include/trace/events/rxrpc.h | 6 include/video/udlfb.h | 1 init/main.c | 1 io_uring/poll.c | 14 io_uring/timeout.c | 4 kernel/bpf/verifier.c | 236 +++++--- kernel/exit.c | 3 kernel/fork.c | 2 kernel/locking/rtmutex.c | 13 kernel/padata.c | 136 +--- kernel/regset.c | 6 kernel/sched/core.c | 2 kernel/sched/rt.c | 2 kernel/sched/sched.h | 2 kernel/taskstats.c | 1 kernel/trace/trace_probe.c | 6 kernel/trace/trace_probe.h | 4 kernel/tracepoint.c | 2 lib/crypto/mpi/mpicoder.c | 2 lib/scatterlist.c | 8 lib/test_hmm.c | 86 +-- lib/ts_kmp.c | 18 mm/damon/core.c | 37 + mm/damon/lru_sort.c | 88 +-- mm/damon/reclaim.c | 88 +-- mm/damon/sysfs-schemes.c | 12 mm/hugetlb.c | 1 net/batman-adv/bat_iv_ogm.c | 85 ++- net/batman-adv/bridge_loop_avoidance.c | 11 net/batman-adv/main.c | 1 net/batman-adv/tp_meter.c | 116 +++- net/batman-adv/tp_meter.h | 1 net/batman-adv/types.h | 4 net/bluetooth/hci_conn.c | 19 net/bluetooth/hci_event.c | 45 + net/bluetooth/l2cap_sock.c | 9 net/bluetooth/mgmt.c | 262 ++++++--- net/bluetooth/mgmt_util.c | 46 + net/bluetooth/mgmt_util.h | 3 net/bridge/br_arp_nd_proxy.c | 8 net/bridge/br_fdb.c | 28 net/caif/cfsrvl.c | 14 net/ceph/auth.c | 4 net/ceph/mon_client.c | 2 net/core/flow_dissector.c | 13 net/core/rtnetlink.c | 1 net/ipv4/ah4.c | 29 - net/ipv4/icmp.c | 8 net/ipv4/inet_connection_sock.c | 3 net/ipv6/ah6.c | 27 net/ipv6/exthdrs.c | 9 net/ipv6/ip6_gre.c | 5 net/ipv6/rpl_iptunnel.c | 9 net/ipv6/seg6_iptunnel.c | 12 net/ipv6/xfrm6_protocol.c | 4 net/mac80211/mlme.c | 9 net/mac80211/rx.c | 2 net/mctp/route.c | 8 net/mptcp/protocol.c | 3 net/mptcp/sockopt.c | 12 net/mptcp/subflow.c | 4 net/netfilter/nft_bitwise.c | 3 net/openvswitch/vport-netdev.c | 6 net/qrtr/ns.c | 86 ++- net/rds/message.c | 20 net/rds/rdma.c | 4 net/rxrpc/ar-internal.h | 1 net/rxrpc/call_event.c | 27 net/rxrpc/conn_event.c | 44 + net/rxrpc/io_thread.c | 24 net/rxrpc/rxkad.c | 112 +-- net/rxrpc/skbuff.c | 9 net/sched/sch_red.c | 2 net/sctp/socket.c | 9 net/smc/smc_clc.c | 4 net/strparser/strparser.c | 8 net/unix/af_unix.c | 3 net/vmw_vsock/af_vsock.c | 6 net/vmw_vsock/hyperv_transport.c | 4 net/vmw_vsock/virtio_transport_common.c | 11 net/xfrm/xfrm_state.c | 12 net/xfrm/xfrm_user.c | 1 security/selinux/hooks.c | 3 security/selinux/selinuxfs.c | 54 - sound/aoa/codecs/onyx.c | 104 +-- sound/aoa/codecs/tas.c | 113 +--- sound/aoa/core/gpio-feature.c | 20 sound/aoa/core/gpio-pmf.c | 26 sound/aoa/soundbus/i2sbus/core.c | 12 sound/aoa/soundbus/i2sbus/pcm.c | 143 ++--- sound/core/control.c | 4 sound/core/misc.c | 44 - sound/core/seq/oss/seq_oss_rw.c | 6 sound/core/seq/seq_clientmgr.c | 9 sound/core/seq/seq_clientmgr.h | 5 sound/core/seq/seq_ump_client.c | 4 sound/drivers/pcmtest.c | 19 sound/firewire/tascam/tascam-hwdep.c | 1 sound/pci/ctxfi/ctatc.c | 3 sound/pci/hda/cs35l56_hda.c | 19 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/fsl/fsl_easrc.c | 2 sound/soc/intel/boards/bytcr_wm5102.c | 1 sound/soc/qcom/qdsp6/q6apm-dai.c | 1 sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 sound/soc/qcom/qdsp6/q6apm.c | 3 sound/soc/sof/compress.c | 3 sound/usb/6fire/control.c | 10 sound/usb/caiaq/control.c | 52 + sound/usb/caiaq/device.c | 35 - sound/usb/caiaq/input.c | 2 sound/usb/endpoint.c | 6 sound/usb/format.c | 2 sound/usb/midi2.c | 9 sound/usb/misc/ua101.c | 7 sound/usb/mixer.c | 7 sound/usb/mixer_quirks.c | 12 sound/usb/stream.c | 4 tools/accounting/getdelays.c | 41 + tools/accounting/procacct.c | 40 + tools/testing/ktest/ktest.pl | 2 tools/testing/selftests/bpf/progs/verifier_spill_fill.c | 281 ++++++++++ tools/testing/selftests/bpf/progs/verifier_subprog_precision.c | 87 ++- tools/testing/selftests/bpf/verifier/precise.c | 38 - tools/testing/selftests/mqueue/setting | 1 tools/testing/selftests/mqueue/settings | 1 448 files changed, 5508 insertions(+), 2882 deletions(-)
Aaro Koskinen (1):
USB: omap_udc: DMA: Don't enable burst 4 mode
Abdun Nihaal (1):
media: pci: zoran: fix potential memory leak in zoran_probe()
Alex Deucher (3):
drm/radeon: add missing revision check for CI drm/amdgpu/pm: add missing revision check for CI drm/amdgpu/pm: align Hawaii mclk workaround with radeon
Alexander Koskovich (1):
media: i2c: ov8856: free control handler on error in ov8856_init_controls()
Alistair Popple (1):
lib: test_hmm: evict device pages on file close to avoid use-after-free
Alysa Liu (2):
drm/amdkfd: Add upper bound check for num_of_nodes drm/amdkfd: validate SVM ioctl nattr against buffer size
Amir Shetaia (1):
drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure
Amit Kumar Mahapatra (1):
mtd: spi-nor: sst: Fix SST write failure
Amit Sunil Dhamne (1):
usb: typec: tcpm: reset internal port states on soft reset AMS
Andrea Mayer (2):
seg6: fix seg6 lwtunnel output redirect for L2 reduced encap mode
net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels
Andrii Nakryiko (10):
bpf: support non-r10 register spill/fill to/from stack in precision tracking selftests/bpf: add stack access precision test
bpf: preserve STACK_ZERO slots on partial reg spills selftests/bpf: validate STACK_ZERO is preserved on subreg spill
bpf: preserve constant zero when doing partial register restore selftests/bpf: validate zero preservation for sub-slot loads
bpf: track aligned STACK_ZERO cases as imprecise spilled registers selftests/bpf: validate precision logic in partial_stack_load_preserves_zeros
bpf: handle fake register spill to stack with BPF_ST_MEM instruction selftests/bpf: validate fake register spill/fill precision backtracking logic
André Draszik (1):
power: supply: max17042: avoid overflow when determining health
Ankit Soni (1):
iommu/amd: serialize sequence allocation under concurrent TLB invalidations
Anshuman Khandual (1):
arm64/mm: Enable batched TLB flush in unmap_hotplug_range()
Ao Zhou (1):
net: rds: fix MR cleanup on copy error
Ard Biesheuvel (1):
crypto: nx - Migrate to scomp API
Arjan van de Ven (1):
drm/amdgpu: fix zero-size GDS range init on RDNA4
Arnd Bergmann (1):
tpm: avoid -Wunused-but-set-variable
Ashutosh Desai (1):
drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs()
Bartosz Golaszewski (1):
gpio: of: clear OF_POPULATED on hog nodes in remove path
Ben Levinsky (1):
remoteproc: xlnx: Only access buffer information if IPI is buffered
Ben Morris (1):
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
Bence Csókás (1):
mtd: spi-nor: sst: Factor out common write operation to sst_nor_write_data()
Benjamin Cheng (7):
drm/amdgpu: Add bounds checking to ib_{get,set}_value drm/amdgpu/vcn4: Prevent OOB reads when parsing IB drm/amdgpu/vce: Prevent partial address patches drm/amdgpu/vcn4: Prevent OOB reads when parsing dec msg drm/amdgpu/vcn3: Prevent OOB reads when parsing dec msg drm/amdgpu/vcn3: Avoid overflow on msg bound check drm/amdgpu/vcn4: Avoid overflow on msg bound check
Bin Liu (1):
mmc: block: use single block write in retry
Bjoern Doebel (1):
smb: client: use kzalloc to zero-initialize security descriptor buffer
Catherine (1):
wifi: mac80211: drop stray 'static' from fast-RX rx_result
Cen Zhang (1):
f2fs: add READ_ONCE() for i_blocks in f2fs_update_inode()
Chaitanya Kulkarni (1):
nvmet: avoid recursive nvmet-wq flush in nvmet_ctrl_free
Chao Yu (2):
f2fs: fix to detect potential corrupted nid in free_nid_list
f2fs: fix to do sanity check on dcc->discard_cmd_cnt conditionally
Chen Ni (1):
media: i2c: imx219: Check return value of devm_gpiod_get_optional() in imx219_probe()
Chen Zhao (1):
IB/core: Fix zero dmac race in neighbor resolution
ChenXiaoSong (1):
smb: move some duplicate definitions to common/smbacl.h
Chia-Ming Chang (2):
md/raid5: fix soft lockup in retry_aligned_read()
inotify: fix watch count leak when fsnotify_add_inode_mark_locked() fails
Christian A. Ehrhardt (2):
lib/scatterlist: fix length calculations in extract_kvec_to_sg lib/scatterlist: fix temp buffer in extract_user_to_sg()
Conor Dooley (1):
clk: microchip: mpfs-ccc: fix out of bounds access during output registration
Corey Minyard (5):
ipmi: Add limits to event and receive message requests
ipmi: Check event message buffer response for bad data ipmi:si: Return state to normal if message allocation fails ipmi:ssif: Fix a shutdown race
ipmi:ssif: Clean up kthread on errors
Cássio Gabriel (16):
ALSA: usb-audio: stop parsing UAC2 rates at MAX_NR_RATES
ALSA: usb-audio: Avoid false E-MU sample-rate notifications
ALSA: usb-audio: Fix Audio Advantage Micro II SPDIF switch
ALSA: aoa: i2sbus: fix OF node lifetime handling
ALSA: seq_oss: return full count for successful SEQ_FULLSIZE writes
ALSA: caiaq: Fix control_put() result and cache rollback
ALSA: 6fire: Fix input volume change detection
ALSA: pcmtest: Fix resource leaks in module init error paths
ALSA: usb-audio: midi2: Restart output URBs on resume
ALSA: usb-audio: Fix UAC3 cluster descriptor size check
ALSA: firewire-tascam: Do not drop unread control events
ASoC: Intel: bytcr_wm5102: Fix MCLK leak on platform_clock_control error
ALSA: aoa: i2sbus: clear stale prepared state
ALSA: hda: cs35l56: Propagate ASP TX source control errors
ALSA: core: Serialize deferred fasync state checks
ALSA: seq: Fix UMP group 16 filtering
DaeMyung Kang (1):
ksmbd: reset rcount per connection in ksmbd_conn_wait_idle_sess_id()
Daniel Hodges (2):
wifi: mwifiex: fix use-after-free in mwifiex_adapter_cleanup()
PCI: epf-mhi: Return 0, not remaining timeout, when eDMA ops complete
David Carlier (3):
eventfs: Hold eventfs_mutex and SRCU when remount walks events
tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func()
Bluetooth: hci_conn: fix potential UAF in create_big_sync
David Howells (6):
rxrpc: Fix memory leaks in rxkad_verify_response()
rxrpc: Fix rxkad crypto unalignment handling
rxrpc: Fix re-decryption of RESPONSE packets
rxrpc: Fix potential UAF after skb_unshare() failure
rxrpc: Fix rxrpc_input_call_event() to only unshare DATA packets
rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
David Lechner (1):
iio: adc: ti-ads7950: use iio_push_to_buffers_with_ts_unaligned()
David Windsor (1):
selinux: don't reserve xattr slot when we won't fill it
David Woodhouse (1):
KVM: arm64: vgic: Fix IIDR revision field extracted from wrong value
Dawei Feng (1):
rbd: fix null-ptr-deref when device_add_disk() fails
Deepanshu Kartikey (3):
ext4: fix bounds check in check_xattrs() to prevent out-of-bounds access
ALSA: caiaq: fix usb_dev refcount leak on probe failure
hfsplus: fix uninit-value by validating catalog record size
Denis M. Karpov (1):
userfaultfd: allow registration of ranges below mmap_min_addr
Deren Wu (1):
wifi: mt76: connac: introduce helper for mt7925 chipset
Dong Chenchen (1):
net: Fix icmp host relookup triggering ip_rt_bug
Douglas Anderson (4):
regset: use kvzalloc() for regset_get_alloc()
device property: Make modifications of fwnode "flags" thread safe driver core: Don't let a device probe until it's ready driver core: Add kernel-doc for DEV_FLAG_COUNT enum value
Dudu Lu (1):
vsock/virtio: fix accept queue count leak on transport mismatch
Eric Biggers (5):
crypto: arm64/aes - Fix 32-bit aes_mac_update() arg treated as 64-bit
dm-verity-fec: correctly reject too-small FEC devices
dm-verity-fec: correctly reject too-small hash devices
net: ipv4: stop checking crypto_ahash_alignmask
net: ipv6: stop checking crypto_ahash_alignmask
Fabio Porcedda (1):
USB: serial: option: add Telit Cinterion LE910Cx compositions
Fan Wu (1):
media: mtk-jpeg: fix use-after-free in release path due to uncancelled work
Fedor Pchelkin (2):
wifi: rtw88: check for PCI upstream bridge existence
nvme-apple: drop invalid put of admin queue reference count
Felix Gu (2):
spi: meson-spicc: Fix double-put in remove path
usb: ulpi: fix memory leak on ulpi_register() error paths
Francesco Dolcini (1):
arm64: dts: ti: am62-verdin: Enable pullup for eMMC data pins
Gang Yan (2):
mptcp: sockopt: set timestamp flags on subflow socket, not msk
mptcp: fix scheduling with atomic in timestamp sockopt
Gao Xiang (1):
erofs: fix the out-of-bounds nameoff handling for trailing dirents
Greg Kroah-Hartman (8):
drm/nouveau: fix u32 overflow in pushbuf reloc bounds check
leds: qcom-lpg: Check for array overflow when selecting the high resolution
LoongArch: Add spectre boundry for syscall dispatch table
ipv6: rpl: reserve mac_len headroom when recompressed SRH grows
scsi: target: configfs: Bound snprintf() return in tg_pt_gp_members_show()
usb: usblp: fix heap leak in IEEE 1284 device ID via short response
usb: usblp: fix uninitialized heap leak via LPGETSTATUS ioctl Linux 6.6.140
Guangshuo Li (3):
ALSA: pcmtest: fix reference leak on failed device registration
ACPI: scan: Use acpi_dev_put() in object add error paths
btrfs: fix double free in create_space_info() error path
Gustavo A. R. Silva (1):
crypto: nx - Avoid -Wflex-array-member-not-at-end warning
Hamza Mahfooz (1):
hv_sock: fix ARM64 support
Haoxiang Li (3):
crypto: ccree - fix a memory leak in cc_mac_digest()
media: omap3isp: drop the use count of v4l2 pipeline
xfs: fix a resource leak in xfs_alloc_buftarg()
Harin Lee (1):
ALSA: ctxfi: Add fallback to default RSR for S/PDIF
Helge Deller (1):
parisc: _llseek syscall is only available for 32-bit userspace
Heming Zhao (1):
ocfs2: split transactions in dio completion to avoid credit exhaustion
Herbert Xu (3):
padata: Fix pd UAF once and for all
padata: Remove comment for reorder_work
crypto: pcrypt - Fix handling of MAY_BACKLOG requests
Hongling Zeng (1):
parisc: Fix IRQ leak in LASI driver
Huacai Chen (2):
LoongArch: Show CPU vulnerabilites correctly
LoongArch: Use per-root-bridge PCIH flag to skip mem resource fixup
Hyunwoo Kim (1):
rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
Ilya Maximets (1):
openvswitch: vport: fix self-deadlock on release of tunnel ports
Jacqueline Wong (2):
tpm: tpm_tis: add error logging for data transfer
tpm: tpm_tis: stop transmit if retries are exhausted
Jamal Hadi Salim (1):
net/sched: sch_red: Replace direct dequeue call with peek and qdisc_dequeue_peeked
James Kim (1):
mtd: docg3: fix use-after-free in docg3_release()
Jann Horn (1):
exit: prevent preemption of oopsing TASK_DEAD task
Janne Grunau (1):
media: videobuf2: Set vma_flags in vb2_dma_sg_mmap
Jason Gunthorpe (4):
RDMA/hns: Fix unlocked call to hns_roce_qp_remove() RDMA/mlx4: Fix resource leak on error in mlx4_ib_create_srq() RDMA/ocrdma: Don't NULL deref uctx on errors in ocrdma_copy_pd_uresp() RDMA/vmw_pvrdma: Fix double free on pvrdma_alloc_ucontext() error path
Jens Axboe (2):
io_uring/poll: ensure EPOLL_ONESHOT is propagated for EPOLL_URING_WAKE io_uring/poll: fix multishot recv missing EOF on wakeup race
Jeongjun Park (1):
wifi: rsi: fix kthread lifetime race between self-exit and external-stop
Jesse.Zhang (1):
drm/amdgpu: Limit BO list entry count to prevent resource exhaustion
Jianpeng Chang (1):
Bluetooth: MGMT: Fix memory leak in set_ssp_complete
Jiawen Wu (3):
net: txgbe: fix firmware version check
net: txgbe: fix RTNL assertion warning when remove module
net: libwx: fix VF illegal register access
Jiexun Wang (4):
af_unix: Reject SIOCATMARK on non-stream sockets
batman-adv: reject new tp_meter sessions during teardown
batman-adv: stop caching unowned originator pointers in BAT IV
batman-adv: stop tp_meter sessions during mesh teardown
Jinjie Ruan (1):
ACPI: CPPC: Fix related_cpus inconsistency during CPU hotplug
Jiri Slaby (SUSE) (1):
wifi: ath5k: do not access array OOB
Johan Hovold (47):
spi: imx: fix use-after-free on unbind
rtc: ntxec: fix OF node reference imbalance
can: ucan: fix devres lifetime
spi: rockchip: fix controller deregistration
spi: zynqmp-gqspi: fix controller deregistration
spi: s3c64xx: fix NULL-deref on driver unbind
staging: vme_user: fix root device leak on init failure
clk: rk808: fix OF node reference imbalance
spi: topcliff-pch: fix use-after-free on unbind
spi: bcm63xx: fix controller deregistration
spi: atmel: fix controller deregistration
regulator: mt6357: fix OF node reference imbalance
regulator: max77650: fix OF node reference imbalance
regulator: rk808: fix OF node reference imbalance
regulator: act8945a: fix OF node reference imbalance
regulator: bd9571mwv: fix OF node reference imbalance
spi: lantiq-ssc: fix controller deregistration
spi: qup: fix controller deregistration
spi: at91-usart: fix controller deregistration
spi: dln2: fix controller deregistration
spi: s3c64xx: fix controller deregistration
spi: fsl-espi: fix controller deregistration
spi: omap2-mcspi: fix controller deregistration
spi: mtk-nor: fix controller deregistration
spi: sh-hspi: fix controller deregistration
spi: fsl: fix controller deregistration
spi: bcmbca-hsspi: fix controller deregistration
spi: coldfire-qspi: fix controller deregistration
spi: sprd: fix controller deregistration
spi: rspi: fix controller deregistration
spi: img-spfi: fix controller deregistration
spi: imx: fix runtime pm leak on probe deferral
spi: orion: fix runtime pm leak on unbind
spi: orion: fix clock imbalance on registration failure
spi: mpc52xx: fix use-after-free on unbind
spi: cadence: fix controller deregistration
spi: cadence: fix unclocked access on unbind
spi: fix resource leaks on device setup failure
spi: syncuacer: fix controller deregistration
spi: sun4i: fix controller deregistration
spi: ti-qspi: fix controller deregistration
spi: zynq-qspi: fix controller deregistration
spi: sun6i: fix controller deregistration
spi: tegra114: fix controller deregistration
spi: tegra20-sflash: fix controller deregistration
spi: uniphier: fix controller deregistration
spi: microchip-core-qspi: fix controller deregistration
Johannes Berg (1):
wifi: mac80211: remove station if connection prep fails
John B. Moore (2):
drm/amdgpu/gfx9: drop unnecessary 64-bit fence flag check in KIQ drm/amdgpu/sdma4: replace BUG_ON with WARN_ON in fence emission
Jonathan Santos (1):
iio: adc: ad7768-1: fix one-shot mode data acquisition
Joseph Salisbury (2):
ASoC: fsl_easrc: fix comment typo
sched: Use u64 for bandwidth ratio calculations
Josh Hunt (1):
md/raid10: fix deadlock with check operation and nowait requests
Josh Law (1):
lib/ts_kmp: fix integer overflow in pattern length calculation
Junrui Luo (5):
md/raid5: validate payload size before accessing journal metadata dm mirror: fix integer overflow in create_dirty_log() md/raid10: fix divide-by-zero in setup_geo() with zero far_copies RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init()
erofs: fix unsigned underflow in z_erofs_lz4_handle_overlap()
Kai Ma (1):
netfilter: reject zero shift in nft_bitwise
Kai Zen (1):
net: rtnetlink: zero ifla_vf_broadcast to avoid stack infoleak in rtnl_fill_vfinfo
Keenan Dong (1):
rtmutex: Use waiter::task instead of current in remove_waiter()
Kevin Cheng (1):
KVM: SVM: Inject #UD for INVLPGA if EFER.SVME=0
Koichiro Den (1):
PCI: endpoint: pci-epf-ntb: Remove duplicate resource teardown
Krishna Chomal (1):
platform/x86: hp-wmi: Ignore backlight and FnLock events
Krzysztof Kozlowski (1):
power: supply: axp288_charger: Do not cancel work before initializing it
Kumar Kartikeya Dwivedi (1):
bpf: Don't mark STACK_INVALID as STACK_MISC in mark_stack_slot_misc
Leon Yen (1):
wifi: mt76: mt7921: fix a potential clc buffer length underflow
Li Zetao (1):
spi: microchip-core-qspi: Use helper function devm_clk_get_enabled()
Linus Torvalds (1):
x86: shadow stacks: proper error handling for mmap lock
Long Li (1):
RDMA/mana_ib: Disable RX steering on RSS QP destroy
Longxuan Yu (1):
io_uring/poll: fix signed comparison in io_poll_get_ownership()
Luca Ceresoli (1):
drm/arcpgu: fix device node leak
Luiz Augusto von Dentz (3):
Bluetooth: MGMT: Fix possible UAFs
Bluetooth: hci_event: Fix OOB read and infinite loop in hci_le_create_big_complete_evt
Bluetooth: MGMT: Fix dangling pointer on mgmt_add_adv_patterns_monitor_complete
Lukas Wunner (2):
lib/crypto: mpi: Fix integer underflow in mpi_read_raw_from_sgl() PCI/AER: Stop ruling out unbound devices as error source
Luke Wang (1):
mmc: core: Optimize time for secure erase/trim for some Kingston eMMCs
Luxiao Xu (1):
net: strparser: fix skb_head leak in strp_abort_strp()
Lyes Bourennani (1):
batman-adv: fix integer overflow on buff_pos
Manivannan Sadhasivam (5):
net: qrtr: ns: Fix use-after-free in driver remove()
net: qrtr: ns: Free the node during ctrl_cmd_bye()
net: qrtr: ns: Limit the maximum server registration per node
net: qrtr: ns: Limit the maximum number of lookups
net: qrtr: ns: Limit the total number of nodes
Maoyi Xie (1):
ip6_gre: Use cached t->net in ip6erspan_changelink().
Marc Zyngier (1):
KVM: arm64: Wake-up from WFI when iqrchip is in userspace
Marek Szyprowski (1):
wifi: brcmfmac: Fix potential use-after-free issue when stopping watchdog task
Marek Vasut (3):
mfd: stpmic1: Attempt system shutdown twice in case PMIC is confused
net: ks8851: Reinstate disabling of BHs around IRQ handler
net: ks8851: Avoid excess softirq scheduling
Mark Brown (1):
ASoC: SOF: Don't allow pointer operations on unconfigured streams
Matthias Fend (1):
media: i2c: ov08d10: fix image vertical start setting
Matthieu Baerts (NGI0) (1):
mptcp: fastclose msk when linger time is 0
Max Kellermann (1):
ceph: only d_add() negative dentries when they are unhashed
Michael Bommarito (12):
um: drivers: call kernel_strrchr() explicitly in cow_user.c
Bluetooth: virtio_bt: clamp rx length before skb_put
Bluetooth: virtio_bt: validate rx pkt_type header length
udf: reject descriptors with oversized CRC length
isofs: validate Rock Ridge CE continuation extent against volume size
isofs: validate block number from NFS file handle in isofs_export_iget
smb: client: validate dacloffset before building DACL pointers RDMA/rxe: Reject non-8-byte ATOMIC_WRITE payloads RDMA/rxe: Reject unknown opcodes before ICRC processing
ksmbd: require minimum ACE size in smb_check_perm_dacl()
smb: client: validate the whole DACL before rewriting it in cifsacl
xfrm: ah: account for ESN high bits in async callbacks
Michael Tretter (1):
media: staging: imx: request mbus_config in csi_start
Michal Kosiorek (1):
xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete
Michal Pecio (1):
usb: xhci: Make usb_host_endpoint.hcpriv survive endpoint_disable()
Miklos Szeredi (1):
fanotify: fix false positive on permission events
Mikulas Patocka (3):
dm-thin: fix metadata refcount underflow
dm: don't report warning when doing deferred remove
dm: fix a buffer overflow in ioctl processing
Ming Qian (1):
media: amphion: Fix race between m2m job_abort and device_run
Mingming Cao (1):
ibmveth: Disable GSO for packets with small MSS
Myeonghun Pak (1):
hwmon: (corsair-psu) Close HID device on probe errors
Naman Jain (2):
block: add pgmap check to biovec_phys_mergeable
block: relax pgmap check in bio_add_page for compatible zone device pages
Namjae Jeon (4):
smb: common: change the data type of num_aces to le16
ksmbd: use msleep instaed of schedule_timeout_interruptible()
ksmbd: replace connection list with hash table
ksmbd: fix use-after-free in __ksmbd_close_fd() via durable scavenger
Nan Li (1):
net/rds: handle zerocopy send cleanup before the message is queued
Nathan Chancellor (1):
extract-cert: Wrap key_pass with '#ifdef USE_PKCS11_ENGINE'
Nikolay Aleksandrov (1):
bonding: fix use-after-free due to enslave fail after slave array update
Norbert Szetei (1):
vsock: fix buffer size clamping order
Oliver Neukum (4):
media: rc: xbox_remote: heed DMA restrictions
media: rc: streamzap: Error handling in probe
media: rc: ttusbir: respect DMA coherency rules
media: rc: igorplugusb: heed coherency rules
Paolo Bonzini (2):
KVM: SVM: check validity of VMCB controls when returning from SMM
KVM: x86: check for nEPT/nNPT in slow flush hypercalls
Paul E. McKenney (1):
exit: Sleep at TASK_IDLE when waiting for application core dump
Paul Louvel (2):
crypto: talitos - fix SEC1 32k ahash request limitation
crypto: talitos - rename first/last to first_desc/last_desc
Pavel Begunkov (1):
io_uring/timeout: check unused sqe fields
Pavitra Jha (1):
net: wwan: t7xx: validate port_count against message length in t7xx_port_enum_msg_handler
Pei Xiao (2):
spi: zynq-qspi: Simplify clock handling with devm_clk_get_enabled()
spi: uniphier: Simplify clock handling with devm_clk_get_enabled()
Philip Yang (1):
drm/amdgpu: zero-initialize GART table on allocation
Qingfang Deng (1):
flow_dissector: do not dissect PPPoE PFC frames
Quan Zhou (1):
wifi: mt76: mt7921: fix ROC abort flow interruption in mt7921_roc_work
Quentin Perret (1):
KVM: arm64: Fix initialisation order in __pkvm_init_finalise()
Rafael J. Wysocki (1):
thermal: core: Fix thermal zone governor cleanup issues
Rajat Gupta (1):
fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free
Raphael Zimmer (2):
libceph: Prevent potential null-ptr-deref in ceph_handle_auth_reply()
libceph: Fix slab-out-of-bounds access in auth message processing
Ricardo Ribalda (1):
media: uvcvideo: Enable VB2_DMABUF for metadata stream
Rick Edgecombe (1):
x86/shstk: Prevent deadlock during shstk sigreturn
Robert Beckett (2):
nvme-pci: add NVME_QUIRK_DISABLE_WRITE_ZEROES for Kingston OM3SGP4
nvme: respect NVME_QUIRK_DISABLE_WRITE_ZEROES when wzsl is set
Rong Zhang (1):
Revert "ALSA: usb: Increase volume range that triggers a warning"
Ruide Cao (1):
ipv4: icmp: validate reply type before using icmp_pointers
Ruijie Li (2):
net/smc: avoid early lgr access in smc_clc_wait_msg
xfrm: provide message size for XFRM_MSG_MAPPING
Russell King (Oracle) (2):
net: stmmac: avoid shadowing global buf_sz
net: stmmac: rename STMMAC_GET_ENTRY() -> STMMAC_NEXT_ENTRY()
Ryan Roberts (1):
randomize_kstack: Maintain kstack_offset per task
Sakari Ailus (1):
staging: media: atomisp: Disallow all private IOCTLs
Sam Edwards (1):
net: stmmac: Prevent NULL deref when RX memory exhausted
Sang-Heon Jeon (1):
mm/hugetlb_cma: round up per_node before logging it
Sanjaikumar V S (1):
mtd: spi-nor: sst: Fix write enable before AAI sequence
Sanman Pradhan (2):
hwmon: (ltc2992) Clamp threshold writes to hardware range
hwmon: (ltc2992) Fix u32 overflow in power read path
Sean Christopherson (3):
KVM: x86: Defer non-architectural deliver of exception payload to userspace read
KVM: SVM: Explicitly mark vmcb01 dirty after modifying VMCB intercepts
KVM: x86: Fix shadow paging use-after-free due to unexpected GFN
Sean Wang (2):
wifi: mt76: mt792x: describe USB WFSYS reset with a descriptor
wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling
Selvarasu Ganesan (1):
usb: dwc3: Move GUID programming after PHY initialization
Seohyeon Maeng (1):
udf: fix partition descriptor append bookkeeping
SeongJae Park (6):
mm/damon/core: use time_in_range_open() for damos quota window start mm/damon/sysfs-schemes: protect memcg_path kfree() with damon_sysfs_lock mm/damon/core: disallow time-quota setting zero esz mm/damon/core: implement damon_kdamond_pid() mm/damon/lru_sort: detect and use fresh enabled and kdamond_pid values mm/damon/reclaim: detect and use fresh enabled and kdamond_pid values
Sergey Senozhatsky (1):
zram: do not forget to endio for partial discard requests
Sergey Shtylyov (1):
media: dib8000: avoid division by 0 in dib8000_set_dds()
SeungJu Cheon (1):
sound: ua101: fix division by zero at probe
Shardul Bankar (2):
mptcp: use MPJoinSynAckHMacFailure for SynAck HMAC failure
mptcp: use MPTCP_RST_EMPTCP for ACK HMAC validation failure
Shawn Lin (1):
mmc: sdhci-of-dwcmshc: Disable clock before DLL configuration
Shivam Kalra (1):
ACPI: video: force native backlight on HP OMEN 16 (8A44)
Shrikanth Hegde (1):
cpuidle: powerpc: avoid double clear when breaking snooze
Shuai Xue (1):
PCI/AER: Clear only error bits in PCIe Device Status
Shuvam Pandey (1):
Bluetooth: hci_event: fix potential UAF in SSP passkey handlers
Shyam Prasad N (2):
cifs: abort open_cached_dir if we don't request leases
cifs: change_conf needs to be called for session setup
Simon Liebold (1):
selftests/mqueue: Fix incorrectly named file
Sina Hassani (1):
iommufd: Fix a race with concurrent allocation and unmap
Siwei Zhang (3):
Bluetooth: L2CAP: Fix null-ptr-deref in l2cap_sock_new_connection_cb()
Bluetooth: L2CAP: Fix null-ptr-deref in l2cap_sock_state_change_cb()
Bluetooth: L2CAP: Fix null-ptr-deref in l2cap_sock_get_sndtimeo_cb()
Sohei Koyama (1):
ext4: fix missing brelse() in ext4_xattr_inode_dec_ref_all()
Sourabh Jain (1):
powerpc/kdump: fix KASAN sanitization flag for core_$(BITS).o
Srinivas Kandagatla (3):
ASoC: qcom: q6apm-dai: reset queue ptr on trigger stop
ASoC: qcom: q6apm-lpass-dai: Fix multiple graph opens
ASoC: qcom: q6apm: remove child devices when apm is removed
Stefan Eichenberger (1):
clk: imx: imx8-acm: fix flags for acm clocks
Stefano Garzarella (1):
vsock/virtio: fix length and offset in tap skb for split packets
Stephen Smalley (2):
selinux: shrink critical section in sel_write_load()
selinux: prune /sys/fs/selinux/disable
Steven Rostedt (2):
ktest: Fix the month in the name of the failure directory tracing/probes: Limit size of event probe to 3K
Sven Eckelmann (4):
batman-adv: bla: prevent use-after-free when deleting claims
batman-adv: bla: only purge non-released claims
batman-adv: bla: put backbone reference on failed claim hash insert
batman-adv: tp_meter: fix tp_num leak on kmalloc failure
T.J. Mercier (1):
HID: playstation: Clamp num_touch_reports
Takashi Iwai (9):
ALSA: usb-audio: Evaluate packsize caps at the right place
ALSA: core: Fix potential data race at fasync handling
ALSA: caiaq: Handle probe errors properly
ALSA: caiaq: Fix potentially leftover ep1_in_urb at error path
ALSA: caiaq: Don't abort when no input device is available
ALSA: usb-audio: Avoid potential endless loop in convert_chmap_v3()
ALSA: aoa: Use guard() for mutex locks
ALSA: misc: Use guard() for spin locks
ALSA: seq: Notify client and port info changes
Tejas Bharambe (1):
ext4: validate p_idx bounds in ext4_ext_correct_indexes
Thomas Fourier (1):
crypto: hisilicon - Fix dma_unmap_single() direction
Thomas Zimmermann (4):
firmware: google: framebuffer: Do not mark framebuffer as busy
fbdev: defio: Disconnect deferred I/O from the lifetime of struct fb_info
firmware: google: framebuffer: Do not unregister platform device
fbcon: Avoid OOB font access if console rotation fails
Thorsten Blum (11):
crypto: atmel-aes - Fix 3-page memory leak in atmel_aes_buff_cleanup
crypto: atmel-ecc - Release client on allocation failure
crypto: atmel-tdes - fix DMA sync direction
crypto: atmel-sha204a - Fix potential UAF and memory leak in remove path thermal/drivers/sprd: Fix temperature clamping in sprd_thm_temp_to_rawdata thermal/drivers/sprd: Fix raw temperature clamping in sprd_thm_rawdata_to_temp
ALSA: aoa: Skip devices with no codecs in i2sbus_resume()
crypto: nx - fix bounce buffer leaks in nx842_crypto_{alloc,free}_ctx
printk: add print_hex_dump_devel()
crypto: caam - guard HMAC key hex dumps in hash_digest_key
crypto: nx - fix context leak in nx842_crypto_free_ctx
Tobias Gaertner (2):
ntfs3: add buffer boundary checks to run_unpack()
ntfs3: fix integer overflow in run_unpack() volume boundary check
Tommaso Soncin (1):
ASoC: amd: yc: Add HP OMEN Gaming Laptop 16-ap0xxx product line in quirk table
Tristan Madani (2):
wifi: b43legacy: enforce bounds check on firmware key index in RX path
wifi: b43: enforce bounds check on firmware key index in b43_rx()
Tudor Ambarus (1):
mtd: spi-nor: debugfs: fix out-of-bounds read in spi_nor_params_show()
Tvrtko Ursulin (1):
drm/amdgpu: Use vmemdup_array_user in amdgpu_bo_create_list_entry_array
Tyllis Xu (3):
misc: ibmasm: fix OOB MMIO read in ibmasm_handle_mouse_interrupt()
ibmasm: fix OOB reads in command_file_write due to missing size checks
ibmasm: fix heap over-read in ibmasm_send_i2o_message()
Uros Bizjak (1):
iommu/amd: Use atomic64_inc_return() in iommu.c
Uwe Kleine-König (2):
mtd: docg3: Convert to platform remove callback returning void
spi: spi-ti-qspi: Convert to platform remove callback returning void
Vasiliy Kovalev (1):
ext2: reject inodes with zero i_nlink and valid mode in ext2_iget()
Vasily Gorbik (1):
s390/debug: Reject zero-length input in debug_input_flush_fn()
Vinicius Costa Gomes (2):
dmaengine: idxd: Fix crash when the event log is disabled
dmaengine: idxd: Fix leaking event log memory
Viorel Suman (OSS) (1):
pwm: imx-tpm: Count the number of enabled channels in probe
Wang Jun (1):
media: saa7164: add ioremap return checks and cleanups
Wenmeng Liu (1):
media: i2c: imx412: Assert reset GPIO during probe
Wentao Guan (1):
LoongArch: Fix potential ADE in loongson_gpu_fixup_dma_hang()
Wentao Liang (1):
of: unittest: fix use-after-free in testdrv_probe()
Xu Yang (3):
usb: chipidea: otg: not wait vbus drop if use role_switch
usb: chipidea: core: allow ci_irq_handler() handle both ID and VBUS change
extcon: ptn5150: handle pending IRQ events during system resume
Yang Xiuwei (1):
scsi: sd: fix missing put_disk() when device_add(&disk_dev) fails
Yang Yingliang (6):
spi: synquacer: switch to use modern name
spi: sun4i: switch to use modern name
spi: spi-ti-qspi: switch to use modern name
spi: zynq-qspi: switch to use modern name
spi: sun6i: switch to use modern name
spi: uniphier: switch to use modern name
Yi Cong (1):
wifi: rtl8xxxu: fix potential use of uninitialized value
Yilin Zhu (1):
ipv6: xfrm6: release dst on error in xfrm6_rcv_encap()
Yiyang Chen (2):
tools/accounting: handle truncated taskstats netlink messages
taskstats: set version in TGID exit notifications
Yochai Eisenrich (1):
btrfs: fix btrfs_ioctl_space_info() slot_count TOCTOU which can lead to info-leak
Yongpeng Yang (4):
f2fs: fix fiemap boundary handling when read extent cache is incomplete
f2fs: fix incorrect multidevice info in trace_f2fs_map_blocks()
f2fs: fix node_cnt race between extent node destroy and writeback
f2fs: fix UAF caused by decrementing sbi->nr_pages[] in f2fs_write_end_io()
Yosry Ahmed (11):
KVM: nSVM: Mark all of vmcb02 dirty when restoring nested state
KVM: nSVM: Sync NextRIP to cached vmcb12 after VMRUN of L2
KVM: nSVM: Sync interrupt shadow to cached vmcb12 after VMRUN of L2
KVM: nSVM: Ensure AVIC is inhibited when restoring a vCPU to guest mode
KVM: nSVM: Use vcpu->arch.cr2 when updating vmcb12 on nested #VMEXIT
KVM: nSVM: Always inject a #GP if mapping VMCB12 fails on nested VMRUN
KVM: nSVM: Clear GIF on nested #VMEXIT(INVALID)
KVM: nSVM: Clear EVENTINJ fields in vmcb12 on nested #VMEXIT
KVM: nSVM: Clear tracking of L1->L2 NMI and soft IRQ on nested #VMEXIT
KVM: nSVM: Add missing consistency check for EFER, CR0, CR4, and CS
KVM: nSVM: Add missing consistency check for nCR3 validity
Yuan Zhaoming (1):
net: mctp: fix don't require received header reserved bits to be zero
Yucheng Lu (1):
crypto: authencesn - reject short ahash digests during instance creation
Yussuf Khalil (1):
drm/amd/display: Do not skip unrelated mode changes in DSC validation
Zhengchuan Liang (2):
net: caif: clear client service pointer on teardown
net: bridge: use a stable FDB dst snapshot in RCU readers
Zhenzhong Wu (1):
tcp: call sk_data_ready() after listener migration
Zilin Guan (1):
hfsplus: fix held lock freed on hfsplus_fill_super()
Ziqing Chen (1):
ALSA: control: Validate buf_len before strnlen() in snd_ctl_elem_init_enum_names()
Zisen Ye (2):
smb/client: fix out-of-bounds read in smb2_compound_op() smb/client: fix out-of-bounds read in symlink_data()
hkbinbin (1):
RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 139 +SUBLEVEL = 140 EXTRAVERSION = NAME = Pinguïn Aangedreven
arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi +10 -10
@@ -507,16 +507,16 @@ AM62X_IOPAD(0x15c, PIN_INPUT, 0) /* (AB22) MDIO0_MDIO */ /* ETH_1_MDIO, SODIMM /* On-module eMMC */ pinctrl_sdhci0: main-mmc0-default-pins { pinctrl-single,pins = < - AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */ - AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */ - AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */ - AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1) MMC0_DAT1 */ - AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3) MMC0_DAT2 */ - AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4) MMC0_DAT3 */ - AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2) MMC0_DAT4 */ - AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1) MMC0_DAT5 */ - AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2) MMC0_DAT6 */ - AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2) MMC0_DAT7 */ + AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */ + AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */ + AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */ + AM62X_IOPAD(0x210, PIN_INPUT_PULLUP, 0) /* (AA1) MMC0_DAT1 */ + AM62X_IOPAD(0x20c, PIN_INPUT_PULLUP, 0) /* (AA3) MMC0_DAT2 */ + AM62X_IOPAD(0x208, PIN_INPUT_PULLUP, 0) /* (Y4) MMC0_DAT3 */ + AM62X_IOPAD(0x204, PIN_INPUT_PULLUP, 0) /* (AB2) MMC0_DAT4 */ + AM62X_IOPAD(0x200, PIN_INPUT_PULLUP, 0) /* (AC1) MMC0_DAT5 */ + AM62X_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */ + AM62X_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */ >; };
arch/arm64/crypto/aes-modes.S +2 -2
@@ -838,7 +838,7 @@ AES_FUNC_START(aes_mac_update) encrypt_block v0, w2, x1, x7, w8 eor v0.16b, v0.16b, v4.16b cmp w3, wzr - csinv x5, x6, xzr, eq + csinv w5, w6, wzr, eq cbz w5, .Lmacout encrypt_block v0, w2, x1, x7, w8 st1 {v0.16b}, [x4] /* return dg */
@@ -852,7 +852,7 @@ AES_FUNC_START(aes_mac_update) eor v0.16b, v0.16b, v1.16b /* ..and xor with dg */ subs w3, w3, #1 - csinv x5, x6, xzr, eq + csinv w5, w6, wzr, eq cbz w5, .Lmacout .Lmacenc:
arch/arm64/kvm/arm.c +5 -0
@@ -557,6 +557,11 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,int kvm_arch_vcpu_runnable (struct kvm_vcpu *v) {bool irq_lines = *vcpu_hcr (v) & (HCR_VI |HCR_VF ); + + irq_lines |= (!irqchip_in_kernel (v->kvm) && + (kvm_timer_should_notify_user (v) || +kvm_pmu_should_notify_user (v))); +return ((irq_lines ||kvm_vgic_vcpu_pending_irq (v)) && !kvm_arm_vcpu_stopped (v) && !v->arch.pause); }
arch/arm64/kvm/hyp/nvhe/setup.c +3 -3
@@ -284,15 +284,15 @@ void __noreturn __pkvm_init_finalise(void) }; pkvm_pgtable.mm_ops = &pkvm_pgtable_mm_ops; - ret =fix_host_ownership (); + ret =fix_hyp_pgtable_refcnt ();if (ret) goto out; - ret =fix_hyp_pgtable_refcnt (); + ret =hyp_create_pcpu_fixmap ();if (ret) goto out; - ret =hyp_create_pcpu_fixmap (); + ret =fix_host_ownership ();if (ret) goto out;
arch/arm64/kvm/vgic/vgic-mmio-v2.c +1 -1
@@ -91,7 +91,7 @@ static int vgic_mmio_uaccess_write_v2_misc(struct kvm_vcpu *vcpu,* migration from old kernels to new kernels with legacy * userspace. */ - reg =FIELD_GET (GICD_IIDR_REVISION_MASK , reg); + reg =FIELD_GET (GICD_IIDR_REVISION_MASK , val);switch (reg) {case KVM_VGIC_IMP_REV_2 :case KVM_VGIC_IMP_REV_3 :
arch/arm64/kvm/vgic/vgic-mmio-v3.c +1 -1
@@ -167,7 +167,7 @@ static int vgic_mmio_uaccess_write_v3_misc(struct kvm_vcpu *vcpu,if ((reg ^ val) & ~GICD_IIDR_REVISION_MASK )return -EINVAL ; - reg =FIELD_GET (GICD_IIDR_REVISION_MASK , reg); + reg =FIELD_GET (GICD_IIDR_REVISION_MASK , val);switch (reg) {case KVM_VGIC_IMP_REV_2 :case KVM_VGIC_IMP_REV_3 :
arch/arm64/mm/mmu.c +20 -16
@@ -870,10 +870,14 @@ static void unmap_hotplug_pte_range(pmd_t *pmdp, unsigned long addr,WARN_ON (!pte_present (pte));pte_clear (&init_mm, addr, ptep); -flush_tlb_kernel_range (addr, addr +PAGE_SIZE ); -if (free_mapped) +if (free_mapped) { +/* CONT blocks are not supported in the vmemmap */ +WARN_ON (pte_cont (pte)); +flush_tlb_kernel_range (addr, addr +PAGE_SIZE );free_hotplug_page_range (pte_page (pte),PAGE_SIZE , altmap); + } +/* unmap_hotplug_range() flushes TLB for !free_mapped */ }while (addr +=PAGE_SIZE , addr < end); }
@@ -894,15 +898,14 @@ static void unmap_hotplug_pmd_range(pud_t *pudp, unsigned long addr,WARN_ON (!pmd_present (pmd));if (pmd_sect (pmd)) {pmd_clear (pmdp); - -/* -* One TLBI should be sufficient here as the PMD_SIZE -* range is mapped with a single block entry. -*/ -flush_tlb_kernel_range (addr, addr +PAGE_SIZE ); -if (free_mapped) +if (free_mapped) { +/* CONT blocks are not supported in the vmemmap */ +WARN_ON (pmd_cont (pmd)); +flush_tlb_kernel_range (addr, addr +PMD_SIZE );free_hotplug_page_range (pmd_page (pmd),PMD_SIZE , altmap); + } +/* unmap_hotplug_range() flushes TLB for !free_mapped */ continue ; }WARN_ON (!pmd_table (pmd));
@@ -927,15 +930,12 @@ static void unmap_hotplug_pud_range(p4d_t *p4dp, unsigned long addr,WARN_ON (!pud_present (pud));if (pud_sect (pud)) {pud_clear (pudp); - -/* -* One TLBI should be sufficient here as the PUD_SIZE -* range is mapped with a single block entry. -*/ -flush_tlb_kernel_range (addr, addr +PAGE_SIZE ); -if (free_mapped) +if (free_mapped) { +flush_tlb_kernel_range (addr, addr +PUD_SIZE );free_hotplug_page_range (pud_page (pud),PUD_SIZE , altmap); + } +/* unmap_hotplug_range() flushes TLB for !free_mapped */ continue ; }WARN_ON (!pud_table (pud));
@@ -965,6 +965,7 @@ static void unmap_hotplug_p4d_range(pgd_t *pgdp, unsigned long addr,static void unmap_hotplug_range (unsigned long addr,unsigned long end,bool free_mapped,struct vmem_altmap *altmap) { +unsigned long start = addr;unsigned long next;pgd_t *pgdp, pgd;
@@ -986,6 +987,9 @@ static void unmap_hotplug_range(unsigned long addr, unsigned long end,WARN_ON (!pgd_present (pgd));unmap_hotplug_p4d_range (pgdp, addr, next, free_mapped, altmap); }while (addr = next, addr < end); + +if (!free_mapped) +flush_tlb_kernel_range (start, end); } static void free_empty_pte_table(pmd_t *pmdp, unsigned long addr,
arch/loongarch/kernel/cpu-probe.c +7 -0
@@ -7,6 +7,7 @@#include <linux/init.h> #include <linux/kernel.h> #include <linux/ptrace.h> +#include <linux/cpu.h> #include <linux/smp.h> #include <linux/stddef.h> #include <linux/export.h>
@@ -327,3 +328,9 @@ void cpu_probe(void)cpu_report (); } + +ssize_t cpu_show_spectre_v1 (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return sysfs_emit (buf,"Mitigation: __user pointer sanitization\n" ); +}
arch/loongarch/kernel/syscall.c +2 -1
@@ -9,6 +9,7 @@#include <linux/entry-common.h> #include <linux/errno.h> #include <linux/linkage.h> +#include <linux/nospec.h> #include <linux/syscalls.h> #include <linux/unistd.h>
@@ -55,7 +56,7 @@ void noinstr do_syscall(struct pt_regs *regs) nr =syscall_enter_from_user_mode (regs, nr);if (nr < NR_syscalls) { - syscall_fn = sys_call_table[nr]; + syscall_fn = sys_call_table[array_index_nospec (nr, NR_syscalls)]; regs->regs[4 ] =syscall_fn (regs->orig_a0, regs->regs[5 ], regs->regs[6 ], regs->regs[7 ], regs->regs[8 ], regs->regs[9 ]); }
arch/loongarch/pci/acpi.c +5 -0
@@ -61,11 +61,16 @@ static void acpi_release_root_info(struct acpi_pci_root_info *ci)static int acpi_prepare_root_resources (struct acpi_pci_root_info *ci) {int status; +unsigned long long pci_h =0 ;struct resource_entry *entry, *tmp;struct acpi_device *device = ci->bridge; status =acpi_pci_probe_root_resources (ci);if (status >0 ) { +acpi_evaluate_integer (device->handle,"PCIH" ,NULL , &pci_h); +if (pci_h) +return status; +resource_list_for_each_entry_safe (entry, tmp, &ci->resources) {if (entry->res->flags &IORESOURCE_MEM ) { entry->offset = ci->root->mcfg_addr &GENMASK_ULL (63 ,40 );
arch/loongarch/pci/pci.c +3 -0
@@ -133,6 +133,9 @@ static void loongson_gpu_fixup_dma_hang(struct pci_dev *pdev, bool on) crtc_reg = regbase; crtc_offset =0x400 ;break ; +default : +iounmap (regbase); +return ; }for (i =0 ; i <CRTC_NUM_MAX ; i++, crtc_reg += crtc_offset) {
arch/parisc/kernel/syscalls/syscall.tbl +1 -1
@@ -154,7 +154,7 @@ # 137 was afs_syscall 138 common setfsuid sys_setfsuid 139 common setfsgid sys_setfsgid -140 common _llseek sys_llseek +140 32 _llseek sys_llseek 141 common getdents sys_getdents compat_sys_getdents 142 common _newselect sys_select compat_sys_select 143 common flock sys_flock
arch/powerpc/kexec/Makefile +1 -1
@@ -14,4 +14,4 @@ GCOV_PROFILE_core_$(BITS).o := n KCOV_INSTRUMENT_core_$(BITS).o := n UBSAN_SANITIZE_core_$(BITS).o := n KASAN_SANITIZE_core.o := n -KASAN_SANITIZE_core_$(BITS) := n +KASAN_SANITIZE_core_$(BITS).o := n
arch/s390/kernel/debug.c +5 -0
@@ -1434,6 +1434,11 @@ static int debug_input_flush_fn(debug_info_t *id, struct debug_view *view,char input_buf[1 ];int rc = user_len; +if (!user_len) { + rc = -EINVAL ; + goto out; + } +if (user_len >0x10000 ) user_len =0x10000 ;if (*offset !=0 ) {
arch/um/drivers/cow_user.c +7 -1
@@ -15,6 +15,12 @@#include "cow.h" #include "cow_sys.h" +/* +* arch/um/Makefile remaps strrchr to kernel_strrchr; call the kernel +* name directly to avoid glibc >= 2.43's C23 strrchr macro. +*/ +char *kernel_strrchr (const char *,int ); +#define PATH_LEN_V1 256/* unsigned time_t works until year 2106 */
@@ -153,7 +159,7 @@ static int absolutize(char *to, int size, char *from) errno);return -1 ; } - slash =strrchr (from,'/' ); + slash =kernel_strrchr (from,'/' );if (slash !=NULL ) { *slash ='\0' ;if (chdir (from)) {
arch/x86/kernel/shstk.c +29 -16
86 lines not on this page · raw message
arch/x86/kvm/hyperv.c +1 -1
@@ -1987,7 +1987,7 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)* flush). Translate the address here so the memory can be uniformly * read with kvm_read_guest(). */ -if (!hc->fast &&is_guest_mode (vcpu)) { +if (!hc->fast &&mmu_is_nested (vcpu)) { hc->ingpa =translate_nested_gpa (vcpu, hc->ingpa,0 ,NULL );if (unlikely (hc->ingpa ==INVALID_GPA ))return HV_STATUS_INVALID_HYPERCALL_INPUT ;
arch/x86/kvm/mmu/mmu.c +14 -21
@@ -182,6 +182,8 @@ struct kmem_cache *mmu_page_header_cache;static struct percpu_counter kvm_total_used_mmu_pages;static void mmu_spte_set (u64 *sptep,u64 spte); +static int mmu_page_zap_pte (struct kvm *kvm,struct kvm_mmu_page *sp, +u64 *spte,struct list_head *invalid_list);struct kvm_mmu_role_regs {const unsigned long cr0;
@@ -1194,19 +1196,6 @@ static void drop_spte(struct kvm *kvm, u64 *sptep)rmap_remove (kvm, sptep); } -static void drop_large_spte (struct kvm *kvm,u64 *sptep,bool flush) -{ -struct kvm_mmu_page *sp; - - sp =sptep_to_sp (sptep); -WARN_ON_ONCE (sp->role.level ==PG_LEVEL_4K ); - -drop_spte (kvm, sptep); - -if (flush) -kvm_flush_remote_tlbs_sptep (kvm, sptep); -} -/* * Write-protect on the specified @sptep, @pt_protect indicates whether * spte write-protection is caused by protecting shadow page table.
@@ -2350,7 +2339,8 @@ static struct kvm_mmu_page *kvm_mmu_get_child_sp(struct kvm_vcpu *vcpu, {union kvm_mmu_page_role role; -if (is_shadow_present_pte (*sptep) && !is_large_pte (*sptep)) +if (is_shadow_present_pte (*sptep) && !is_large_pte (*sptep) && +spte_to_child_sp (*sptep) &&spte_to_child_sp (*sptep)->gfn == gfn)return ERR_PTR (-EEXIST ); role =kvm_mmu_child_role (sptep, direct, access);
@@ -2428,13 +2418,16 @@ static void __link_shadow_page(struct kvm *kvm,BUILD_BUG_ON (VMX_EPT_WRITABLE_MASK !=PT_WRITABLE_MASK ); -/* -* If an SPTE is present already, it must be a leaf and therefore -* a large one. Drop it, and flush the TLB if needed, before -* installing sp. -*/ -if (is_shadow_present_pte (*sptep)) -drop_large_spte (kvm, sptep, flush); +if (is_shadow_present_pte (*sptep)) { +struct kvm_mmu_page *parent_sp; +LIST_HEAD (invalid_list); + + parent_sp =sptep_to_sp (sptep); +WARN_ON_ONCE (parent_sp->role.level ==PG_LEVEL_4K ); + +mmu_page_zap_pte (kvm, parent_sp, sptep, &invalid_list); +kvm_mmu_remote_flush_or_zap (kvm, &invalid_list, true); + } spte =make_nonleaf_spte (sp->spt,sp_ad_disabled (sp));
arch/x86/kvm/svm/nested.c +44 -12
151 lines not on this page · raw message
arch/x86/kvm/svm/svm.c +17 -0
@@ -2494,6 +2494,9 @@ static int invlpga_interception(struct kvm_vcpu *vcpu)gva_t gva =kvm_rax_read (vcpu);u32 asid =kvm_rcx_read (vcpu); +if (nested_svm_check_permissions (vcpu)) +return 1 ; +/* FIXME: Handle an address size prefix. */ if (!is_long_mode (vcpu)) gva = (u32 )gva;
@@ -4339,6 +4342,16 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu, u64 run_flags)svm_complete_interrupts (vcpu); +/* +* Update the cache after completing interrupts to get an accurate +* NextRIP, e.g. when re-injecting a soft interrupt. +* +* FIXME: Rework svm_get_nested_state() to not pull data from the +* cache (except for maybe int_ctl). +*/ +if (is_guest_mode (vcpu)) + svm->nested.ctl.next_rip = svm->vmcb->control.next_rip; +return svm_exit_handlers_fastpath (vcpu); }
@@ -4804,6 +4817,10 @@ static int svm_leave_smm(struct kvm_vcpu *vcpu, const union kvm_smram *smram) vmcb12 = map.hva;nested_copy_vmcb_control_to_cache (svm, &vmcb12->control);nested_copy_vmcb_save_to_cache (svm, &vmcb12->save); + +if (nested_svm_check_cached_vmcb12 (vcpu) <0 ) + goto unmap_save; + ret =enter_svm_guest_mode (vcpu, smram64->svm_guest_vmcb_gpa, vmcb12, false);if (ret)
arch/x86/kvm/svm/svm.h +2 -0
@@ -115,6 +115,7 @@ struct kvm_vmcb_info { };struct vmcb_save_area_cached { +struct vmcb_seg cs;u64 efer;u64 cr4;u64 cr3;
@@ -611,6 +612,7 @@ static inline int nested_svm_simple_vmexit(struct vcpu_svm *svm, u32 exit_code)int nested_svm_exit_handled (struct vcpu_svm *svm);int nested_svm_check_permissions (struct kvm_vcpu *vcpu); +int nested_svm_check_cached_vmcb12 (struct kvm_vcpu *vcpu);int nested_svm_check_exception (struct vcpu_svm *svm,unsigned nr,bool has_error_code,u32 error_code);int nested_svm_exit_special (struct vcpu_svm *svm);
arch/x86/kvm/x86.c +39 -23
99 lines not on this page · raw message
block/bio-integrity.c +2 -0
@@ -134,6 +134,8 @@ int bio_integrity_add_page(struct bio *bio, struct page *page,struct bio_vec *bv = &bip->bip_vec[bip->bip_vcnt -1 ];bool same_page = false; +if (!zone_device_pages_compatible (bv->bv_page, page)) +return 0 ;if (bvec_try_merge_hw_page (q, bv, page, len, offset, &same_page)) { bip->bip_iter.bi_size += len;
block/bio.c +9 -5
@@ -1098,11 +1098,15 @@ int bio_add_page(struct bio *bio, struct page *page,if (bio->bi_iter.bi_size >UINT_MAX - len)return 0 ; -if (bio->bi_vcnt >0 && -bvec_try_merge_page (&bio->bi_io_vec[bio->bi_vcnt -1 ], - page, len, offset, &same_page)) { - bio->bi_iter.bi_size += len; -return len; +if (bio->bi_vcnt >0 ) { +struct bio_vec *bv = &bio->bi_io_vec[bio->bi_vcnt -1 ]; + +if (!zone_device_pages_compatible (bv->bv_page, page)) +return 0 ; +if (bvec_try_merge_page (bv, page, len, offset, &same_page)) { + bio->bi_iter.bi_size += len; +return len; + } }if (bio->bi_vcnt >= bio->bi_max_vecs)
block/blk.h +21 -0
@@ -95,6 +95,8 @@ static inline bool biovec_phys_mergeable(struct request_queue *q,if (addr1 + vec1->bv_len != addr2)return false; +if (!zone_device_pages_have_same_pgmap (vec1->bv_page, vec2->bv_page)) +return false;if (xen_domain () && !xen_biovec_phys_mergeable (vec1, vec2->bv_page))return false;if ((addr1 | mask) != ((addr2 + vec2->bv_len -1 ) | mask))
@@ -102,6 +104,25 @@ static inline bool biovec_phys_mergeable(struct request_queue *q,return true; } +/* +* Check if two pages from potentially different zone device pgmaps can +* coexist as separate bvec entries in the same bio. +* +* The block DMA iterator (blk_dma_map_iter_start) caches the P2PDMA mapping +* state from the first segment and applies it to all subsequent segments, so +* P2PDMA pages from different pgmaps must not be mixed in the same bio. +* +* Other zone device types (FS_DAX, GENERIC) use the same dma_map_phys() path +* as normal RAM. PRIVATE and COHERENT pages never appear in bios. +*/ +static inline bool zone_device_pages_compatible (const struct page *a, +const struct page *b) +{ +if (is_pci_p2pdma_page (a) ||is_pci_p2pdma_page (b)) +return zone_device_pages_have_same_pgmap (a, b); +return true; +} +static inline bool __bvec_gap_to_prev (const struct queue_limits *lim,struct bio_vec *bprv,unsigned int offset) {
certs/extract-cert.c +5 -1
@@ -43,7 +43,9 @@ void format(void)exit (2 ); } +#ifdef USE_PKCS11_ENGINE static const char *key_pass; +#endif static BIO *wb;static char *cert_dst;static bool verbose;
@@ -135,7 +137,9 @@ int main(int argc, char **argv)if (verbose_env &&strchr (verbose_env,'1' )) verbose = true; - key_pass =getenv ("KBUILD_SIGN_PIN" ); +#ifdef USE_PKCS11_ENGINE + key_pass =getenv ("KBUILD_SIGN_PIN" ); +#endif if (argc !=3 )format ();
crypto/authencesn.c +5 -0
@@ -397,6 +397,11 @@ static int crypto_authenc_esn_create(struct crypto_template *tmpl, auth =crypto_spawn_ahash_alg (&ctx->auth); auth_base = &auth->base; +if (auth->digestsize >0 && auth->digestsize <4 ) { + err = -EINVAL ; + goto err_free_inst; + } + err =crypto_grab_skcipher (&ctx->enc,aead_crypto_instance (inst),crypto_attr_alg_name (tb[2 ]),0 , mask);if (err)
crypto/pcrypt.c +5 -2
@@ -69,6 +69,9 @@ static void pcrypt_aead_done(void *data, int err)struct pcrypt_request *preq =aead_request_ctx (req);struct padata_priv *padata =pcrypt_request_padata (preq); +if (err == -EINPROGRESS ) +return ; + padata->info = err;padata_do_serial (padata);
@@ -82,7 +85,7 @@ static void pcrypt_aead_enc(struct padata_priv *padata) ret =crypto_aead_encrypt (req); -if (ret == -EINPROGRESS ) +if (ret == -EINPROGRESS || ret == -EBUSY )return ; padata->info = ret;
@@ -133,7 +136,7 @@ static void pcrypt_aead_dec(struct padata_priv *padata) ret =crypto_aead_decrypt (req); -if (ret == -EINPROGRESS ) +if (ret == -EINPROGRESS || ret == -EBUSY )return ; padata->info = ret;
drivers/acpi/cppc_acpi.c +3 -3
@@ -347,7 +347,7 @@ static int send_pcc_cmd(int pcc_ss_id, u16 cmd) end:if (cmd ==CMD_WRITE ) {if (unlikely (ret)) { -for_each_online_cpu (i) { +for_each_possible_cpu (i) {struct cpc_desc *desc =per_cpu (cpc_desc_ptr, i);if (!desc)
@@ -509,13 +509,13 @@ int acpi_get_psd_map(unsigned int cpu, struct cppc_cpudata *cpu_data)else if (pdomain->coord_type ==DOMAIN_COORD_TYPE_SW_ANY ) cpu_data->shared_type =CPUFREQ_SHARED_TYPE_ANY ; -for_each_online_cpu (i) { +for_each_possible_cpu (i) {if (i == cpu)continue ; match_cpc_ptr =per_cpu (cpc_desc_ptr, i);if (!match_cpc_ptr) - goto err_fault; +continue ; match_pdomain = &(match_cpc_ptr->domain_info);if (match_pdomain->domain != pdomain->domain)
drivers/acpi/power.c +1 -1
@@ -986,7 +986,7 @@ struct acpi_device *acpi_add_power_resource(acpi_handle handle)return device; err: -acpi_release_power_resource (&device->dev); +acpi_dev_put (device);return NULL ; }
drivers/acpi/scan.c +1 -1
@@ -1862,7 +1862,7 @@ static int acpi_add_single_object(struct acpi_device **child, result =acpi_device_add (device);if (result) { -acpi_device_release (&device->dev); +acpi_dev_put (device);return result; }
drivers/acpi/video_detect.c +8 -0
@@ -820,6 +820,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Z830"), }, }, + { + .callback = video_detect_force_native, + /* HP OMEN Gaming Laptop 16-n0xxx */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "HP"), + DMI_MATCH(DMI_PRODUCT_NAME, "OMEN by HP Gaming Laptop 16-n0xxx"), + }, + },/* * Models which have nvidia-ec-wmi support, but should not use it.
drivers/base/core.c +27 -12
@@ -182,7 +182,7 @@ void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode)if (fwnode->dev)return ; - fwnode->flags |=FWNODE_FLAG_NOT_DEVICE ; +fwnode_set_flag (fwnode,FWNODE_FLAG_NOT_DEVICE );fwnode_links_purge_consumers (fwnode);fwnode_for_each_available_child_node (fwnode, child)
@@ -228,7 +228,7 @@ static void __fw_devlink_pickup_dangling_consumers(struct fwnode_handle *fwnode,if (fwnode->dev && fwnode->dev->bus)return ; - fwnode->flags |=FWNODE_FLAG_NOT_DEVICE ; +fwnode_set_flag (fwnode,FWNODE_FLAG_NOT_DEVICE );__fwnode_links_move_consumers (fwnode, new_sup);fwnode_for_each_available_child_node (fwnode, child)
@@ -1013,7 +1013,7 @@ static void device_links_missing_supplier(struct device *dev)static bool dev_is_best_effort (struct device *dev) {return (fw_devlink_best_effort && dev->can_match) || - (dev->fwnode && (dev->fwnode->flags &FWNODE_FLAG_BEST_EFFORT )); + (dev->fwnode &&fwnode_test_flag (dev->fwnode,FWNODE_FLAG_BEST_EFFORT )); } static struct fwnode_handle *fwnode_links_check_suppliers(
@@ -1729,11 +1729,11 @@ bool fw_devlink_is_strict(void)static void fw_devlink_parse_fwnode (struct fwnode_handle *fwnode) { -if (fwnode->flags &FWNODE_FLAG_LINKS_ADDED ) +if (fwnode_test_flag (fwnode,FWNODE_FLAG_LINKS_ADDED ))return ;fwnode_call_int_op (fwnode, add_links); - fwnode->flags |=FWNODE_FLAG_LINKS_ADDED ; +fwnode_set_flag (fwnode,FWNODE_FLAG_LINKS_ADDED ); }static void fw_devlink_parse_fwtree (struct fwnode_handle *fwnode)
@@ -1892,7 +1892,7 @@ static bool fwnode_init_without_drv(struct fwnode_handle *fwnode)struct device *dev;bool ret; -if (!(fwnode->flags &FWNODE_FLAG_INITIALIZED )) +if (!fwnode_test_flag (fwnode,FWNODE_FLAG_INITIALIZED ))return false; dev =get_dev_from_fwnode (fwnode);
@@ -1951,10 +1951,10 @@ static bool __fw_devlink_relax_cycles(struct fwnode_handle *con_handle,* We aren't trying to find all cycles. Just a cycle between con and * sup_handle. */ -if (sup_handle->flags &FWNODE_FLAG_VISITED ) +if (fwnode_test_flag (sup_handle,FWNODE_FLAG_VISITED ))return false; - sup_handle->flags |=FWNODE_FLAG_VISITED ; +fwnode_set_flag (sup_handle,FWNODE_FLAG_VISITED );/* Termination condition. */ if (sup_handle == con_handle) {
@@ -2024,7 +2024,7 @@ static bool __fw_devlink_relax_cycles(struct fwnode_handle *con_handle, } out: - sup_handle->flags &= ~FWNODE_FLAG_VISITED ; +fwnode_clear_flag (sup_handle,FWNODE_FLAG_VISITED );put_device (sup_dev);put_device (con_dev);put_device (par_dev);
@@ -2077,7 +2077,7 @@ static int fw_devlink_create_devlink(struct device *con,* When such a flag is set, we can't create device links where P is the * supplier of C as that would delay the probe of C. */ -if (sup_handle->flags &FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD && +if (fwnode_test_flag (sup_handle,FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD ) &&fwnode_is_ancestor_of (sup_handle, con->fwnode))return -EINVAL ;
@@ -2100,7 +2100,7 @@ static int fw_devlink_create_devlink(struct device *con,else flags =FW_DEVLINK_FLAGS_PERMISSIVE ; -if (sup_handle->flags &FWNODE_FLAG_NOT_DEVICE ) +if (fwnode_test_flag (sup_handle,FWNODE_FLAG_NOT_DEVICE )) sup_dev =fwnode_get_next_parent_dev (sup_handle);else sup_dev =get_dev_from_fwnode (sup_handle);
@@ -2112,7 +2112,7 @@ static int fw_devlink_create_devlink(struct device *con,* supplier device indefinitely. */ if (sup_dev->links.status ==DL_DEV_NO_DRIVER && - sup_handle->flags &FWNODE_FLAG_INITIALIZED ) { +fwnode_test_flag (sup_handle,FWNODE_FLAG_INITIALIZED )) {dev_dbg (con,"Not linking %pfwf - dev might never probe\n" , sup_handle);
@@ -3680,6 +3680,21 @@ int device_add(struct device *dev)fw_devlink_link_device (dev); } +/* +* The moment the device was linked into the bus's "klist_devices" in +* bus_add_device() then it's possible that probe could have been +* attempted in a different thread via userspace loading a driver +* matching the device. "ready_to_probe" being unset would have +* blocked those attempts. Now that all of the above initialization has +* happened, unblock probe. If probe happens through another thread +* after this point but before bus_probe_device() runs then it's fine. +* bus_probe_device() -> device_initial_probe() -> __device_attach() +* will notice (under device_lock) that the device is already bound. +*/ +device_lock (dev); +dev_set_ready_to_probe (dev); +device_unlock (dev); +bus_probe_device (dev);/*
drivers/base/dd.c +20 -0
@@ -785,6 +785,26 @@ static int __driver_probe_device(struct device_driver *drv, struct device *dev)if (dev->driver)return -EBUSY ; +/* +* In device_add(), the "struct device" gets linked into the subsystem's +* list of devices and broadcast to userspace (via uevent) before we're +* quite ready to probe. Those open pathways to driver probe before +* we've finished enough of device_add() to reliably support probe. +* Detect this and tell other pathways to try again later. device_add() +* itself will also try to probe immediately after setting +* "ready_to_probe". +*/ +if (!dev_ready_to_probe (dev)) +return dev_err_probe (dev, -EPROBE_DEFER ,"Device not ready to probe\n" ); + +/* +* Set can_match = true after calling dev_ready_to_probe(), so +* driver_deferred_probe_add() won't actually add the device to the +* deferred probe list when dev_ready_to_probe() returns false. +* +* When dev_ready_to_probe() returns false, it means that device_add() +* will do another probe() attempt for us. +*/ dev->can_match = true;pr_debug ("bus: '%s': %s: matched device %s with driver %s\n" , drv->bus->name, __func__,dev_name (dev), drv->name);
drivers/block/rbd.c +3 -3
@@ -7172,7 +7172,7 @@ static ssize_t do_rbd_add(const char *buf, size_t count) rc =device_add_disk (&rbd_dev->dev, rbd_dev->disk,NULL );if (rc) - goto err_out_cleanup_disk; + goto err_out_device;spin_lock (&rbd_dev_list_lock);list_add_tail (&rbd_dev->node, &rbd_dev_list);
@@ -7186,8 +7186,8 @@ static ssize_t do_rbd_add(const char *buf, size_t count)module_put (THIS_MODULE );return rc; -err_out_cleanup_disk: -rbd_free_disk (rbd_dev); +err_out_device: +device_del (&rbd_dev->dev); err_out_image_lock:rbd_dev_image_unlock (rbd_dev);rbd_dev_device_release (rbd_dev);
drivers/block/zram/zram_drv.c +2 -1
@@ -1880,7 +1880,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio)*/ if (offset) {if (n <= (PAGE_SIZE - offset)) -return ; + goto end_bio; n -= (PAGE_SIZE - offset); index++;
@@ -1895,6 +1895,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio) n -=PAGE_SIZE ; } +end_bio:bio_endio (bio); }
drivers/bluetooth/virtio_bt.c +32 -7
@@ -12,6 +12,7 @@#include <net/bluetooth/hci_core.h> #define VERSION "0.1" +#define VIRTBT_RX_BUF_SIZE 1000enum {VIRTBT_VQ_TX ,
@@ -33,11 +34,11 @@ static int virtbt_add_inbuf(struct virtio_bluetooth *vbt)struct sk_buff *skb;int err; - skb =alloc_skb (1000 ,GFP_KERNEL ); + skb =alloc_skb (VIRTBT_RX_BUF_SIZE ,GFP_KERNEL );if (!skb)return -ENOMEM ; -sg_init_one (sg, skb->data,1000 ); +sg_init_one (sg, skb->data,VIRTBT_RX_BUF_SIZE ); err =virtqueue_add_inbuf (vq, sg,1 , skb,GFP_KERNEL );if (err <0 ) {
@@ -197,6 +198,7 @@ static int virtbt_shutdown_generic(struct hci_dev *hdev)static void virtbt_rx_handle (struct virtio_bluetooth *vbt,struct sk_buff *skb) { +size_t min_hdr;__u8 pkt_type; pkt_type = *((__u8 *) skb->data);
@@ -204,16 +206,32 @@ static void virtbt_rx_handle(struct virtio_bluetooth *vbt, struct sk_buff *skb)switch (pkt_type) {case HCI_EVENT_PKT : + min_hdr =sizeof (struct hci_event_hdr ); +break ;case HCI_ACLDATA_PKT : + min_hdr =sizeof (struct hci_acl_hdr ); +break ;case HCI_SCODATA_PKT : + min_hdr =sizeof (struct hci_sco_hdr ); +break ;case HCI_ISODATA_PKT : -hci_skb_pkt_type (skb) = pkt_type; -hci_recv_frame (vbt->hdev, skb); + min_hdr =sizeof (struct hci_iso_hdr );break ;default :kfree_skb (skb); -break ; +return ; + } + +if (skb->len < min_hdr) { +bt_dev_err_ratelimited (vbt->hdev, +"rx pkt_type 0x%02x payload %u < hdr %zu\n" , + pkt_type, skb->len, min_hdr); +kfree_skb (skb); +return ; } + +hci_skb_pkt_type (skb) = pkt_type; +hci_recv_frame (vbt->hdev, skb); }static void virtbt_rx_work (struct work_struct *work)
@@ -227,8 +245,15 @@ static void virtbt_rx_work(struct work_struct *work)if (!skb)return ; -skb_put (skb, len); -virtbt_rx_handle (vbt, skb); +if (!len || len >VIRTBT_RX_BUF_SIZE ) { +bt_dev_err_ratelimited (vbt->hdev, +"rx reply len %u outside [1, %u]\n" , + len,VIRTBT_RX_BUF_SIZE ); +kfree_skb (skb); + }else { +skb_put (skb, len); +virtbt_rx_handle (vbt, skb); + }if (virtbt_add_inbuf (vbt) <0 )return ;
drivers/bus/imx-weim.c +1 -1
@@ -335,7 +335,7 @@ static int of_weim_notify(struct notifier_block *nb, unsigned long action,* fw_devlink doesn't skip adding consumers to this * device. */ - rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE ; +fwnode_clear_flag (&rd->dn->fwnode,FWNODE_FLAG_NOT_DEVICE );if (!of_platform_device_create (rd->dn,NULL , &pdev->dev)) { dev_err(&pdev->dev, "Failed to create child device '%pOF'\n",
drivers/char/ipmi/ipmi_si_intf.c +56 -14
137 lines not on this page · raw message
drivers/char/ipmi/ipmi_ssif.c +31 -5
@@ -225,6 +225,9 @@ struct ssif_info {bool has_event_buffer;bool supports_alert; +/* When requesting events and messages, don't do it forever. */ +unsigned int num_requests_in_a_row; +/* * Used to tell what we should do with alerts. If we are * waiting on a response, read the data immediately.
@@ -413,7 +416,10 @@ static void start_event_fetch(struct ssif_info *ssif_info, unsigned long *flags) } ssif_info->curr_msg = msg; - ssif_info->ssif_state =SSIF_GETTING_EVENTS ; +if (ssif_info->ssif_state !=SSIF_GETTING_EVENTS ) { + ssif_info->num_requests_in_a_row =0 ; + ssif_info->ssif_state =SSIF_GETTING_EVENTS ; + }ipmi_ssif_unlock_cond (ssif_info, flags); msg->data[0 ] = (IPMI_NETFN_APP_REQUEST <<2 );
@@ -436,7 +442,10 @@ static void start_recv_msg_fetch(struct ssif_info *ssif_info, } ssif_info->curr_msg = msg; - ssif_info->ssif_state =SSIF_GETTING_MESSAGES ; +if (ssif_info->ssif_state !=SSIF_GETTING_MESSAGES ) { + ssif_info->num_requests_in_a_row =0 ; + ssif_info->ssif_state =SSIF_GETTING_MESSAGES ; + }ipmi_ssif_unlock_cond (ssif_info, flags); msg->data[0 ] = (IPMI_NETFN_APP_REQUEST <<2 );
@@ -481,8 +490,6 @@ static int ipmi_ssif_thread(void *data)/* Wait for something to do */ result =wait_for_completion_interruptible ( &ssif_info->wake_thread); -if (ssif_info->stopping) -break ;if (result == -ERESTARTSYS )continue ;init_completion (&ssif_info->wake_thread);
@@ -843,6 +850,11 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL ;handle_flags (ssif_info, flags); }else { + ssif_info->num_requests_in_a_row++; +if (ssif_info->num_requests_in_a_row >10 ) +/* Stop if we do this too many times. */ + ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL ; +handle_flags (ssif_info, flags);ssif_inc_stat (ssif_info, events);deliver_recv_msg (ssif_info, msg);
@@ -876,6 +888,11 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL ;handle_flags (ssif_info, flags); }else { + ssif_info->num_requests_in_a_row++; +if (ssif_info->num_requests_in_a_row >10 ) +/* Stop if we do this too many times. */ + ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL ; +ssif_inc_stat (ssif_info, incoming_messages);handle_flags (ssif_info, flags);deliver_recv_msg (ssif_info, msg);
@@ -1271,8 +1288,8 @@ static void shutdown_ssif(void *send_info)del_timer_sync (&ssif_info->watch_timer);del_timer_sync (&ssif_info->retry_timer);if (ssif_info->thread) { -complete (&ssif_info->wake_thread);kthread_stop (ssif_info->thread); + ssif_info->thread =NULL ; } }
@@ -1898,6 +1915,15 @@ static int ssif_probe(struct i2c_client *client) out:if (rv) { +/* +* If ipmi_register_smi() starts the interface, it will +* call shutdown and that will free the thread and set +* it to NULL. Otherwise it must be freed here. +*/ +if (ssif_info->thread) { +kthread_stop (ssif_info->thread); + ssif_info->thread =NULL ; + }if (addr_info) addr_info->client =NULL ;
drivers/char/tpm/tpm_tis_core.c +10 -1
@@ -472,6 +472,8 @@ static int tpm_tis_send_data(struct tpm_chip *chip, const u8 *buf, size_t len) status =tpm_tis_status (chip);if (!itpm && (status &TPM_STS_DATA_EXPECT ) ==0 ) { rc = -EIO ; +dev_err (&chip->dev,"TPM_STS_DATA_EXPECT should be set. sts = 0x%08x\n" , + status); goto out_err; } }
@@ -492,6 +494,8 @@ static int tpm_tis_send_data(struct tpm_chip *chip, const u8 *buf, size_t len) status =tpm_tis_status (chip);if (!itpm && (status &TPM_STS_DATA_EXPECT ) !=0 ) { rc = -EIO ; +dev_err (&chip->dev,"TPM_STS_DATA_EXPECT should be unset. sts = 0x%08x\n" , + status); goto out_err; }
@@ -553,11 +557,16 @@ static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)break ; else if (rc != -EAGAIN && rc != -EIO)/* Data transfer failed, not recoverable */ -return rc; + goto out_err;usleep_range (priv->timeout_min, priv->timeout_max); } +if (rc == -EAGAIN || rc == -EIO ) { +dev_err (&chip->dev,"Exhausted %d tpm_tis_send_data retries\n" ,TPM_RETRY ); + goto out_err; + } +/* go and do it */ rc =tpm_tis_write8 (priv,TPM_STS (priv->locality),TPM_STS_GO );if (rc <0 )
drivers/clk/clk-rk808.c +1 -1
@@ -153,7 +153,7 @@ static int rk808_clkout_probe(struct platform_device *pdev)struct rk808_clkout *rk808_clkout;int ret; - dev->of_node = pdev->dev.parent->of_node; +device_set_of_node_from_dev (dev, dev->parent); rk808_clkout =devm_kzalloc (dev,sizeof (*rk808_clkout),GFP_KERNEL );
drivers/clk/imx/clk-imx8-acm.c +2 -1
@@ -368,7 +368,8 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)for (i =0 ; i < priv->soc_data->num_sels; i++) { hws[sels[i].clkid] =devm_clk_hw_register_mux_parent_data_table (dev, sels[i].name, sels[i].parents, - sels[i].num_parents,0 , + sels[i].num_parents, +CLK_SET_RATE_NO_REPARENT , base + sels[i].reg, sels[i].shift, sels[i].width,0 ,NULL ,NULL );
drivers/clk/microchip/clk-mpfs-ccc.c +5 -1
@@ -178,7 +178,7 @@ static int mpfs_ccc_register_outputs(struct device *dev, struct mpfs_ccc_out_hw_return dev_err_probe (dev, ret,"failed to register clock id: %d\n" , out_hw->id); - data->hw_data.hws[out_hw->id] = &out_hw->divider.hw; + data->hw_data.hws[out_hw->id -2 ] = &out_hw->divider.hw; }return 0 ;
@@ -234,6 +234,10 @@ static int mpfs_ccc_probe(struct platform_device *pdev)unsigned int num_clks;int ret; +/* +* If DLLs get added here, mpfs_ccc_register_outputs() currently packs +* sparse clock IDs in the hws array +*/ num_clks =ARRAY_SIZE (mpfs_ccc_pll_clks) +ARRAY_SIZE (mpfs_ccc_pll0out_clks) +ARRAY_SIZE (mpfs_ccc_pll1out_clks);
drivers/cpuidle/cpuidle-powernv.c +4 -1
@@ -95,7 +95,10 @@ static int snooze_loop(struct cpuidle_device *dev,HMT_medium ();ppc64_runlatch_on (); -clear_thread_flag (TIF_POLLING_NRFLAG ); + +/* Avoid double clear when breaking */ +if (!dev->poll_time_limit) +clear_thread_flag (TIF_POLLING_NRFLAG );local_irq_disable ();
drivers/cpuidle/cpuidle-pseries.c +4 -1
@@ -63,7 +63,10 @@ int snooze_loop(struct cpuidle_device *dev, struct cpuidle_driver *drv, }HMT_medium (); -clear_thread_flag (TIF_POLLING_NRFLAG ); + +/* Avoid double clear when breaking */ +if (!dev->poll_time_limit) +clear_thread_flag (TIF_POLLING_NRFLAG );raw_local_irq_disable ();
drivers/crypto/atmel-aes.c +1 -1
@@ -2323,7 +2323,7 @@ static int atmel_aes_buff_init(struct atmel_aes_dev *dd)static void atmel_aes_buff_cleanup (struct atmel_aes_dev *dd) { -free_page ((unsigned long )dd->buf); +free_pages ((unsigned long )dd->buf,ATMEL_AES_BUFFER_ORDER ); }static int atmel_aes_dma_init (struct atmel_aes_dev *dd)
drivers/crypto/atmel-ecc.c +1 -0
@@ -261,6 +261,7 @@ static int atmel_ecdh_init_tfm(struct crypto_kpp *tfm)if (IS_ERR (fallback)) {dev_err (&ctx->client->dev,"Failed to allocate transformation for '%s': %ld\n" , alg,PTR_ERR (fallback)); +atmel_ecc_i2c_client_free (ctx->client);return PTR_ERR (fallback); }
drivers/crypto/atmel-sha204a.c +2 -4
@@ -125,10 +125,8 @@ static void atmel_sha204a_remove(struct i2c_client *client) {struct atmel_i2c_client_priv *i2c_priv =i2c_get_clientdata (client); -if (atomic_read (&i2c_priv->tfm_count)) { -dev_emerg (&client->dev,"Device is busy, will remove it anyhow\n" ); -return ; - } +devm_hwrng_unregister (&client->dev, &i2c_priv->hwrng); +atmel_i2c_flush_queue ();kfree ((void *)i2c_priv->hwrng.priv); }
drivers/crypto/atmel-tdes.c +4 -4
@@ -304,8 +304,8 @@ static int atmel_tdes_crypt_pdc_stop(struct atmel_tdes_dev *dd)dma_unmap_sg (dd->dev, dd->out_sg,1 ,DMA_FROM_DEVICE );dma_unmap_sg (dd->dev, dd->in_sg,1 ,DMA_TO_DEVICE ); }else { -dma_sync_single_for_device (dd->dev, dd->dma_addr_out, - dd->dma_size,DMA_FROM_DEVICE ); +dma_sync_single_for_cpu (dd->dev, dd->dma_addr_out, + dd->dma_size,DMA_FROM_DEVICE );/* copy data */ count = atmel_tdes_sg_copy(&dd->out_sg, &dd->out_offset,
@@ -655,8 +655,8 @@ static int atmel_tdes_crypt_dma_stop(struct atmel_tdes_dev *dd)dma_unmap_sg (dd->dev, dd->out_sg,1 ,DMA_FROM_DEVICE );dma_unmap_sg (dd->dev, dd->in_sg,1 ,DMA_TO_DEVICE ); }else { -dma_sync_single_for_device (dd->dev, dd->dma_addr_out, - dd->dma_size,DMA_FROM_DEVICE ); +dma_sync_single_for_cpu (dd->dev, dd->dma_addr_out, + dd->dma_size,DMA_FROM_DEVICE );/* copy data */ count = atmel_tdes_sg_copy(&dd->out_sg, &dd->out_offset,
drivers/crypto/caam/caamalg_qi2.c +2 -2
@@ -3268,7 +3268,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,dpaa2_fl_set_addr (out_fle, key_dma);dpaa2_fl_set_len (out_fle, digestsize); - print_hex_dump_debug("key_in@" __stringify(__LINE__)": ", + print_hex_dump_devel("key_in@" __stringify(__LINE__)": ",DUMP_PREFIX_ADDRESS ,16 ,4 , key, *keylen,1 ); print_hex_dump_debug("shdesc@" __stringify(__LINE__)": ", DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
@@ -3288,7 +3288,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,/* in progress */ wait_for_completion (&result.completion); ret = result.err; - print_hex_dump_debug("digested key@" __stringify(__LINE__)": ", + print_hex_dump_devel("digested key@" __stringify(__LINE__)": ",DUMP_PREFIX_ADDRESS ,16 ,4 , key, digestsize,1 ); }
drivers/crypto/caam/caamhash.c +2 -2
@@ -393,7 +393,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,append_seq_store (desc, digestsize,LDST_CLASS_2_CCB |LDST_SRCDST_BYTE_CONTEXT ); - print_hex_dump_debug("key_in@"__stringify(__LINE__)": ", + print_hex_dump_devel("key_in@"__stringify(__LINE__)": ",DUMP_PREFIX_ADDRESS ,16 ,4 , key, *keylen,1 ); print_hex_dump_debug("jobdesc@"__stringify(__LINE__)": ", DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
@@ -408,7 +408,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,wait_for_completion (&result.completion); ret = result.err; - print_hex_dump_debug("digested key@"__stringify(__LINE__)": ", + print_hex_dump_devel("digested key@"__stringify(__LINE__)": ",DUMP_PREFIX_ADDRESS ,16 ,4 , key, digestsize,1 ); }
drivers/crypto/ccree/cc_hash.c +1 -0
@@ -1448,6 +1448,7 @@ static int cc_mac_digest(struct ahash_request *req)if (cc_map_hash_request_final (ctx->drvdata, state, req->src, req->nbytes,1 , flags)) {dev_err (dev,"map_ahash_request_final() failed\n" ); +cc_unmap_result (dev, state, digestsize, req->result);cc_unmap_req (dev, state, ctx);return -ENOMEM ; }
drivers/crypto/hisilicon/sec/sec_algs.c +1 -1
@@ -844,7 +844,7 @@ static int sec_alg_skcipher_crypto(struct skcipher_request *skreq,if (crypto_skcipher_ivsize (atfm))dma_unmap_single (info->dev, sec_req->dma_iv,crypto_skcipher_ivsize (atfm), -DMA_BIDIRECTIONAL ); +DMA_TO_DEVICE ); err_unmap_out_sg:if (split) sec_unmap_sg_on_err(skreq->dst, steps, splits_out,
drivers/crypto/nx/nx-842.c +26 -21
90 lines not on this page · raw message
drivers/crypto/nx/nx-842.h +14 -11
@@ -3,7 +3,6 @@#ifndef __NX_842_H__#define __NX_842_H__ -#include <crypto/algapi.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h>
@@ -101,6 +100,8 @@#define LEN_ON_SIZE (pa, size) ((size) - ((pa) & ((size) - 1)))#define LEN_ON_PAGE (pa) LEN_ON_SIZE(pa, PAGE_SIZE) +struct crypto_scomp ; +static inline unsigned long nx842_get_pa (void *addr) {if (!is_vmalloc_addr (addr))
@@ -157,9 +158,11 @@ struct nx842_crypto_header_group { } __packed;struct nx842_crypto_header { -__be16 magic;/* NX842_CRYPTO_MAGIC */ -__be16 ignore;/* decompressed end bytes to ignore */ -u8 groups;/* total groups in this header */ + struct_group_tagged(nx842_crypto_header_hdr, hdr, + __be16 magic; /* NX842_CRYPTO_MAGIC */ +__be16 ignore;/* decompressed end bytes to ignore */ +u8 groups;/* total groups in this header */ + );struct nx842_crypto_header_group group[]; } __packed;
@@ -171,19 +174,19 @@ struct nx842_crypto_ctx {u8 *wmem;u8 *sbounce, *dbounce; -struct nx842_crypto_header header; +struct nx842_crypto_header_hdr header;struct nx842_crypto_header_group group[NX842_CRYPTO_GROUP_MAX ]; struct nx842_driver *driver; }; -int nx842_crypto_init (struct crypto_tfm *tfm,struct nx842_driver *driver); -void nx842_crypto_exit (struct crypto_tfm *tfm); -int nx842_crypto_compress (struct crypto_tfm *tfm, +void *nx842_crypto_alloc_ctx (struct nx842_driver *driver); +void nx842_crypto_free_ctx (void *ctx); +int nx842_crypto_compress (struct crypto_scomp *tfm,const u8 *src,unsigned int slen, -u8 *dst,unsigned int *dlen); -int nx842_crypto_decompress (struct crypto_tfm *tfm, +u8 *dst,unsigned int *dlen,void *ctx); +int nx842_crypto_decompress (struct crypto_scomp *tfm,const u8 *src,unsigned int slen, -u8 *dst,unsigned int *dlen); +u8 *dst,unsigned int *dlen,void *ctx);#endif /* __NX_842_H__ */
drivers/crypto/nx/nx-common-powernv.c +15 -16
@@ -9,6 +9,7 @@#include "nx-842.h" +#include <crypto/internal/scompress.h> #include <linux/timer.h> #include <asm/prom.h>
@@ -1031,23 +1032,21 @@ static struct nx842_driver nx842_powernv_driver = { .decompress = nx842_powernv_decompress, }; -static int nx842_powernv_crypto_init (struct crypto_tfm *tfm) +static void *nx842_powernv_crypto_alloc_ctx (void ) { -return nx842_crypto_init (tfm, &nx842_powernv_driver); +return nx842_crypto_alloc_ctx (&nx842_powernv_driver); } -static struct crypto_alg nx842_powernv_alg = { - .cra_name ="842" , - .cra_driver_name ="842-nx" , - .cra_priority =300 , - .cra_flags =CRYPTO_ALG_TYPE_COMPRESS , - .cra_ctxsize =sizeof (struct nx842_crypto_ctx ), - .cra_module =THIS_MODULE , - .cra_init = nx842_powernv_crypto_init, - .cra_exit = nx842_crypto_exit, - .cra_u = { .compress = { - .coa_compress = nx842_crypto_compress, - .coa_decompress = nx842_crypto_decompress } } +static struct scomp_alg nx842_powernv_alg = { + .base.cra_name ="842" , + .base.cra_driver_name ="842-nx" , + .base.cra_priority =300 , + .base.cra_module =THIS_MODULE , + + .alloc_ctx = nx842_powernv_crypto_alloc_ctx, + .free_ctx = nx842_crypto_free_ctx, + .compress = nx842_crypto_compress, + .decompress = nx842_crypto_decompress, };static __init int nx_compress_powernv_init (void )
@@ -1107,7 +1106,7 @@ static __init int nx_compress_powernv_init(void) nx842_powernv_exec = nx842_exec_vas; } - ret =crypto_register_alg (&nx842_powernv_alg); + ret =crypto_register_scomp (&nx842_powernv_alg);if (ret) {nx_delete_coprocs ();return ret;
@@ -1128,7 +1127,7 @@ static void __exit nx_compress_powernv_exit(void)if (!nx842_ct)vas_unregister_api_powernv (); -crypto_unregister_alg (&nx842_powernv_alg); +crypto_unregister_scomp (&nx842_powernv_alg);nx_delete_coprocs (); }
drivers/crypto/nx/nx-common-pseries.c +16 -17
@@ -11,6 +11,7 @@#include <asm/vio.h> #include <asm/hvcall.h> #include <asm/vas.h> +#include <crypto/internal/scompress.h> #include "nx-842.h" #include "nx_csbcpb.h" /* struct nx_csbcpb */
@@ -1008,23 +1009,21 @@ static struct nx842_driver nx842_pseries_driver = { .decompress = nx842_pseries_decompress, }; -static int nx842_pseries_crypto_init (struct crypto_tfm *tfm) +static void *nx842_pseries_crypto_alloc_ctx (void ) { -return nx842_crypto_init (tfm, &nx842_pseries_driver); +return nx842_crypto_alloc_ctx (&nx842_pseries_driver); } -static struct crypto_alg nx842_pseries_alg = { - .cra_name ="842" , - .cra_driver_name ="842-nx" , - .cra_priority =300 , - .cra_flags =CRYPTO_ALG_TYPE_COMPRESS , - .cra_ctxsize =sizeof (struct nx842_crypto_ctx ), - .cra_module =THIS_MODULE , - .cra_init = nx842_pseries_crypto_init, - .cra_exit = nx842_crypto_exit, - .cra_u = { .compress = { - .coa_compress = nx842_crypto_compress, - .coa_decompress = nx842_crypto_decompress } } +static struct scomp_alg nx842_pseries_alg = { + .base.cra_name ="842" , + .base.cra_driver_name ="842-nx" , + .base.cra_priority =300 , + .base.cra_module =THIS_MODULE , + + .alloc_ctx = nx842_pseries_crypto_alloc_ctx, + .free_ctx = nx842_crypto_free_ctx, + .compress = nx842_crypto_compress, + .decompress = nx842_crypto_decompress, }; static int nx842_probe(struct vio_dev *viodev,
@@ -1072,7 +1071,7 @@ static int nx842_probe(struct vio_dev *viodev,if (ret) goto error; - ret =crypto_register_alg (&nx842_pseries_alg); + ret =crypto_register_scomp (&nx842_pseries_alg);if (ret) {dev_err (&viodev->dev,"could not register comp alg: %d\n" , ret); goto error;
@@ -1120,7 +1119,7 @@ static void nx842_remove(struct vio_dev *viodev)if (caps_feat)sysfs_remove_group (&viodev->dev.kobj, &nxcop_caps_attr_group); -crypto_unregister_alg (&nx842_pseries_alg); +crypto_unregister_scomp (&nx842_pseries_alg);spin_lock_irqsave (&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata,
@@ -1252,7 +1251,7 @@ static void __exit nx842_pseries_exit(void)vas_unregister_api_pseries (); -crypto_unregister_alg (&nx842_pseries_alg); +crypto_unregister_scomp (&nx842_pseries_alg);spin_lock_irqsave (&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata,
drivers/crypto/talitos.c +166 -88
421 lines not on this page · raw message
drivers/dma/idxd/device.c +1 -2
@@ -810,8 +810,7 @@ static void idxd_device_evl_free(struct idxd_device *idxd)struct device *dev = &idxd->pdev->dev;struct idxd_evl *evl = idxd->evl; - gencfg.bits =ioread32 (idxd->reg_base +IDXD_GENCFG_OFFSET ); -if (!gencfg.evl_en) +if (!evl)return ;mutex_lock (&evl->lock);
drivers/extcon/extcon-ptn5150.c +14 -0
@@ -331,6 +331,19 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c)return 0 ; } +static int ptn5150_resume (struct device *dev) +{ +struct i2c_client *i2c =to_i2c_client (dev); +struct ptn5150_info *info =i2c_get_clientdata (i2c); + +/* Need to check possible pending interrupt events */ +schedule_work (&info->irq_work); + +return 0 ; +} + +static DEFINE_SIMPLE_DEV_PM_OPS(ptn5150_pm_ops, NULL, ptn5150_resume); +static const struct of_device_id ptn5150_dt_match[] = { { .compatible ="nxp,ptn5150" }, { },
@@ -346,6 +359,7 @@ MODULE_DEVICE_TABLE(i2c, ptn5150_i2c_id);static struct i2c_driver ptn5150_i2c_driver = { .driver = { .name ="ptn5150" , + .pm =pm_sleep_ptr (&ptn5150_pm_ops), .of_match_table = ptn5150_dt_match, }, .probe = ptn5150_i2c_probe,
drivers/firmware/google/framebuffer-coreboot.c +1 -11
@@ -50,7 +50,7 @@ static int framebuffer_probe(struct coreboot_device *dev)return -ENODEV ;memset (&res,0 ,sizeof (res)); - res.flags =IORESOURCE_MEM |IORESOURCE_BUSY ; + res.flags =IORESOURCE_MEM ; res.name ="Coreboot Framebuffer" ; res.start = fb->physical_address; length =PAGE_ALIGN (fb->y_resolution * fb->bytes_per_line);
@@ -64,22 +64,12 @@ static int framebuffer_probe(struct coreboot_device *dev) sizeof(pdata));if (IS_ERR (pdev))pr_warn ("coreboot: could not register framebuffer\n" ); -else -dev_set_drvdata (&dev->dev, pdev);return PTR_ERR_OR_ZERO (pdev); } -static void framebuffer_remove (struct coreboot_device *dev) -{ -struct platform_device *pdev =dev_get_drvdata (&dev->dev); - -platform_device_unregister (pdev); -} -static struct coreboot_driver framebuffer_driver = { .probe = framebuffer_probe, - .remove = framebuffer_remove, .drv = { .name ="framebuffer" , },
drivers/gpio/gpiolib-of.c +8 -1
@@ -1136,5 +1136,12 @@ int of_gpiochip_add(struct gpio_chip *chip)void of_gpiochip_remove (struct gpio_chip *chip) { -of_node_put (dev_of_node (&chip->gpiodev->dev)); +struct device_node *np =dev_of_node (&chip->gpiodev->dev); + +for_each_child_of_node_scoped (np, child) { +if (of_property_present (child,"gpio-hog" )) +of_node_clear_flag (child,OF_POPULATED ); + } + +of_node_put (np); }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -1
@@ -1665,7 +1665,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( alloc_domain =AMDGPU_GEM_DOMAIN_GTT ; alloc_flags =0 ; }else { - alloc_flags =AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE ; + alloc_flags =AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE | +AMDGPU_GEM_CREATE_VRAM_CLEARED ; alloc_flags |= (flags &KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC ) ?AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED :0 ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c +20 -23
69 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +10 -3
@@ -252,12 +252,19 @@ void amdgpu_gart_table_ram_free(struct amdgpu_device *adev)*/ int amdgpu_gart_table_vram_alloc (struct amdgpu_device *adev) { +int r; +if (adev->gart.bo !=NULL )return 0 ; -return amdgpu_bo_create_kernel (adev, adev->gart.table_size,PAGE_SIZE , -AMDGPU_GEM_DOMAIN_VRAM , &adev->gart.bo, -NULL , (void *)&adev->gart.ptr); + r =amdgpu_bo_create_kernel (adev, adev->gart.table_size,PAGE_SIZE , +AMDGPU_GEM_DOMAIN_VRAM , &adev->gart.bo, +NULL , (void *)&adev->gart.ptr); +if (r) +return r; + +memset_io (adev->gart.ptr, adev->gart.gart_pte_flags, adev->gart.table_size); +return 0 ; }/**
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +7 -4
@@ -440,15 +440,18 @@ void amdgpu_debugfs_ring_init(struct amdgpu_device *adev,int amdgpu_ring_init_mqd (struct amdgpu_ring *ring); -static inline u32 amdgpu_ib_get_value (struct amdgpu_ib *ib,int idx) +static inline u32 amdgpu_ib_get_value (struct amdgpu_ib *ib,uint32_t idx) { -return ib->ptr[idx]; +if (idx < ib->length_dw) +return ib->ptr[idx]; +return 0 ; } -static inline void amdgpu_ib_set_value (struct amdgpu_ib *ib,int idx, +static inline void amdgpu_ib_set_value (struct amdgpu_ib *ib,uint32_t idx,uint32_t value) { - ib->ptr[idx] = value; +if (idx < ib->length_dw) + ib->ptr[idx] = value; } int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +3 -0
@@ -75,6 +75,9 @@ static int amdgpu_ttm_init_on_chip(struct amdgpu_device *adev, unsigned int type, uint64_t size_in_page) { +if (!size_in_page) +return 0 ; +return ttm_range_man_init (&adev->mman.bdev, type, false, size_in_page); }
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +3 -0
@@ -654,6 +654,9 @@ static int amdgpu_vce_cs_reloc(struct amdgpu_cs_parser *p, struct amdgpu_ib *ib,uint64_t addr;int r; +if (lo >= ib->length_dw || hi >= ib->length_dw) +return -EINVAL ; +if (index ==0xffffffff ) index =0 ;
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +0 -3
@@ -5388,9 +5388,6 @@ static void gfx_v9_0_ring_emit_fence_kiq(struct amdgpu_ring *ring, u64 addr, {struct amdgpu_device *adev = ring->adev; -/* we only allocate 32bit for each seq wb address */ -BUG_ON (flags &AMDGPU_FENCE_FLAG_64BIT ); -/* write fence seq to the "addr" */ amdgpu_ring_write (ring,PACKET3 (PACKET3_WRITE_DATA ,3 )); amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +2 -2
@@ -841,7 +841,7 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se/* write the fence */ amdgpu_ring_write (ring,SDMA_PKT_HEADER_OP (SDMA_OP_FENCE ));/* zero in first two bits */ -BUG_ON (addr &0x3 ); +WARN_ON (addr &0x3 );amdgpu_ring_write (ring,lower_32_bits (addr));amdgpu_ring_write (ring,upper_32_bits (addr));amdgpu_ring_write (ring,lower_32_bits (seq));
@@ -851,7 +851,7 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se addr +=4 ;amdgpu_ring_write (ring,SDMA_PKT_HEADER_OP (SDMA_OP_FENCE ));/* zero in first two bits */ -BUG_ON (addr &0x3 ); +WARN_ON (addr &0x3 );amdgpu_ring_write (ring,lower_32_bits (addr));amdgpu_ring_write (ring,upper_32_bits (addr));amdgpu_ring_write (ring,upper_32_bits (seq));
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +21 -4
@@ -1789,7 +1789,7 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job, {struct ttm_operation_ctx ctx = { false, false };struct amdgpu_bo_va_mapping *map; -uint32_t *msg, num_buffers; +uint32_t *msg, num_buffers, len_dw;struct amdgpu_bo *bo;uint64_t start, end;unsigned int i;
@@ -1810,6 +1810,11 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,return -EINVAL ; } +if (end - addr <16 ) { +DRM_ERROR ("VCN messages must be at least 4 DWORDs!\n" ); +return -EINVAL ; + } + bo->flags |=AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED ;amdgpu_bo_placement_from_domain (bo, bo->allowed_domains); r =ttm_bo_validate (&bo->tbo, &bo->placement, &ctx);
@@ -1826,8 +1831,8 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job, msg = ptr + addr - start; -/* Check length */ if (msg[1 ] > end - addr) { +DRM_ERROR ("VCN message header does not fit in BO!\n" ); r = -EINVAL ; goto out; }
@@ -1835,9 +1840,19 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,if (msg[3 ] !=RDECODE_MSG_CREATE ) goto out; + len_dw = msg[1 ] /4 ; num_buffers = msg[2 ]; + +/* Verify that all indices fit within the claimed length. Each index is 4 DWORDs */ +if (num_buffers > len_dw ||6 + num_buffers *4 > len_dw) { +DRM_ERROR ("VCN message has too many buffers!\n" ); + r = -EINVAL ; + goto out; + } +for (i =0 , msg = &msg[6 ]; i < num_buffers; ++i, msg +=4 ) {uint32_t offset, size, *create; +uint64_t buf_end;if (msg[0 ] !=RDECODE_MESSAGE_CREATE )continue ;
@@ -1845,14 +1860,16 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job, offset = msg[1 ]; size = msg[2 ]; -if (offset + size > end) { +if (size <4 ||check_add_overflow (offset, size, &buf_end) || + buf_end > end - addr) { +DRM_ERROR ("VCN message buffer exceeds BO bounds!\n" ); r = -EINVAL ; goto out; } create = ptr + addr + offset - start; -/* H246, HEVC and VP9 can run on any instance */ +/* H264, HEVC and VP9 can run on any instance */ if (create[0 ] ==0x7 || create[0 ] ==0x10 || create[0 ] ==0x11 )continue ;
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c +32 -14
106 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +27 -2
@@ -26,6 +26,7 @@#include <linux/err.h> #include <linux/fs.h> #include <linux/file.h> +#include <linux/overflow.h> #include <linux/sched.h> #include <linux/slab.h> #include <linux/uaccess.h>
@@ -784,6 +785,9 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp, goto out_unlock; } +if (args->num_of_nodes >kfd_topology_get_num_devices ()) +return -EINVAL ; +/* Fill in process-aperture information for all available * nodes, but not more than args->num_of_nodes as that is * the amount of memory allocated by user
@@ -1702,6 +1706,16 @@ static int kfd_ioctl_smi_events(struct file *filep,return kfd_smi_event_open (pdd->dev, &args->anon_fd); } +static int kfd_ioctl_svm_validate (void *kdata,unsigned int usize) +{ +struct kfd_ioctl_svm_args *args = kdata; +size_t expected =struct_size (args, attrs, args->nattr); + +if (expected ==SIZE_MAX || usize < expected) +return -EINVAL ; +return 0 ; +} +#if IS_ENABLED (CONFIG_HSA_AMD_SVM ) static int kfd_ioctl_set_xnack_mode(struct file *filep,
@@ -3125,7 +3139,11 @@ static int kfd_ioctl_set_debug_trap(struct file *filep, struct kfd_process *p, v#define AMDKFD_IOCTL_DEF (ioctl, _func, _flags) \ [_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, \ - .cmd_drv = 0, .name = #ioctl} + .validate = NULL, .cmd_drv = 0, .name = #ioctl} + +#define AMDKFD_IOCTL_DEF_V (ioctl, _func, _validate, _flags) \ + [_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, \ + .validate = _validate, .cmd_drv = 0, .name = #ioctl}/** Ioctl table */ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
@@ -3222,7 +3240,8 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {AMDKFD_IOCTL_DEF (AMDKFD_IOC_SMI_EVENTS , kfd_ioctl_smi_events,0 ), -AMDKFD_IOCTL_DEF (AMDKFD_IOC_SVM , kfd_ioctl_svm,0 ), +AMDKFD_IOCTL_DEF_V (AMDKFD_IOC_SVM , kfd_ioctl_svm, + kfd_ioctl_svm_validate,0 ),AMDKFD_IOCTL_DEF (AMDKFD_IOC_SET_XNACK_MODE , kfd_ioctl_set_xnack_mode, 0),
@@ -3344,6 +3363,12 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)memset (kdata,0 , usize); } +if (ioctl->validate) { + retcode = ioctl->validate (kdata, usize); +if (retcode) + goto err_i1; + } + retcode =func (filep, process, kdata);if (cmd &IOC_OUT )
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +4 -0
@@ -1006,10 +1006,13 @@ extern struct srcu_struct kfd_processes_srcu;typedef int amdkfd_ioctl_t (struct file *filep,struct kfd_process *p,void *data); +typedef int amdkfd_ioctl_validate_t (void *kdata,unsigned int usize); +struct amdkfd_ioctl_desc {unsigned int cmd;int flags;amdkfd_ioctl_t *func; +amdkfd_ioctl_validate_t *validate;unsigned int cmd_drv;const char *name; };
@@ -1145,6 +1148,7 @@ static inline struct kfd_node *kfd_node_by_irq_ids(struct amdgpu_device *adev,return NULL ; }int kfd_topology_enum_kfd_devices (uint8_t idx,struct kfd_node **kdev); +uint32_t kfd_topology_get_num_devices (void );int kfd_numa_node_to_apic_id (int numa_node_id);/* Interrupts */
drivers/gpu/drm/amd/amdkfd/kfd_topology.c +11 -0
@@ -2177,6 +2177,17 @@ int kfd_topology_remove_device(struct kfd_node *gpu)return res; } +uint32_t kfd_topology_get_num_devices (void ) +{ +uint32_t num_devices; + +down_read (&topology_lock); + num_devices = sys_props.num_devices; +up_read (&topology_lock); + +return num_devices; +} +/* kfd_topology_enum_kfd_devices - Enumerate through all devices in KFD * topology. If GPU device is found @idx, then valid kfd_dev pointer is * returned through @kdev
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +5 -0
@@ -10152,6 +10152,11 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, }if (dc_resource_is_dsc_encoding_supported (dc)) { +for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state, new_crtc_state, i) { + dm_new_crtc_state =to_dm_crtc_state (new_crtc_state); + dm_new_crtc_state->mode_changed_independent_from_dsc = new_crtc_state->mode_changed; + } +for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state, new_crtc_state, i) {if (drm_atomic_crtc_needs_modeset (new_crtc_state)) { ret =add_affected_mst_dsc_crtcs (state, crtc);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +1 -0
@@ -737,6 +737,7 @@ struct dm_crtc_state {bool freesync_vrr_info_changed; +bool mode_changed_independent_from_dsc;bool dsc_force_changed;bool vrr_supported;struct mod_freesync_config freesync_config;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +5 -2
@@ -1587,8 +1587,11 @@ int pre_validate_dsc(struct drm_atomic_state *state, }else {int ind =find_crtc_index_in_state_by_stream (state, stream); -if (ind >=0 ) - state->crtcs[ind].new_state->mode_changed =0 ; +if (ind >=0 ) { +struct dm_crtc_state *dm_new_crtc_state =to_dm_crtc_state (state->crtcs[ind].new_state); + + dm_new_crtc_state->base.mode_changed = dm_new_crtc_state->mode_changed_independent_from_dsc; + } } } clean_exit:
drivers/gpu/drm/amd/pm/powerplay/smumgr/ci_smumgr.c +7 -6
@@ -1326,12 +1326,13 @@ static int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr) dev_id = adev->pdev->device; -if ((dpm_table->mclk_table.count >=2 ) - && ((dev_id ==0x67B0 ) || (dev_id ==0x67B1 ))) { - smu_data->smc_state_table.MemoryLevel[1 ].MinVddci = - smu_data->smc_state_table.MemoryLevel[0 ].MinVddci; - smu_data->smc_state_table.MemoryLevel[1 ].MinMvdd = - smu_data->smc_state_table.MemoryLevel[0 ].MinMvdd; +if ((dpm_table->mclk_table.count >=2 ) && + ((dev_id ==0x67B0 ) || (dev_id ==0x67B1 )) && + (adev->pdev->revision ==0 )) { + smu_data->smc_state_table.MemoryLevel[1 ].MinVddc = + smu_data->smc_state_table.MemoryLevel[0 ].MinVddc; + smu_data->smc_state_table.MemoryLevel[1 ].MinVddcPhases = + smu_data->smc_state_table.MemoryLevel[0 ].MinVddcPhases; } smu_data->smc_state_table.MemoryLevel[0 ].ActivityLevel =0x1F ;CONVERT_FROM_HOST_TO_SMC_US (smu_data->smc_state_table.MemoryLevel[0 ].ActivityLevel);
drivers/gpu/drm/drm_gem_framebuffer_helper.c +2 -2
@@ -174,8 +174,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, }for (i =0 ; i < info->num_planes; i++) { -unsigned int width = mode_cmd->width / (i ? info->hsub :1 ); -unsigned int height = mode_cmd->height / (i ? info->vsub :1 ); +unsigned int width =drm_format_info_plane_width (info, mode_cmd->width, i); +unsigned int height =drm_format_info_plane_height (info, mode_cmd->height, i);unsigned int min_size; objs[i] =drm_gem_object_lookup (file, mode_cmd->handles[i]);
drivers/gpu/drm/nouveau/nouveau_gem.c +1 -1
@@ -679,7 +679,7 @@ nouveau_gem_pushbuf_reloc_apply(struct nouveau_cli *cli, } nvbo = (void *)(unsigned long )bo[r->reloc_bo_index].user_priv; -if (unlikely (r->reloc_bo_offset +4 > +if (unlikely ((u64 )r->reloc_bo_offset +4 > nvbo->bo.base.size)) {NV_PRINTK (err, cli,"reloc outside of bo\n" ); ret = -EINVAL ;
drivers/gpu/drm/radeon/ci_dpm.c +6 -3
@@ -2466,7 +2466,8 @@ static void ci_register_patching_mc_arb(struct radeon_device *rdev,if (patch && ((rdev->pdev->device ==0x67B0 ) || - (rdev->pdev->device ==0x67B1 ))) { + (rdev->pdev->device ==0x67B1 )) && + (rdev->pdev->revision ==0 )) {if ((memory_clock >100000 ) && (memory_clock <=125000 )) { tmp2 = (((0x31 * engine_clock) /125000 ) -1 ) &0xff ; *dram_timimg2 &= ~0x00ff0000 ;
@@ -3307,7 +3308,8 @@ static int ci_populate_all_memory_levels(struct radeon_device *rdev) pi->smc_state_table.MemoryLevel[0 ].EnabledForActivity =1 ;if ((dpm_table->mclk_table.count >=2 ) && - ((rdev->pdev->device ==0x67B0 ) || (rdev->pdev->device ==0x67B1 ))) { + ((rdev->pdev->device ==0x67B0 ) || (rdev->pdev->device ==0x67B1 )) && + (rdev->pdev->revision ==0 )) { pi->smc_state_table.MemoryLevel[1 ].MinVddc = pi->smc_state_table.MemoryLevel[0 ].MinVddc; pi->smc_state_table.MemoryLevel[1].MinVddcPhases =
@@ -4504,7 +4506,8 @@ static int ci_register_patching_mc_seq(struct radeon_device *rdev,if (patch && ((rdev->pdev->device ==0x67B0 ) || - (rdev->pdev->device ==0x67B1 ))) { + (rdev->pdev->device ==0x67B1 )) && + (rdev->pdev->revision ==0 )) {for (i =0 ; i < table->last; i++) {if (table->last >=SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;
drivers/gpu/drm/tiny/arcpgu.c +2 -1
@@ -248,7 +248,8 @@ DEFINE_DRM_GEM_DMA_FOPS(arcpgu_drm_ops);static int arcpgu_load (struct arcpgu_drm_private *arcpgu) {struct platform_device *pdev =to_platform_device (arcpgu->drm.dev); -struct device_node *encoder_node =NULL , *endpoint_node =NULL ; + struct device_node *encoder_node __free(device_node) = NULL; +struct device_node *endpoint_node =NULL ;struct drm_connector *connector =NULL ;struct drm_device *drm = &arcpgu->drm;struct resource *res;
drivers/hid/hid-playstation.c +4 -2
@@ -2200,7 +2200,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report *struct dualshock4_input_report_usb *usb = (struct dualshock4_input_report_usb *)data; ds4_report = &usb->common; - num_touch_reports = usb->num_touch_reports; + num_touch_reports =min_t (u8, usb->num_touch_reports, +ARRAY_SIZE (usb->touch_reports)); touch_reports = usb->touch_reports; }else if (hdev->bus ==BUS_BLUETOOTH && report->id ==DS4_INPUT_REPORT_BT && size ==DS4_INPUT_REPORT_BT_SIZE ) {
@@ -2214,7 +2215,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report * } ds4_report = &bt->common; - num_touch_reports = bt->num_touch_reports; + num_touch_reports =min_t (u8, bt->num_touch_reports, +ARRAY_SIZE (bt->touch_reports)); touch_reports = bt->touch_reports; }else {hid_err (hdev,"Unhandled reportID=%d\n" , report->id);
drivers/hwmon/corsair-psu.c +2 -2
@@ -805,13 +805,13 @@ static int corsairpsu_probe(struct hid_device *hdev, const struct hid_device_id ret =corsairpsu_init (priv);if (ret <0 ) {dev_err (&hdev->dev,"unable to initialize device (%d)\n" , ret); - goto fail_and_stop; + goto fail_and_close; } ret =corsairpsu_fwinfo (priv);if (ret <0 ) {dev_err (&hdev->dev,"unable to query firmware (%d)\n" , ret); - goto fail_and_stop; + goto fail_and_close; }corsairpsu_get_criticals (priv);
drivers/hwmon/ltc2992.c +33 -10
69 lines not on this page · raw message
drivers/i2c/i2c-core-of.c +1 -1
@@ -182,7 +182,7 @@ static int of_i2c_notify(struct notifier_block *nb, unsigned long action,* Clear the flag before adding the device so that fw_devlink * doesn't skip adding consumers to this device. */ - rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE ; +fwnode_clear_flag (&rd->dn->fwnode,FWNODE_FLAG_NOT_DEVICE ); client =of_i2c_register_device (adap, rd->dn);if (IS_ERR (client)) { dev_err(&adap->dev, "failed to create client for '%pOF'\n",
drivers/iio/adc/ad7768-1.c +7 -2
@@ -241,12 +241,17 @@ static int ad7768_scan_direct(struct iio_dev *indio_dev)struct ad7768_state *st =iio_priv (indio_dev);int readval, ret; -reinit_completion (&st->completion); - ret =ad7768_set_mode (st,AD7768_ONE_SHOT );if (ret <0 )return ret; +reinit_completion (&st->completion); + +/* One-shot mode requires a SYNC pulse to generate a new sample */ + ret =ad7768_send_sync_pulse (st); +if (ret) +return ret; + ret =wait_for_completion_timeout (&st->completion,msecs_to_jiffies (1000 ));if (!ret)
drivers/iio/adc/ti-ads7950.c +5 -6
@@ -47,8 +47,6 @@#define TI_ADS7950_MAX_CHAN 16#define TI_ADS7950_NUM_GPIOS 4 -#define TI_ADS7950_TIMESTAMP_SIZE (sizeof(int64_t) / sizeof(__be16)) -/* val = value, dec = left shift, bits = number of bits of the mask */ #define TI_ADS7950_EXTRACT (val, dec, bits) \ (((val) >> (dec)) & ((1 << (bits)) - 1))
@@ -105,8 +103,7 @@ struct ti_ads7950_state {* DMA (thus cache coherency maintenance) may require the * transfer buffers to live in their own cache lines. */
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_qp.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-btree-remove.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/md/raid5-cache.c +33 -15
48 lines not on this page · raw message
drivers/media/common/videobuf2/videobuf2-dma-sg.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7164/saa7164-core.c +35 -12
47 lines not on this page · raw message
drivers/media/platform/amphion/vpu_v4l2.c +3 -6
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/ti/omap3isp/ispvideo.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/mtd/spi-nor/sst.c +31 -19
50 lines not on this page · raw message
drivers/net/ethernet/micrel/ks8851_common.c +30 -39
69 lines not on this page · raw message
drivers/net/ethernet/micrel/ks8851_par.c +6 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/micrel/ks8851_spi.c +4 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/chain_mode.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/common.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/ring_mode.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +26 -21
47 lines not on this page · raw message
drivers/net/ethernet/wangxun/libwx/wx_hw.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/xmit.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43legacy/xmit.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/init.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt792x_regs.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt792x_usb.c +43 -8
51 lines not on this page · raw message
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +8 -20
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/pci.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wwan/t7xx/t7xx_modem_ops.c +17 -3
Lines of this file are not shown. View the raw message.
drivers/net/wwan/t7xx/t7xx_port_ctrl_msg.c +16 -2
Lines of this file are not shown. View the raw message.
drivers/net/wwan/t7xx/t7xx_port_proxy.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/endpoint/functions/pci-epf-mhi.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/pci/endpoint/functions/pci-epf-ntb.c +2 -54
56 lines not on this page · raw message
drivers/power/supply/max17042_battery.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/regulator/bd9571mwv-regulator.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/remoteproc/xlnx_r5_remoteproc.c +11 -9
Lines of this file are not shown. View the raw message.
drivers/spi/spi-microchip-core-qspi.c +15 -26
41 lines not on this page · raw message
drivers/spi/spi-sun4i.c +44 -36
80 lines not on this page · raw message
drivers/spi/spi-sun6i.c +80 -74
154 lines not on this page · raw message
drivers/spi/spi-synquacer.c +47 -41
88 lines not on this page · raw message
drivers/spi/spi-ti-qspi.c +48 -49
97 lines not on this page · raw message
drivers/spi/spi-uniphier.c +104 -108
212 lines not on this page · raw message
drivers/spi/spi-zynq-qspi.c +28 -51
79 lines not on this page · raw message
drivers/spi/spi.c +38 -25
63 lines not on this page · raw message
drivers/staging/media/atomisp/pci/atomisp_ioctl.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/staging/media/imx/imx-media-csi.c +24 -16
Lines of this file are not shown. View the raw message.
drivers/usb/chipidea/core.c +23 -22
45 lines not on this page · raw message
drivers/video/fbdev/core/fb_defio.c +142 -37
179 lines not on this page · raw message
drivers/video/fbdev/core/fbcon_rotate.c +4 -1
Lines of this file are not shown. View the raw message.
fs/hfsplus/bfind.c +51 -0
51 lines not on this page · raw message
fs/ocfs2/aops.c +45 -29
74 lines not on this page · raw message
fs/smb/client/cifsacl.c +130 -47
177 lines not on this page · raw message
fs/smb/client/cifsacl.h +1 -90
91 lines not on this page · raw message
fs/smb/common/smbacl.h new file +122 -0
122 lines not on this page · raw message
fs/smb/server/smbacl.c +29 -19
48 lines not on this page · raw message
fs/smb/server/smbacl.h +2 -111
113 lines not on this page · raw message
include/linux/device.h +45 -0
45 lines not on this page · raw message
include/linux/fwnode.h +33 -11
44 lines not on this page · raw message
kernel/bpf/verifier.c +153 -83
236 lines not on this page · raw message
kernel/padata.c +37 -99
136 lines not on this page · raw message
lib/test_hmm.c +49 -37
86 lines not on this page · raw message
mm/damon/lru_sort.c +56 -32
88 lines not on this page · raw message
mm/damon/reclaim.c +56 -32
88 lines not on this page · raw message
net/batman-adv/bat_iv_ogm.c +60 -25
85 lines not on this page · raw message
net/batman-adv/bridge_loop_avoidance.c +10 -1
Lines of this file are not shown. View the raw message.
net/batman-adv/tp_meter.c +96 -20
116 lines not on this page · raw message
net/bluetooth/hci_event.c +39 -6
45 lines not on this page · raw message
net/bluetooth/mgmt.c +185 -77
262 lines not on this page · raw message
net/bluetooth/mgmt_util.c +46 -0
46 lines not on this page · raw message
net/qrtr/ns.c +76 -10
86 lines not on this page · raw message
net/rxrpc/conn_event.c +31 -13
44 lines not on this page · raw message
net/rxrpc/rxkad.c +49 -63
112 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +5 -6
Lines of this file are not shown. View the raw message.
security/selinux/selinuxfs.c +15 -39
54 lines not on this page · raw message
sound/aoa/codecs/onyx.c +32 -72
104 lines not on this page · raw message
sound/aoa/codecs/tas.c +39 -74
113 lines not on this page · raw message
sound/aoa/soundbus/i2sbus/pcm.c +72 -71
143 lines not on this page · raw message
sound/core/misc.c +25 -19
44 lines not on this page · raw message
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +1 -1
Lines of this file are not shown. View the raw message.
sound/usb/caiaq/control.c +36 -16
52 lines not on this page · raw message
tools/accounting/getdelays.c +37 -4
41 lines not on this page · raw message
tools/testing/selftests/bpf/progs/verifier_spill_fill.c +281 -0
281 lines not on this page · raw message
tools/testing/selftests/bpf/progs/verifier_subprog_precision.c +77 -10
87 lines not on this page · raw message
tools/testing/selftests/bpf/verifier/precise.c +22 -16
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mqueue/setting deleted +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mqueue/settings new file +1 -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.