Linux 5.18.4
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.18.4 kernel.
All users of the 5.18 kernel series must upgrade.
The updated 5.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-ata | 11 Documentation/devicetree/bindings/regulator/mt6315-regulator.yaml | 4 Documentation/devicetree/bindings/remoteproc/mtk,scp.yaml | 44 + Documentation/tools/rtla/Makefile | 14 Makefile | 2 arch/arm/boot/dts/aspeed-ast2600-evb.dts | 4 arch/arm/mach-ep93xx/clock.c | 10 arch/arm64/net/bpf_jit_comp.c | 1 arch/m68k/Kconfig.machine | 1 arch/m68k/include/asm/pgtable_no.h | 3 arch/m68k/kernel/setup_mm.c | 7 arch/m68k/kernel/setup_no.c | 1 arch/m68k/kernel/time.c | 9 arch/mips/kernel/mips-cpc.c | 1 arch/powerpc/Kconfig | 2 arch/powerpc/include/asm/thread_info.h | 10 arch/powerpc/kernel/ptrace/ptrace-fpu.c | 20 arch/powerpc/kernel/ptrace/ptrace.c | 3 arch/powerpc/platforms/pseries/papr_scm.c | 3 arch/riscv/kernel/efi.c | 2 arch/riscv/kernel/machine_kexec.c | 4 arch/s390/crypto/aes_s390.c | 4 arch/s390/kernel/entry.S | 6 arch/s390/mm/gmap.c | 14 arch/um/drivers/chan_kern.c | 10 arch/um/drivers/line.c | 22 arch/um/drivers/line.h | 4 arch/um/drivers/ssl.c | 2 arch/um/drivers/stdio_console.c | 2 arch/um/include/asm/irq.h | 22 arch/x86/include/asm/cpufeature.h | 2 arch/x86/include/asm/uaccess.h | 2 arch/x86/kvm/mmu/mmu.c | 2 arch/x86/kvm/svm/nested.c | 4 arch/x86/kvm/svm/svm.c | 32 - arch/x86/kvm/svm/svm.h | 2 block/bio.c | 9 block/blk-core.c | 2 block/blk-mq.c | 10 block/genhd.c | 2 drivers/ata/libata-core.c | 21 drivers/ata/libata-scsi.c | 2 drivers/ata/libata-transport.c | 2 drivers/ata/pata_octeon_cf.c | 3 drivers/base/bus.c | 4 drivers/base/dd.c | 10 drivers/block/loop.c | 8 drivers/block/nbd.c | 78 ++- drivers/bus/ti-sysc.c | 4 drivers/char/hw_random/virtio-rng.c | 2 drivers/char/random.c | 15 drivers/char/xillybus/xillyusb.c | 1 drivers/clocksource/timer-oxnas-rps.c | 2 drivers/clocksource/timer-riscv.c | 2 drivers/clocksource/timer-sp804.c | 10 drivers/dma/idxd/dma.c | 23 drivers/dma/xilinx/zynqmp_dma.c | 5 drivers/extcon/extcon-axp288.c | 4 drivers/extcon/extcon-ptn5150.c | 11 drivers/extcon/extcon.c | 33 - drivers/firmware/dmi-sysfs.c | 2 drivers/firmware/stratix10-svc.c | 12 drivers/gpio/gpio-pca953x.c | 19 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 6 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h | 1 drivers/gpu/drm/amd/amdgpu/nv.c | 1 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 17 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 4 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_clk_mgr.c | 5 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_clk_mgr.c | 3 drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c | 9 drivers/gpu/drm/amd/display/dc/dml/dml_wrapper.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 57 +- drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 1 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 3 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 42 + drivers/gpu/drm/bridge/ti-sn65dsi83.c | 2 drivers/gpu/drm/drm_atomic_helper.c | 16 drivers/gpu/drm/imx/ipuv3-crtc.c | 2 drivers/gpu/drm/msm/dp/dp_ctrl.c | 9 drivers/gpu/drm/panfrost/panfrost_drv.c | 5 drivers/gpu/drm/panfrost/panfrost_job.c | 6 drivers/gpu/drm/panfrost/panfrost_job.h | 2 drivers/gpu/drm/radeon/radeon_connectors.c | 4 drivers/hwtracing/coresight/coresight-cpu-debug.c | 7 drivers/i2c/busses/i2c-cadence.c | 12 drivers/i2c/busses/i2c-mt65xx.c | 11 drivers/idle/intel_idle.c | 32 - drivers/iio/adc/ad7124.c | 1 drivers/iio/adc/sc27xx_adc.c | 20 drivers/iio/adc/stmpe-adc.c | 8 drivers/iio/common/st_sensors/st_sensors_core.c | 24 drivers/iio/dummy/iio_simple_dummy.c | 20 drivers/iio/proximity/vl53l0x-i2c.c | 7 drivers/input/mouse/bcm5974.c | 7 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 2 drivers/iommu/arm/arm-smmu/arm-smmu.c | 5 drivers/md/md.c | 15 drivers/md/raid0.c | 31 - drivers/misc/cardreader/rtsx_usb.c | 1 drivers/misc/fastrpc.c | 9 drivers/misc/lkdtm/bugs.c | 10 drivers/misc/lkdtm/lkdtm.h | 8 drivers/misc/lkdtm/usercopy.c | 17 drivers/misc/pvpanic/pvpanic.c | 10 drivers/mmc/core/block.c | 3 drivers/mmc/host/sdhci-pci-gli.c | 3 drivers/mtd/ubi/fastmap-wl.c | 69 +- drivers/mtd/ubi/fastmap.c | 11 drivers/mtd/ubi/ubi.h | 4 drivers/mtd/ubi/vmt.c | 1 drivers/mtd/ubi/wl.c | 19 drivers/net/amt.c | 59 +- drivers/net/bonding/bond_main.c | 2 drivers/net/bonding/bond_netlink.c | 5 drivers/net/bonding/bond_options.c | 10 drivers/net/bonding/bond_procfs.c | 15 drivers/net/dsa/lantiq_gswip.c | 4 drivers/net/dsa/mv88e6xxx/chip.c | 1 drivers/net/dsa/mv88e6xxx/serdes.c | 27 - drivers/net/dsa/realtek/rtl8365mb.c | 38 - drivers/net/ethernet/altera/altera_tse_main.c | 6 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 8 drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c | 2 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 2 drivers/net/ethernet/mellanox/mlx5/core/dev.c | 54 +- drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 drivers/net/ethernet/mellanox/mlx5/core/en/fs.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 19 drivers/net/ethernet/mellanox/mlx5/core/en/trap.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c | 5 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 29 - drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 31 - drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 38 + drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 10 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 37 + drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 12 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h | 10 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c | 9 drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 9 drivers/net/ethernet/netronome/nfp/flower/conntrack.c | 32 - drivers/net/ethernet/netronome/nfp/flower/match.c | 16 drivers/net/ethernet/netronome/nfp/nfdk/dp.c | 12 drivers/net/ethernet/netronome/nfp/nfdk/nfdk.h | 3 drivers/net/ethernet/netronome/nfp/nfp_net.h | 11 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 4 drivers/net/ethernet/sfc/efx_channels.c | 6 drivers/net/ethernet/sfc/net_driver.h | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 4 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 8 drivers/net/phy/at803x.c | 33 - drivers/net/phy/dp83867.c | 29 + drivers/net/phy/mdio_bus.c | 1 drivers/nfc/st21nfca/se.c | 53 +- drivers/pci/controller/pcie-brcmstb.c | 257 +--------- drivers/pcmcia/Kconfig | 2 drivers/phy/qualcomm/phy-qcom-qmp.c | 2 drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 10 drivers/platform/x86/barco-p50-gpio.c | 5 drivers/platform/x86/hp-wmi.c | 29 - drivers/power/supply/ab8500_fg.c | 19 drivers/power/supply/axp288_charger.c | 17 drivers/power/supply/axp288_fuel_gauge.c | 41 + drivers/power/supply/charger-manager.c | 7 drivers/power/supply/max8997_charger.c | 8 drivers/power/supply/power_supply_core.c | 2 drivers/pwm/pwm-lp3943.c | 1 drivers/pwm/pwm-raspberrypi-poe.c | 2 drivers/remoteproc/imx_rproc.c | 3 drivers/remoteproc/mtk_common.h | 2 drivers/remoteproc/mtk_scp.c | 70 ++ drivers/rpmsg/qcom_smd.c | 4 drivers/rpmsg/virtio_rpmsg_bus.c | 9 drivers/rtc/rtc-ftrtc010.c | 34 - drivers/rtc/rtc-mt6397.c | 2 drivers/scsi/lpfc/lpfc_crtn.h | 4 drivers/scsi/lpfc/lpfc_ct.c | 2 drivers/scsi/lpfc/lpfc_init.c | 2 drivers/scsi/lpfc/lpfc_nvme.c | 6 drivers/scsi/lpfc/lpfc_scsi.c | 6 drivers/scsi/lpfc/lpfc_sli.c | 25 drivers/scsi/myrb.c | 11 drivers/scsi/sd.c | 5 drivers/soc/rockchip/grf.c | 2 drivers/soundwire/intel.c | 3 drivers/soundwire/qcom.c | 6 drivers/spi/spi-fsi.c | 12 drivers/staging/fieldbus/anybuss/host.c | 2 drivers/staging/greybus/audio_codec.c | 4 drivers/staging/r8188eu/core/rtw_fw.c | 2 drivers/staging/r8188eu/core/rtw_mlme.c | 6 drivers/staging/r8188eu/core/rtw_xmit.c | 13 drivers/staging/r8188eu/include/rtw_xmit.h | 2 drivers/staging/rtl8192e/rtllib_softmac.c | 2 drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 2 drivers/staging/rtl8712/os_intfs.c | 1 drivers/staging/rtl8712/usb_intf.c | 12 drivers/staging/rtl8712/usb_ops.c | 27 - drivers/staging/rtl8723bs/core/rtw_mlme.c | 12 drivers/thunderbolt/tb.c | 19 drivers/thunderbolt/test.c | 16 drivers/thunderbolt/tunnel.c | 11 drivers/thunderbolt/tunnel.h | 4 drivers/tty/goldfish.c | 2 drivers/tty/n_tty.c | 38 + drivers/tty/serial/8250/8250_aspeed_vuart.c | 2 drivers/tty/serial/8250/8250_fintek.c | 8 drivers/tty/serial/8250/8250_mtk.c | 7 drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 drivers/tty/serial/digicolor-usart.c | 2 drivers/tty/serial/fsl_lpuart.c | 24 drivers/tty/serial/icom.c | 2 drivers/tty/serial/meson_uart.c | 13 drivers/tty/serial/msm_serial.c | 5 drivers/tty/serial/owl-uart.c | 1 drivers/tty/serial/rda-uart.c | 2 drivers/tty/serial/sa1100.c | 4 drivers/tty/serial/serial_txx9.c | 2 drivers/tty/serial/sh-sci.c | 6 drivers/tty/serial/sifive.c | 8 drivers/tty/serial/st-asc.c | 4 drivers/tty/serial/stm32-usart.c | 15 drivers/tty/serial/uartlite.c | 3 drivers/tty/synclink_gt.c | 2 drivers/tty/sysrq.c | 13 drivers/usb/core/hcd-pci.c | 4 drivers/usb/dwc2/gadget.c | 1 drivers/usb/dwc3/drd.c | 9 drivers/usb/dwc3/dwc3-pci.c | 2 drivers/usb/dwc3/gadget.c | 31 + drivers/usb/dwc3/host.c | 2 drivers/usb/host/isp116x-hcd.c | 6 drivers/usb/host/oxu210hp-hcd.c | 2 drivers/usb/musb/omap2430.c | 1 drivers/usb/phy/phy-omap-otg.c | 4 drivers/usb/storage/karma.c | 15 drivers/usb/typec/mux.c | 14 drivers/usb/typec/tcpm/fusb302.c | 4 drivers/usb/usbip/stub_dev.c | 2 drivers/usb/usbip/stub_rx.c | 2 drivers/vdpa/ifcvf/ifcvf_main.c | 3 drivers/vdpa/vdpa.c | 13 drivers/vdpa/vdpa_user/vduse_dev.c | 7 drivers/vhost/vringh.c | 10 drivers/video/fbdev/hyperv_fb.c | 19 drivers/video/fbdev/pxa3xx-gcu.c | 12 drivers/virtio/virtio_pci_modern_dev.c | 1 drivers/watchdog/rti_wdt.c | 2 drivers/watchdog/rzg2l_wdt.c | 46 - drivers/watchdog/ts4800_wdt.c | 5 drivers/watchdog/wdat_wdt.c | 1 drivers/xen/xlate_mmu.c | 1 fs/afs/dir.c | 5 fs/ceph/addr.c | 33 - fs/ceph/mds_client.c | 33 + fs/ceph/xattr.c | 10 fs/cifs/cifs_swn.c | 4 fs/cifs/cifsencrypt.c | 8 fs/cifs/cifsfs.c | 2 fs/cifs/cifsfs.h | 2 fs/cifs/cifsglob.h | 24 fs/cifs/connect.c | 30 - fs/cifs/dfs_cache.c | 4 fs/cifs/misc.c | 27 - fs/cifs/sess.c | 11 fs/cifs/smb1ops.c | 6 fs/cifs/smb2ops.c | 7 fs/cifs/smb2pdu.c | 9 fs/cifs/smbdirect.c | 4 fs/cifs/transport.c | 40 - fs/erofs/zdata.c | 2 fs/f2fs/checkpoint.c | 12 fs/f2fs/f2fs.h | 23 fs/f2fs/file.c | 1 fs/f2fs/node.c | 23 fs/fs-writeback.c | 37 + fs/inode.c | 2 fs/jffs2/fs.c | 1 fs/kernfs/dir.c | 31 - fs/ksmbd/smbacl.c | 1 fs/ksmbd/transport_rdma.c | 1 fs/nfs/nfs4proc.c | 4 fs/nfsd/filecache.c | 9 fs/zonefs/super.c | 11 include/linux/blkdev.h | 1 include/linux/export.h | 7 include/linux/extcon.h | 2 include/linux/iio/common/st_sensors.h | 3 include/linux/jump_label.h | 4 include/linux/mlx5/mlx5_ifc.h | 5 include/linux/nodemask.h | 38 - include/linux/random.h | 2 include/linux/xarray.h | 1 include/net/ax25.h | 1 include/net/bluetooth/hci_core.h | 17 include/net/bonding.h | 6 include/net/flow_offload.h | 1 include/net/netfilter/nf_tables.h | 1 include/net/netfilter/nf_tables_offload.h | 2 include/net/sch_generic.h | 42 - include/net/tcp.h | 19 include/trace/events/tcp.h | 2 kernel/bpf/core.c | 14 kernel/sched/autogroup.c | 2 kernel/trace/trace.c | 13 kernel/trace/trace_syscalls.c | 35 - lib/Makefile | 2 lib/iov_iter.c | 20 lib/nodemask.c | 4 lib/xarray.c | 5 mm/filemap.c | 9 mm/huge_memory.c | 3 net/ax25/af_ax25.c | 27 - net/ax25/ax25_dev.c | 1 net/ax25/ax25_subr.c | 2 net/bluetooth/hci_core.c | 4 net/bluetooth/hci_request.c | 2 net/bluetooth/hci_sync.c | 62 +- net/bluetooth/mgmt.c | 45 + net/core/filter.c | 2 net/core/flow_offload.c | 6 net/core/neighbour.c | 2 net/ipv4/inet_hashtables.c | 10 net/ipv4/ip_gre.c | 11 net/ipv4/tcp.c | 8 net/ipv4/tcp_bbr.c | 20 net/ipv4/tcp_bic.c | 14 net/ipv4/tcp_cdg.c | 30 - net/ipv4/tcp_cong.c | 18 net/ipv4/tcp_cubic.c | 22 net/ipv4/tcp_dctcp.c | 11 net/ipv4/tcp_highspeed.c | 18 net/ipv4/tcp_htcp.c | 10 net/ipv4/tcp_hybla.c | 18 net/ipv4/tcp_illinois.c | 12 net/ipv4/tcp_input.c | 41 - net/ipv4/tcp_ipv4.c | 2 net/ipv4/tcp_lp.c | 6 net/ipv4/tcp_metrics.c | 12 net/ipv4/tcp_nv.c | 24 net/ipv4/tcp_output.c | 34 - net/ipv4/tcp_rate.c | 2 net/ipv4/tcp_scalable.c | 4 net/ipv4/tcp_vegas.c | 21 net/ipv4/tcp_veno.c | 24 net/ipv4/tcp_westwood.c | 3 net/ipv4/tcp_yeah.c | 30 - net/ipv4/xfrm4_protocol.c | 1 net/ipv6/ping.c | 8 net/ipv6/seg6_hmac.c | 1 net/ipv6/seg6_local.c | 1 net/ipv6/tcp_ipv6.c | 2 net/key/af_key.c | 10 net/netfilter/nf_tables_api.c | 54 -- net/netfilter/nf_tables_offload.c | 23 net/netfilter/nft_nat.c | 3 net/openvswitch/actions.c | 6 net/openvswitch/conntrack.c | 4 net/sched/act_ct.c | 2 net/smc/af_smc.c | 1 net/smc/smc_cdc.c | 2 net/sunrpc/xdr.c | 6 net/sunrpc/xprtrdma/rpc_rdma.c | 5 net/sunrpc/xprtrdma/svc_rdma_rw.c | 4 net/tipc/bearer.c | 3 net/unix/af_unix.c | 2 net/xdp/xsk.c | 5 net/xdp/xsk_queue.h | 8 scripts/gdb/linux/config.py | 6 scripts/get_abi.pl | 4 scripts/mod/modpost.c | 5 security/keys/trusted-keys/trusted_tpm2.c | 4 sound/pci/hda/patch_conexant.c | 7 sound/pci/hda/patch_realtek.c | 2 sound/soc/amd/acp/acp-pci.c | 1 sound/soc/codecs/rt5640.c | 11 sound/soc/codecs/rt5640.h | 2 sound/soc/fsl/fsl_sai.h | 4 sound/soc/intel/boards/bytcr_rt5640.c | 2 sound/usb/pcm.c | 5 sound/usb/quirks-table.h | 7 tools/objtool/check.c | 3 tools/perf/arch/x86/util/evlist.c | 5 tools/perf/arch/x86/util/evsel.c | 24 tools/perf/arch/x86/util/evsel.h | 7 tools/perf/arch/x86/util/topdown.c | 46 + tools/perf/arch/x86/util/topdown.h | 7 tools/perf/builtin-c2c.c | 4 tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c | 2 tools/testing/selftests/net/bpf/Makefile | 4 tools/testing/selftests/netfilter/nft_nat.sh | 43 + tools/tracing/rtla/Makefile | 35 + 402 files changed, 2782 insertions(+), 1810 deletions(-)
Adrian Hunter (1):
mmc: block: Fix CQE recovery reset success
Alex Deucher (1):
drm/amdgpu: update VCN codec support for Yellow Carp
Alexander Gordeev (1):
s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag
Alexander Lobakin (1):
modpost: fix removing numeric suffixes
Alexandru Tachici (1):
iio: adc: ad7124: Remove shift from scan_type
Alvin Šipraga (1):
net: dsa: realtek: rtl8365mb: fix GMII caps for ports with internal PHY
Andre Przywara (1):
clocksource/drivers/sp804: Avoid error on multiple instances
Andrea Mayer (1):
net: seg6: fix seg6_lookup_any_nexthop() to handle VRFs using flowi_l3mdev
AngeloGioacchino Del Regno (2):
Revert "serial: 8250_mtk: Make sure to select the right FEATURE_SEL"
i2c: mediatek: Optimize master_xfer() and avoid circular locking
Arnaud Pouliquen (1):
rpmsg: virtio: Fix the unregistration of the device rpmsg_ctrl
Aurabindo Pillai (1):
drm/amd/display: remove stale config guards
Aya Levin (1):
net: ping6: Fix ping -6 with interface name
Baokun Li (1):
jffs2: fix memory leak in jffs2_do_fill_super
Bedant Patnaik (1):
platform/x86: hp-wmi: Use zero insize parameter only when supported
Ben Chuang (1):
mmc: sdhci-pci-gli: Fix GL9763E runtime PM when the system resumes from suspend
Biju Das (4):
watchdog: rzg2l_wdt: Fix 32bit overflow issue
watchdog: rzg2l_wdt: Fix Runtime PM usage
watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait context'
watchdog: rzg2l_wdt: Fix reset control imbalance
Bjorn Andersson (1):
usb: typec: mux: Check dev_set_name() return value
Bjorn Helgaas (4):
Revert "PCI: brcmstb: Do not turn off WOL regulators on suspend" Revert "PCI: brcmstb: Add control of subdevice voltage regulators" Revert "PCI: brcmstb: Add mechanism to turn on subdev regulators" Revert "PCI: brcmstb: Split brcm_pcie_setup() into two funcs"
Brian Norris (2):
drm/bridge: analogix_dp: Support PSR-exit to disable transition drm/atomic: Force bridge self-refresh-exit on CRTC switch
Cameron Berkenpas (1):
ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo Yoga DuetITL 2021
Changbin Du (1):
sysrq: do not omit current cpu when showing backtrace of all active CPUs
Changcheng Liu (1):
net/mlx5: correct ECE offset in query qp output
Chao Yu (1):
f2fs: fix to tag gcing flag on page during file defragment
Christian Borntraeger (1):
s390/gmap: voluntarily schedule during key setting
Christian König (1):
drm/amdgpu: fix limiting AV1 to the first instance on VCN3
Christoph Hellwig (4):
scsi: sd: Don't call blk_cleanup_disk() in sd_probe() block, loop: support partitions without scanning
block: take destination bvec offsets into account in bio_copy_data_iter
block: use bio_queue_enter instead of blk_queue_enter in bio_poll
Christophe JAILLET (4):
remoteproc: mtk_scp: Fix a potential double free
staging: fieldbus: Fix the error handling path in anybuss_host_common_probe()
virtio: pci: Fix an error handling path in vp_modern_probe()
stmmac: intel: Fix an error handling path in intel_eth_pci_probe()
Christophe Leroy (1):
lkdtm/bugs: Don't expect thread termination without CONFIG_UBSAN_TRAP
Chuck Lever (3):
NFSD: Fix potential use-after-free in nfsd_file_put()
SUNRPC: Trap RDMA segment overflows
SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer()
Cixi Geng (2):
iio: adc: sc27xx: fix read big scale voltage not right
iio: adc: sc27xx: Fine tune the scale calibration values
Damien Le Moal (2):
scsi: sd: Fix potential NULL pointer dereference
zonefs: fix handling of explicit_open option on mount
Dan Carpenter (6):
soundwire: qcom: fix an error message in swrm_wait_for_frame_gen_enabled() drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq()
net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry()
octeontx2-af: fix error code in is_valid_offset()
net/sched: act_api: fix error code in tcf_ct_flow_table_fill_tuple_ipv6()
extcon: Fix extcon_get_extcon_dev() error handling
Daniel Borkmann (1):
net, neigh: Set lower cap for neigh_managed_work rearming
Daniel Bristot de Oliveira (1):
rtla/Makefile: Properly handle dependencies
Daniel Gibson (1):
tty: n_tty: Restore EOF push handling behavior
Dave Jiang (2):
dmaengine: idxd: set DMA_INTERRUPT cap bit
dmaengine: idxd: add missing callback function to support DMA_INTERRUPT
David Galiffi (1):
drm/amd/display: Check if modulo is 0 before dividing.
David Howells (2):
afs: Fix infinite loop found by xfstest generic/676
iov_iter: Fix iter_xarray_get_pages{,_alloc}()
David Safford (1):
KEYS: trusted: tpm2: Fix migratable logic
Dongliang Mu (1):
f2fs: remove WARN_ON in f2fs_is_valid_blkaddr
Duoming Zhou (8):
ax25: Fix ax25 session cleanup problems
drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback()
drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle()
drivers: staging: rtl8192eu: Fix deadlock in rtw_joinbss_event_prehandle
drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop()
drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
drivers: tty: serial: Fix deadlock in sa1100_set_termios()
drivers: usb: host: Fix deadlock in oxu_bus_suspend()
Eddie James (1):
spi: fsi: Fix spurious timeout
Eli Cohen (1):
vdpa: Fix error logic in vdpa_nl_cmd_dev_get_doit
Eric Dumazet (4):
tcp: add accessors to read/set tp->snd_cwnd
tcp: tcp_rtx_synack() can be called from process context bpf, arm64: Clear prog->jited_len along prog->jited
tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd
Etienne van der Linde (1):
nfp: flower: restructure flow-key for gre+vlan combination
Evan Green (1):
USB: hcd-pci: Fully suspend across freeze/thaw cycle
Evan Quan (1):
drm/amd/pm: correct the metrics version for SMU 11.0.11/12/13
Fabien Parent (1):
regulator: mt6315-regulator: fix invalid allowed mode
Fei Qin (1):
nfp: remove padding in nfp_nfdk_tx_desc
Feras Daoud (1):
net/mlx5: Rearm the FW tracer after each tracer event
Florian Westphal (1):
netfilter: nat: really support inet nat without l3 address
Gal Pressman (1):
net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure
Genjian Zhang (1):
ep93xx: clock: Do not return the address of the freed memory
Gong Yuanjun (3):
mips: cpc: Fix refcount leak in mips_cpc_default_phys_base drm/radeon: fix a possible null pointer dereference drm/amd/pm: fix a potential gpu_metrics_table memory leak
Greg Kroah-Hartman (2):
export: fix string handling of namespace in EXPORT_SYMBOL_NS Linux 5.18.4
Greg Ungerer (3):
m68knommu: set ZERO_PAGE() to the allocated zeroed page
m68knommu: fix undefined reference to `_init_sp'
m68knommu: fix undefined reference to `mach_get_rtc_pll'
Guangguan Wang (1):
net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct smc_wr_tx_pend_priv *"
Guilherme G. Piccoli (2):
misc/pvpanic: Convert regular spinlock into trylock on panic path
coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier
Guoju Fang (1):
net: sched: add barrier to fix packet stuck problem for lockless qdisc
Guoqing Jiang (1):
md: protect md_unregister_thread from reentrancy
Haibo Chen (1):
gpio: pca953x: use the correct register address to do regcache sync
Haisu Wang (1):
blk-mq: do not update io_ticks with passthrough requests
Hangbin Liu (3):
bonding: NS target should accept link local address
bonding: show NS IPv6 targets in proc master info
bonding: guard ns_targets by CONFIG_IPV6
Hangyu Hua (4):
usb: usbip: fix a refcount leak in stub_probe()
rpmsg: virtio: Fix possible double free in rpmsg_probe()
rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev()
char: xillybus: fix a refcount leak in cleanup_dev()
Hannes Reinecke (1):
scsi: myrb: Fix up null pointer access on myrb_cleanup()
Hans de Goede (2):
power: supply: axp288_fuel_gauge: Fix battery reporting on the One Mix 1
power: supply: axp288_fuel_gauge: Drop BIOS version check from "T3 MRD" DMI quirk
Hao Luo (1):
kernfs: Separate kernfs_pr_cont_buf and rename_lock.
Heikki Krogerus (1):
usb: dwc3: host: Stop setting the ACPI companion
Heinrich Schuchardt (1):
riscv: read-only pages should not be writable
Hoang Le (1):
tipc: check attribute length for bearer name
Howard Chiu (1):
ARM: dts: aspeed: ast2600-evb: Enable RX delay for MAC0/MAC1
Huang Guobin (1):
tty: Fix a possible resource leak in icom_probe
Hyunchul Lee (1):
ksmbd: smbd: fix connection dropped issue
Ilpo Järvinen (9):
serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485
serial: uartlite: Fix BRKINT clearing
serial: digicolor-usart: Don't allow CS5-6
serial: rda-uart: Don't allow CS5-6
serial: txx9: Don't allow CS5-6
serial: sh-sci: Don't allow CS5-6
serial: sifive: Sanitize CSIZE and c_iflag
serial: st-asc: Sanitize CSIZE and correct PARENB for CS7
serial: stm32-usart: Correct CSIZE, bits, and parity
Ilya Maximets (1):
net: openvswitch: fix misuse of the cached connection on tuple changes
Jaegeuk Kim (1):
f2fs: avoid infinite loop to flush node pages
Jakob Koschel (1):
staging: greybus: codecs: fix type confusion of list iterator variable
James Smart (4):
scsi: lpfc: Correct BDE type for XMIT_SEQ64_WQE in lpfc_ct_reject_event()
scsi: lpfc: Resolve some cleanup issues following abort path refactoring
scsi: lpfc: Resolve some cleanup issues following SLI path refactoring
scsi: lpfc: Address NULL pointer dereference after starget_to_rport()
Jan Beulich (1):
x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm()
Jann Horn (1):
s390/crypto: fix scatterwalk_unmap() callers in AES-GCM
Jason A. Donenfeld (3):
random: avoid checking crng_ready() twice in random_init()
random: mark bootloader randomness code as __init
random: account for arch randomness in bits
Jason Wang (2):
vdpa: ifcvf: set pci driver data in probe
virtio-rng: make device ready before making request
Jchao Sun (1):
writeback: Fix inode->i_io_list not be protected by inode->i_lock error
Jeff Xie (1):
tracing: Make tp_printk work on syscall tracepoints
Jens Axboe (1):
block: make bioset_exit() fully resilient against being called twice
Jeremy Soller (1):
ALSA: hda/realtek: Add quirk for HP Dev One
Jesse Zhang (1):
drm/amdkfd:Fix fw version for 10.3.6
Jiasheng Jiang (3):
lkdtm/bugs: Check for the NULL pointer after calling kmalloc
staging: r8188eu: add check for kzalloc
platform/x86: barco-p50-gpio: Add check for platform_driver_register
Johan Hovold (1):
phy: qcom-qmp: fix pipe-clock imbalance on power-on failure
Johannes Berg (1):
um: line: Use separate IRQs per line
John Ogness (2):
serial: meson: acquire port->lock in startup()
serial: msm_serial: disable interrupts in __msm_console_write()
Jorge Lopez (1):
platform/x86: hp-wmi: Resolve WMI query failures on some devices
Jun Miao (1):
tracing: Fix sleeping function called from invalid context on RT kernel
Kan Liang (2):
perf evsel: Fixes topdown events in a weak group for the hybrid platform perf parse-events: Move slots event for the hybrid platform too
Kees Cook (2):
lkdtm/usercopy: Expand size of "out of frame" object
nodemask: Fix return values to be unsigned
Kinglong Mee (1):
xprtrdma: treat all calls not a bcall when bc_serv is NULL
Krzysztof Kozlowski (3):
rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value
rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value
Kuan-Ying Lee (1):
scripts/gdb: change kernel config dumping method
Kuniyuki Iwashima (1):
af_unix: Fix a data-race in unix_dgram_peer_wake_me().
Kuogee Hsieh (1):
drm/msm/dp: Always clear mask bits to disable interrupts at dp_ctrl_reset_irq_ctrl()
Leo Yan (1):
perf c2c: Fix sorting in percent_rmt_hitm_cmp()
Leon Romanovsky (1):
net/mlx5: Don't use already freed action pointer
Li Jun (1):
extcon: ptn5150: Add queue work sync before driver release
Liao Chang (1):
RISC-V: use memcpy for kexec_file mode
Lijo Lazar (1):
drm/amd/pm: Fix missing thermal throttler status
Lin Ma (1):
USB: storage: karma: fix rio_karma_init return
Lina Wang (1):
selftests net: fix bpf build error
Linus Torvalds (3):
bluetooth: don't use bitmaps for random flag accesses
drm: imx: fix compiler warning with gcc-12
iov_iter: fix build issue due to possible type mis-match
Linus Walleij (2):
power: supply: core: Initialize struct to zero
power: supply: ab8500_fg: Allocate wq in probe
Liu Xinpeng (1):
watchdog: wdat_wdt: Stop watchdog when rebooting the system
Lucas Tanure (1):
i2c: cadence: Increase timeout per message if necessary
Luiz Augusto von Dentz (2):
Bluetooth: MGMT: Add conditions for setting HCI_CONN_FLAG_REMOTE_WAKEUP
Bluetooth: hci_sync: Fix attempting to suspend with unfiltered passive scan
Maciej Fijalkowski (1):
xsk: Fix handling of invalid descriptors in XSK TX batching API
Maciej W. Rozycki (1):
serial: sifive: Report actual baud base rather than fixed 115200
Maor Dickman (1):
net/mlx5e: TC NIC mode, fix tc chains miss table
Marek Behún (1):
net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete
Marek Szyprowski (1):
usb: dwc2: gadget: don't reset gadget's driver->bus
Marek Vasut (1):
drm/bridge: ti-sn65dsi83: Handle dsi_lanes == 0 as invalid
Mark Bloch (3):
net/mlx5: Lag, filter non compatible devices net/mlx5: fs, fail conflicting actions net/mlx5: E-Switch, pair only capable devices
Mark-PK Tsai (1):
tracing: Avoid adding tracer option before update_tracer_options
Martin Faltesek (3):
nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION
nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling
nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION
Martin Habets (1):
sfc: fix considering that all channels have TX queues
Masahiro Yamada (5):
xen: unexport __init-annotated xen_xlate_map_ballooned_pages()
net: mdio: unexport __init-annotated mdio_bus_init()
net: xfrm: unexport __init-annotated xfrm4_protocol_init()
net: ipv6: unexport __init-annotated seg6_hmac_init()
modpost: fix undefined behavior of is_arm_mapping_symbol()
Masami Hiramatsu (1):
bootconfig: Make the bootconfig.o as a normal object file
Mathias Nyman (1):
Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag
Matthew Wilcox (Oracle) (2):
filemap: Cache the value of vm_flags
mm/huge_memory: Fix xarray node memory leak
Maxim Levitsky (1):
KVM: SVM: fix tsc scaling cache logic
Maxim Mikityanskiy (2):
net/mlx5e: Disable softirq in mlx5e_activate_rq to avoid race condition net/mlx5e: Update netdev features after changing XDP state
Menglong Dong (1):
bpf: Fix probe read error in ___bpf_prog_run()
Miaoqian Lin (16):
tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe
serial: 8250_aspeed_vuart: Fix potential NULL dereference in aspeed_vuart_probe
usb: musb: Fix missing of_node_put() in omap2430_probe
iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check
iio: proximity: vl53l0x: Fix return value check of wait_for_completion_timeout
soc: rockchip: Fix refcount leak in rockchip_grf_init
rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe
firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle
watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking
watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe
net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks
net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register
ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe
net: ethernet: bgmac: Fix refcount leak in bcma_mdio_mii_register
net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list
net: altera: Fix refcount leak in altera_tse_mdio_create
Michael Ellerman (3):
powerpc/kasan: Force thread size increase with KASAN
powerpc: Don't select HAVE_IRQ_EXIT_ON_IRQ_STACK powerpc/32: Fix overread/overwrite of thread_struct via ptrace
Michael Straube (1):
staging: r8188eu: fix struct rt_firmware_hdr
Michael Walle (1):
net: lan966x: check devm_of_phy_get() for -EDEFER_PROBE
Michal Kubecek (1):
Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process"
Mika Westerberg (1):
thunderbolt: Use different lane for second DisplayPort tunnel
Ming Lei (1):
blk-mq: don't touch ->tagset in blk_mq_get_sq_hctx
Miquel Raynal (1):
iio: st_sensors: Add a local lock for protecting odr
Mohammad Zafar Ziya (1):
drm/amdgpu/jpeg2: Add jpeg vmid update under IB submit
Muchun Song (1):
tcp: use alloc_large_system_hash() to allocate table_perturb
Nicholas Kazlauskas (1):
drm/amd/display: Check zero planes for OTG disable W/A on clock change
Niels Dossche (1):
usb: usbip: add missing device lock on tweak configuration cmd
Nícolas F. R. A. Prado (1):
dt-bindings: remoteproc: mediatek: Make l1tcm reg exclusive to mt819x
Oder Chiou (1):
ASoC: rt5640: Do not manipulate pin "Platform Clock" if the "Platform Clock" is not in the DAPM
Olivier Matz (2):
ixgbe: fix bcast packets Rx on VF after promisc removal
ixgbe: fix unexpected VLAN Rx in promisc mode on VF
Pablo Neira Ayuso (6):
netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net path
netfilter: nf_tables: delete flowtable hooks via transaction list
netfilter: nf_tables: always initialize flowtable hook list in transaction
netfilter: nf_tables: release new hooks on unsupported flowtable flags
netfilter: nf_tables: memleak flow rule from commit path
netfilter: nf_tables: bail out early if hardware offload is not supported
Pascal Hambourg (1):
md/raid0: Ignore RAID0 layout if the second zone has only one device
Paul Blakey (2):
net/mlx5: CT: Fix header-rewrite re-use for tupels net/mlx5e: CT: Fix cleanup of CT before cleanup of TC ct rules
Paulo Alcantara (1):
cifs: fix reconnect on smb3 mount types
Peng Fan (1):
remoteproc: imx_rproc: Ignore create mem entry for resource table
Peter Zijlstra (5):
sched/autogroup: Fix sysctl move
objtool: Mark __ubsan_handle_builtin_unreachable() as noreturn x86/cpu: Elide KCSAN for cpu_has() and friends jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE
Pierre-Louis Bossart (2):
soundwire: intel: prevent pm_runtime resume prior to system suspend
soundwire: qcom: return error when pm_runtime_get_sync fails
Radhey Shyam Pandey (1):
dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type
Randy Dunlap (1):
pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards
Saeed Mahameed (1):
net/mlx5: Fix mlx5_get_next_dev() peer device matching
Samuel Holland (2):
phy: rockchip-inno-usb2: Fix muxed interrupt support clocksource/drivers/riscv: Events are stopped during CPU suspend
Saravana Kannan (1):
driver core: Fix wait_for_device_probe() & deferred_probe_timeout interaction
Saurabh Sengar (1):
video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1
Schspa Shi (1):
driver: base: fix UAF when driver_attach failed
SeongJae Park (1):
scripts/get_abi: Fix wrong script file name in the help message
Sergey Shtylyov (1):
ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files
Shaoqin Huang (1):
KVM: x86/mmu: Check every prev_roots in __kvm_mmu_free_obsolete_roots()
Shengjiu Wang (1):
ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition
Sherry Sun (1):
tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id and ida_simple_get
Shuah Khan (1):
misc: rtsx: set NULL intfdata when probe fails
Shyam Prasad N (2):
cifs: return errors during session setup during reconnects
cifs: populate empty hostnames for extra channels
Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw: Fix fwnode passed to phylink_create()
Song Liu (1):
selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read
Srinivas Kandagatla (1):
soundwire: qcom: adjust autoenumeration timeout
Steve French (1):
cifs: version operations for smb20 unneeded when legacy support disabled
Steven Price (1):
drm/panfrost: Job should reference MMU not file_priv
Syed Saba kareem (1):
ASoC: SOF: amd: Fixed Build error
Taehee Yoo (5):
amt: fix return value of amt_update_handler()
amt: fix possible memory leak in amt_rcv()
amt: fix wrong usage of pskb_may_pull()
amt: fix possible null-ptr-deref in amt_rcv()
amt: fix wrong type string definition
Takashi Iwai (2):
ALSA: usb-audio: Skip generic sync EP parse for secondary EP
ALSA: usb-audio: Set up (implicit) sync for Saffire 6
Tan Tee Min (1):
net: phy: dp83867: retrigger SGMII AN when link change
Thinh Nguyen (1):
usb: dwc3: gadget: Only End Transfer for ep0 data phase
Tinghan Shen (1):
remoteproc: mediatek: Fix side effect of mt8195 sram power on
Tony Lindgren (1):
bus: ti-sysc: Fix warnings for unbind for serial
Trond Myklebust (1):
NFSv4: Don't hold the layoutget locks across multiple RPC calls
Tyler Erickson (3):
scsi: sd: Fix interpretation of VPD B9h length
libata: fix reading concurrent positioning ranges log
libata: fix translation of concurrent positioning ranges
Uwe Kleine-König (2):
pwm: lp3943: Fix duty calculation in case period was clamped
pwm: raspberrypi-poe: Fix endianness in firmware struct
Vaibhav Jain (1):
powerpc/papr_scm: don't requests stats with '0' sized stats buffer
Venky Shankar (1):
ceph: allow ceph.dir.rctime xattr to be updatable
Vincent Ray (1):
net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog
Vincent Whitchurch (1):
cifs: fix potential deadlock in direct reclaim
Viorel Suman (1):
net: phy: at803x: disable WOL at probe
Wang Cheng (2):
staging: rtl8712: fix uninit-value in usb_read8() and friends
staging: rtl8712: fix uninit-value in r871xu_drv_init()
Wang Weiyang (1):
tty: goldfish: Use tty_port_destroy() to destroy port
Weizhao Ouyang (1):
erofs: fix 'backmost' member of z_erofs_decompress_frontend
Wesley Cheng (1):
usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback
Willem de Bruijn (1):
ip_gre: test csum_start instead of transport header
Xiaoke Wang (2):
iio: dummy: iio_simple_dummy: check the return value of kstrdup()
staging: rtl8712: fix a potential memory leak in r871xu_drv_init()
Xiaomeng Tong (2):
misc: fastrpc: fix an incorrect NULL check on list iterator
firmware: stratix10-svc: fix a missing check on list iterator
Xie Yongji (2):
vringh: Fix loop descriptors check in the indirect cases
vduse: Fix NULL pointer dereference on sysfs access
Xin Xiong (1):
ksmbd: fix reference count leak in smb_check_perm_dacl()
Xiubo Li (2):
ceph: flush the mdlog for filesystem sync
ceph: fix possible deadlock when holding Fwb to get inline_data
Yang Yingliang (4):
rtc: mt6397: check return value after calling platform_get_resource() iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe() iommu/arm-smmu-v3: check return value after calling platform_get_resource()
video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_probe/remove()
Yu Kuai (4):
nbd: don't clear 'NBD_CMD_INFLIGHT' flag if request is not completed
nbd: call genl_unregister_family() first in nbd_cleanup()
nbd: fix race between nbd_alloc_config() and module removal
nbd: fix io hung while disconnecting device
Yu Xiao (1):
nfp: only report pause frame configuration for physical device
YueHaibing (1):
serial: cpm_uart: Fix build error without CONFIG_SERIAL_CPM_CONSOLE
Yury Norov (1):
drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate
Zhang Wensheng (2):
driver core: fix deadlock in __device_attach
nbd: fix possible overflow on 'first_minor' in nbd_dev_add()
Zhen Ni (1):
USB: host: isp116x: check return value after calling platform_get_resource()
Zheng Yongjun (1):
usb: dwc3: pci: Fix pm_runtime_get_sync() error checking
Zhengjun Xing (1):
perf record: Support sample-read topdown metric group for hybrid platforms
Zheyu Ma (1):
tty: synclink_gt: Fix null-pointer-dereference in slgt_clean()
Zhihao Cheng (2):
ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not empty
ubi: ubi_create_volume: Fix use-after-free when volume creation failed
bumwoo lee (1):
extcon: Modify extcon device to be created after driver data is set
huangwenhui (1):
ALSA: hda/conexant - Fix loopback issue with CX20632
liuyacan (1):
net/smc: set ini->smcrv2.ib_dev_v2 to NULL if SMC-Rv2 is unavailable
Íñigo Huguet (1):
sfc: fix wrong tx channel offset with efx_separate_tx_channels
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-ata +6 -5
@@ -107,13 +107,14 @@ Description: described in ATA8 7.16 and 7.17. Only valid if the device is not a PM. - pio_mode: (RO) Transfer modes supported by the device when - in PIO mode. Mostly used by PATA device. + pio_mode: (RO) PIO transfer mode used by the device. + Mostly used by PATA devices. - xfer_mode: (RO) Current transfer mode + xfer_mode: (RO) Current transfer mode. Mostly used by + PATA devices. - dma_mode: (RO) Transfer modes supported by the device when - in DMA mode. Mostly used by PATA device. + dma_mode: (RO) DMA transfer mode used by the device. + Mostly used by PATA devices. class: (RO) Device class. Can be "ata" for disk, "atapi" for packet device, "pmp" for PM, or
Documentation/devicetree/bindings/regulator/mt6315-regulator.yaml +2 -2
@@ -55,7 +55,7 @@ examples: regulator-min-microvolt = <300000>; regulator-max-microvolt = <1193750>; regulator-enable-ramp-delay = <256>; - regulator-allowed-modes = <0 1 2 4>; + regulator-allowed-modes = <0 1 2>; }; vbuck3 {
@@ -63,7 +63,7 @@ examples: regulator-min-microvolt = <300000>; regulator-max-microvolt = <1193750>; regulator-enable-ramp-delay = <256>; - regulator-allowed-modes = <0 1 2 4>; + regulator-allowed-modes = <0 1 2>; }; }; };
Documentation/devicetree/bindings/remoteproc/mtk,scp.yaml +30 -14
67 lines not on this page · raw message
Documentation/tools/rtla/Makefile +13 -1
@@ -17,9 +17,21 @@ DOC_MAN1 = $(addprefix $(OUTPUT),$(_DOC_MAN1)) RST2MAN_DEP := $(shell command -v rst2man 2>/dev/null) RST2MAN_OPTS += --verbose +TEST_RST2MAN = $(shell sh -c "rst2man --version > /dev/null 2>&1 || echo n") + $(OUTPUT)%.1: %.rst ifndef RST2MAN_DEP - $(error "rst2man not found, but required to generate man pages") + $(info ********************************************) + $(info ** NOTICE: rst2man not found) + $(info **) + $(info ** Consider installing the latest rst2man from your) + $(info ** distribution, e.g., 'dnf install python3-docutils' on Fedora,) + $(info ** or from source:) + $(info **) + $(info ** https://docutils.sourceforge.io/docs/dev/repository.html ) + $(info **) + $(info ********************************************) + $(error NOTICE: rst2man required to generate man pages) endif rst2man $(RST2MAN_OPTS) $< > $@
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 18 -SUBLEVEL = 3 +SUBLEVEL = 4 EXTRAVERSION = NAME = Superb Owl
arch/arm/boot/dts/aspeed-ast2600-evb.dts +2 -2
@@ -103,7 +103,7 @@ ethphy3: ethernet-phy@0 { &mac0 { status = "okay"; - phy-mode = "rgmii"; + phy-mode = "rgmii-rxid"; phy-handle = <ðphy0>; pinctrl-names = "default";
@@ -114,7 +114,7 @@ &mac0 { &mac1 { status = "okay"; - phy-mode = "rgmii"; + phy-mode = "rgmii-rxid"; phy-handle = <ðphy1>; pinctrl-names = "default";
arch/arm/mach-ep93xx/clock.c +6 -4
@@ -345,9 +345,10 @@ static struct clk_hw *clk_hw_register_ddiv(const char *name, psc->hw.init = &init; clk =clk_register (NULL , &psc->hw); -if (IS_ERR (clk)) +if (IS_ERR (clk)) {kfree (psc); - +return ERR_CAST (clk); + }return &psc->hw; }
@@ -452,9 +453,10 @@ static struct clk_hw *clk_hw_register_div(const char *name, psc->hw.init = &init; clk =clk_register (NULL , &psc->hw); -if (IS_ERR (clk)) +if (IS_ERR (clk)) {kfree (psc); - +return ERR_CAST (clk); + }return &psc->hw; }
arch/arm64/net/bpf_jit_comp.c +1 -0
@@ -1261,6 +1261,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_jit_binary_free (header); prog->bpf_func =NULL ; prog->jited =0 ; + prog->jited_len =0 ; goto out_off; }bpf_jit_binary_lock_ro (header);
arch/m68k/Kconfig.machine +1 -0
@@ -335,6 +335,7 @@ comment "Machine Options" config UBOOT bool "Support for U-Boot command line parameters" + depends on COLDFIRE help If you say Y here kernel will try to collect command line parameters from the initial u-boot stack.
arch/m68k/include/asm/pgtable_no.h +2 -1
@@ -42,7 +42,8 @@ extern void paging_init(void);* ZERO_PAGE is a global shared page that is always zero: used * for zero-mapped memory areas etc.. */ -#define ZERO_PAGE (vaddr) (virt_to_page(0)) +extern void *empty_zero_page; +#define ZERO_PAGE (vaddr) (virt_to_page(empty_zero_page))/* * All 32bit addresses are effectively valid for vmalloc...
arch/m68k/kernel/setup_mm.c +0 -7
@@ -87,15 +87,8 @@ void (*mach_sched_init) (void) __initdata = NULL;void (*mach_init_IRQ) (void )__initdata =NULL ;void (*mach_get_model) (char *model);void (*mach_get_hardware_list) (struct seq_file *m); -/* machine dependent timer functions */ -int (*mach_hwclk) (int ,struct rtc_time *); -EXPORT_SYMBOL (mach_hwclk);unsigned int (*mach_get_ss)(void ); -int (*mach_get_rtc_pll)(struct rtc_pll_info *); -int (*mach_set_rtc_pll)(struct rtc_pll_info *);EXPORT_SYMBOL (mach_get_ss); -EXPORT_SYMBOL (mach_get_rtc_pll); -EXPORT_SYMBOL (mach_set_rtc_pll);void (*mach_reset)(void );void (*mach_halt)(void );void (*mach_power_off)(void );
arch/m68k/kernel/setup_no.c +0 -1
@@ -50,7 +50,6 @@ char __initdata command_line[COMMAND_LINE_SIZE];/* machine dependent timer functions */ void (*mach_sched_init)(void )__initdata =NULL ; -int (*mach_hwclk) (int ,struct rtc_time *);/* machine dependent reboot functions */ void (*mach_reset)(void );
arch/m68k/kernel/time.c +9 -0
@@ -63,6 +63,15 @@ void timer_heartbeat(void)#endif /* CONFIG_HEARTBEAT */ #ifdef CONFIG_M68KCLASSIC +/* machine dependent timer functions */ +int (*mach_hwclk) (int, struct rtc_time*); +EXPORT_SYMBOL(mach_hwclk); + +int (*mach_get_rtc_pll)(struct rtc_pll_info *); +int (*mach_set_rtc_pll)(struct rtc_pll_info *); +EXPORT_SYMBOL(mach_get_rtc_pll); +EXPORT_SYMBOL(mach_set_rtc_pll); + #if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC) void read_persistent_clock64(struct timespec64 *ts) {
arch/mips/kernel/mips-cpc.c +1 -0
@@ -28,6 +28,7 @@ phys_addr_t __weak mips_cpc_default_phys_base(void) cpc_node =of_find_compatible_node (of_root,NULL ,"mti,mips-cpc" );if (cpc_node) { err =of_address_to_resource (cpc_node,0 , &res); +of_node_put (cpc_node);if (!err)return res.start; }
arch/powerpc/Kconfig +0 -2
@@ -218,7 +218,6 @@ config PPC select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx) select HAVE_IOREMAP_PROT - select HAVE_IRQ_EXIT_ON_IRQ_STACK select HAVE_IRQ_TIME_ACCOUNTING select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE
@@ -771,7 +770,6 @@ config THREAD_SHIFT range 13 15 default "15" if PPC_256K_PAGES default "14" if PPC64 - default "14" if KASAN default "13" help Used to define the stack size. The default is almost always what you
arch/powerpc/include/asm/thread_info.h +8 -2
@@ -14,10 +14,16 @@#ifdef __KERNEL__ -#if defined(CONFIG_VMAP_STACK ) &&CONFIG_THREAD_SHIFT <PAGE_SHIFT +#ifdef CONFIG_KASAN +#define MIN_THREAD_SHIFT (CONFIG_THREAD_SHIFT + 1) +#else +#define MIN_THREAD_SHIFT CONFIG_THREAD_SHIFT +#endif + +#if defined(CONFIG_VMAP_STACK ) &&MIN_THREAD_SHIFT <PAGE_SHIFT #define THREAD_SHIFT PAGE_SHIFT#else -#define THREAD_SHIFT CONFIG_THREAD_SHIFT +#define THREAD_SHIFT MIN_THREAD_SHIFT#endif #define THREAD_SIZE (1 << THREAD_SHIFT)
arch/powerpc/kernel/ptrace/ptrace-fpu.c +14 -6
@@ -17,9 +17,13 @@ int ptrace_get_fpr(struct task_struct *child, int index, unsigned long *data)#ifdef CONFIG_PPC_FPU_REGS flush_fp_to_thread (child); -if (fpidx < (PT_FPSCR -PT_FPR0 )) -memcpy (data, &child->thread.TS_FPR (fpidx),sizeof (long )); -else +if (fpidx < (PT_FPSCR -PT_FPR0 )) { +if (IS_ENABLED (CONFIG_PPC32 )) +// On 32-bit the index we are passed refers to 32-bit words + *data = ((u32 *)child->thread.fp_state.fpr)[fpidx]; +else +memcpy (data, &child->thread.TS_FPR (fpidx),sizeof (long )); + }else *data = child->thread.fp_state.fpscr;#else *data =0 ;
@@ -39,9 +43,13 @@ int ptrace_put_fpr(struct task_struct *child, int index, unsigned long data)#ifdef CONFIG_PPC_FPU_REGS flush_fp_to_thread (child); -if (fpidx < (PT_FPSCR -PT_FPR0 )) -memcpy (&child->thread.TS_FPR (fpidx), &data,sizeof (long )); -else +if (fpidx < (PT_FPSCR -PT_FPR0 )) { +if (IS_ENABLED (CONFIG_PPC32 )) +// On 32-bit the index we are passed refers to 32-bit words + ((u32 *)child->thread.fp_state.fpr)[fpidx] = data; +else +memcpy (&child->thread.TS_FPR (fpidx), &data,sizeof (long )); + }else child->thread.fp_state.fpscr = data;#endif
arch/powerpc/kernel/ptrace/ptrace.c +3 -0
@@ -450,4 +450,7 @@ void __init pt_regs_check(void)#else BUILD_BUG_ON (IS_ENABLED (CONFIG_HAVE_FUNCTION_DESCRIPTORS ));#endif + +// ptrace_get/put_fpr() rely on PPC32 and VSX being incompatible +BUILD_BUG_ON (IS_ENABLED (CONFIG_PPC32 ) &&IS_ENABLED (CONFIG_VSX )); }
arch/powerpc/platforms/pseries/papr_scm.c +3 -0
@@ -465,6 +465,9 @@ static int papr_scm_pmu_check_events(struct papr_scm_priv *p, struct nvdimm_pmuu32 available_events;int index, rc =0 ; +if (!p->stat_buffer_len) +return -ENOENT ; + available_events = (p->stat_buffer_len -sizeof (struct papr_scm_perf_stats )) /sizeof (struct papr_scm_perf_stat );if (available_events ==0 )
arch/riscv/kernel/efi.c +1 -1
@@ -65,7 +65,7 @@ static int __init set_permissions(pte_t *ptep, unsigned long addr, void *data)if (md->attribute &EFI_MEMORY_RO ) { val =pte_val (pte) & ~_PAGE_WRITE; - val =pte_val (pte) | _PAGE_READ; + val |= _PAGE_READ; pte =__pte (val); }if (md->attribute &EFI_MEMORY_XP ) {
arch/riscv/kernel/machine_kexec.c +3 -1
@@ -65,7 +65,9 @@ machine_kexec_prepare(struct kimage *image)if (image->segment[i].memsz <=sizeof (fdt))continue ; -if (copy_from_user (&fdt, image->segment[i].buf,sizeof (fdt))) +if (image->file_mode) +memcpy (&fdt, image->segment[i].buf,sizeof (fdt)); +else if (copy_from_user (&fdt, image->segment[i].buf,sizeof (fdt)))continue ;if (fdt_check_header (&fdt))
arch/s390/crypto/aes_s390.c +2 -2
@@ -701,7 +701,7 @@ static inline void _gcm_sg_unmap_and_advance(struct gcm_sg_walk *gw, unsigned int nbytes) { gw->walk_bytes_remain -= nbytes; -scatterwalk_unmap (&gw->walk); +scatterwalk_unmap (gw->walk_ptr);scatterwalk_advance (&gw->walk, nbytes);scatterwalk_done (&gw->walk,0 , gw->walk_bytes_remain); gw->walk_ptr =NULL ;
@@ -776,7 +776,7 @@ static int gcm_out_walk_go(struct gcm_sg_walk *gw, unsigned int minbytesneeded) goto out; } -scatterwalk_unmap (&gw->walk); +scatterwalk_unmap (gw->walk_ptr); gw->walk_ptr =NULL ; gw->ptr = gw->buf;
arch/s390/kernel/entry.S +5 -1
@@ -258,6 +258,10 @@ ENTRY(sie64a) BPEXIT __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST) .Lsie_entry: sie 0(%r14) +# Let the next instruction be NOP to avoid triggering a machine check +# and handling it in a guest as result of the instruction execution. + nopr 7 +.Lsie_leave: BPOFF BPENTER __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST) .Lsie_skip:
@@ -557,7 +561,7 @@ ENTRY(mcck_int_handler) jno .Lmcck_panic #if IS_ENABLED(CONFIG_KVM) OUTSIDE %r9,.Lsie_gmap,.Lsie_done,6f - OUTSIDE %r9,.Lsie_entry,.Lsie_skip,4f + OUTSIDE %r9,.Lsie_entry,.Lsie_leave,4f oi __LC_CPU_FLAGS+7, _CIF_MCCK_GUEST j 5f 4: CHKSTG .Lmcck_panic
arch/s390/mm/gmap.c +14 -0
@@ -2608,6 +2608,18 @@ static int __s390_enable_skey_pte(pte_t *pte, unsigned long addr,return 0 ; } +/* +* Give a chance to schedule after setting a key to 256 pages. +* We only hold the mm lock, which is a rwsem and the kvm srcu. +* Both can sleep. +*/ +static int __s390_enable_skey_pmd (pmd_t *pmd,unsigned long addr, +unsigned long next,struct mm_walk *walk) +{ +cond_resched (); +return 0 ; +} +static int __s390_enable_skey_hugetlb (pte_t *pte,unsigned long addr,unsigned long hmask,unsigned long next,struct mm_walk *walk)
@@ -2630,12 +2642,14 @@ static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr, end = start +HPAGE_SIZE -1 ;__storage_key_init_range (start, end);set_bit (PG_arch_1, &page->flags); +cond_resched ();return 0 ; }static const struct mm_walk_ops enable_skey_walk_ops = { .hugetlb_entry = __s390_enable_skey_hugetlb, .pte_entry = __s390_enable_skey_pte, + .pmd_entry = __s390_enable_skey_pmd, };int s390_enable_skey (void )
arch/um/drivers/chan_kern.c +5 -5
@@ -133,7 +133,7 @@ static void line_timer_cb(struct work_struct *work) struct line *line = container_of(work, struct line, task.work);if (!line->throttled) -chan_interrupt (line, line->driver->read_irq); +chan_interrupt (line, line->read_irq); }int enable_chan (struct line *line)
@@ -195,9 +195,9 @@ void free_irqs(void) chan = list_entry(ele, struct chan, free_list);if (chan->input && chan->enabled) -um_free_irq (chan->line->driver->read_irq, chan); +um_free_irq (chan->line->read_irq, chan);if (chan->output && chan->enabled) -um_free_irq (chan->line->driver->write_irq, chan); +um_free_irq (chan->line->write_irq, chan); chan->enabled =0 ; } }
@@ -215,9 +215,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq)spin_unlock_irqrestore (&irqs_to_free_lock, flags); }else {if (chan->input && chan->enabled) -um_free_irq (chan->line->driver->read_irq, chan); +um_free_irq (chan->line->read_irq, chan);if (chan->output && chan->enabled) -um_free_irq (chan->line->driver->write_irq, chan); +um_free_irq (chan->line->write_irq, chan); chan->enabled =0 ; }if (chan->ops->close !=NULL )
arch/um/drivers/line.c +13 -9
@@ -139,7 +139,7 @@ static int flush_buffer(struct line *line) count = line->buffer +LINE_BUFSIZE - line->head; n =write_chan (line->chan_out, line->head, count, - line->driver->write_irq); + line->write_irq);if (n <0 )return n;if (n == count) {
@@ -156,7 +156,7 @@ static int flush_buffer(struct line *line) count = line->tail - line->head; n =write_chan (line->chan_out, line->head, count, - line->driver->write_irq); + line->write_irq);if (n <0 )return n;
@@ -195,7 +195,7 @@ int line_write(struct tty_struct *tty, const unsigned char *buf, int len) ret =buffer_data (line, buf, len); else { n =write_chan (line->chan_out, buf, len, - line->driver->write_irq); + line->write_irq);if (n <0 ) { ret = n; goto out_up;
@@ -215,7 +215,7 @@ void line_throttle(struct tty_struct *tty) {struct line *line = tty->driver_data; -deactivate_chan (line->chan_in, line->driver->read_irq); +deactivate_chan (line->chan_in, line->read_irq); line->throttled =1 ; }
@@ -224,7 +224,7 @@ void line_unthrottle(struct tty_struct *tty)struct line *line = tty->driver_data; line->throttled =0 ; -chan_interrupt (line, line->driver->read_irq); +chan_interrupt (line, line->read_irq); }static irqreturn_t line_write_interrupt (int irq,void *data)
@@ -260,19 +260,23 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data)int err;if (input) { - err =um_request_irq (driver->read_irq, fd,IRQ_READ , - line_interrupt,IRQF_SHARED , + err =um_request_irq (UM_IRQ_ALLOC , fd,IRQ_READ , + line_interrupt,0 , driver->read_irq_name, data);if (err <0 )return err; + + line->read_irq = err; }if (output) { - err =um_request_irq (driver->write_irq, fd,IRQ_WRITE , - line_write_interrupt,IRQF_SHARED , + err =um_request_irq (UM_IRQ_ALLOC , fd,IRQ_WRITE , + line_write_interrupt,0 , driver->write_irq_name, data);if (err <0 )return err; + + line->write_irq = err; }return 0 ;
arch/um/drivers/line.h +2 -2
@@ -23,9 +23,7 @@ struct line_driver {const short minor_start;const short type;const short subtype; -const int read_irq;const char *read_irq_name; -const int write_irq;const char *write_irq_name;struct mc_device mc;struct tty_driver *driver;
@@ -35,6 +33,8 @@ struct line {struct tty_port port;int valid; +int read_irq, write_irq; +char *init_str;struct list_head chan_list;struct chan *chan_in, *chan_out;
arch/um/drivers/ssl.c +0 -2
@@ -47,9 +47,7 @@ static struct line_driver driver = { .minor_start = 64, .type = TTY_DRIVER_TYPE_SERIAL, .subtype = 0, - .read_irq = SSL_IRQ, .read_irq_name = "ssl", - .write_irq = SSL_WRITE_IRQ, .write_irq_name = "ssl-write", .mc = { .list = LIST_HEAD_INIT(driver.mc.list),
arch/um/drivers/stdio_console.c +0 -2
@@ -53,9 +53,7 @@ static struct line_driver driver = { .minor_start = 0, .type = TTY_DRIVER_TYPE_CONSOLE, .subtype = SYSTEM_TYPE_CONSOLE, - .read_irq = CONSOLE_IRQ, .read_irq_name = "console", - .write_irq = CONSOLE_WRITE_IRQ, .write_irq_name = "console-write", .mc = { .list = LIST_HEAD_INIT(driver.mc.list),
arch/um/include/asm/irq.h +9 -13
@@ -4,19 +4,15 @@#define TIMER_IRQ 0#define UMN_IRQ 1 -#define CONSOLE_IRQ 2 -#define CONSOLE_WRITE_IRQ 3 -#define UBD_IRQ 4 -#define UM_ETH_IRQ 5 -#define SSL_IRQ 6 -#define SSL_WRITE_IRQ 7 -#define ACCEPT_IRQ 8 -#define MCONSOLE_IRQ 9 -#define WINCH_IRQ 10 -#define SIGIO_WRITE_IRQ 11 -#define TELNETD_IRQ 12 -#define XTERM_IRQ 13 -#define RANDOM_IRQ 14 +#define UBD_IRQ 2 +#define UM_ETH_IRQ 3 +#define ACCEPT_IRQ 4 +#define MCONSOLE_IRQ 5 +#define WINCH_IRQ 6 +#define SIGIO_WRITE_IRQ 7 +#define TELNETD_IRQ 8 +#define XTERM_IRQ 9 +#define RANDOM_IRQ 10#ifdef CONFIG_UML_NET_VECTOR
arch/x86/include/asm/cpufeature.h +1 -1
@@ -51,7 +51,7 @@ extern const char * const x86_power_flags[32];extern const char *const x86_bug_flags[NBUGINTS *32 ];#define test_cpu_cap (c, bit) \ - test_bit(bit, (unsigned long *)((c)->x86_capability)) + arch_test_bit(bit, (unsigned long *)((c)->x86_capability))/* * There are 32 bits/features in each mask word. The high bits
arch/x86/include/asm/uaccess.h +1 -1
@@ -439,7 +439,7 @@ do { \ [ptr] "+m" (*_ptr), \[old] " +a" (__old) \ : [new] ltype (__new) \ - : "memory", "cc"); \ + : "memory"); \ if (unlikely(__err)) \ goto label; \ if (unlikely(!success)) \
arch/x86/kvm/mmu/mmu.c +1 -1
@@ -5168,7 +5168,7 @@ static void __kvm_mmu_free_obsolete_roots(struct kvm *kvm, struct kvm_mmu *mmu) roots_to_free |=KVM_MMU_ROOT_CURRENT ;for (i =0 ; i <KVM_MMU_NUM_PREV_ROOTS ; i++) { -if (is_obsolete_root (kvm, mmu->root.hpa)) +if (is_obsolete_root (kvm, mmu->prev_roots[i].hpa)) roots_to_free |=KVM_MMU_ROOT_PREVIOUS (i); }
arch/x86/kvm/svm/nested.c +2 -2
@@ -896,7 +896,7 @@ int nested_svm_vmexit(struct vcpu_svm *svm)if (svm->tsc_ratio_msr != kvm_default_tsc_scaling_ratio) {WARN_ON (!svm->tsc_scaling_enabled); vcpu->arch.tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio; -svm_write_tsc_multiplier (vcpu, vcpu->arch.tsc_scaling_ratio); +__svm_write_tsc_multiplier (vcpu->arch.tsc_scaling_ratio); } svm->nested.ctl.nested_cr3 =0 ;
@@ -1293,7 +1293,7 @@ void nested_svm_update_tsc_ratio_msr(struct kvm_vcpu *vcpu) vcpu->arch.tsc_scaling_ratio =kvm_calc_nested_tsc_multiplier (vcpu->arch.l1_tsc_scaling_ratio, svm->tsc_ratio_msr); -svm_write_tsc_multiplier (vcpu, vcpu->arch.tsc_scaling_ratio); +__svm_write_tsc_multiplier (vcpu->arch.tsc_scaling_ratio); }/* Inverse operation of nested_copy_vmcb_control_to_cache(). asid is copied too. */
arch/x86/kvm/svm/svm.c +20 -12
@@ -463,11 +463,24 @@ static int has_svm(void)return 1 ; } +void __svm_write_tsc_multiplier (u64 multiplier) +{ +preempt_disable (); + +if (multiplier ==__this_cpu_read (current_tsc_ratio)) + goto out; + +wrmsrl (MSR_AMD64_TSC_RATIO , multiplier); +__this_cpu_write (current_tsc_ratio, multiplier); +out: +preempt_enable (); +} +static void svm_hardware_disable (void ) {/* Make sure we clean up behind us */ if (tsc_scaling) -wrmsrl (MSR_AMD64_TSC_RATIO ,SVM_TSC_RATIO_DEFAULT ); +__svm_write_tsc_multiplier (SVM_TSC_RATIO_DEFAULT );cpu_svm_disable ();
@@ -513,8 +526,7 @@ static int svm_hardware_enable(void)* Set the default value, even if we don't use TSC scaling * to avoid having stale value in the msr */ -wrmsrl (MSR_AMD64_TSC_RATIO ,SVM_TSC_RATIO_DEFAULT ); -__this_cpu_write (current_tsc_ratio,SVM_TSC_RATIO_DEFAULT ); +__svm_write_tsc_multiplier (SVM_TSC_RATIO_DEFAULT ); }
@@ -915,11 +927,12 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)vmcb_mark_dirty (svm->vmcb,VMCB_INTERCEPTS ); } -void svm_write_tsc_multiplier (struct kvm_vcpu *vcpu,u64 multiplier) +static void svm_write_tsc_multiplier (struct kvm_vcpu *vcpu,u64 multiplier) { -wrmsrl (MSR_AMD64_TSC_RATIO , multiplier); +__svm_write_tsc_multiplier (multiplier); } +/* Evaluate instruction intercepts that depend on guest CPUID features. */ static void svm_recalc_instruction_intercepts (struct kvm_vcpu *vcpu,struct vcpu_svm *svm)
@@ -1276,13 +1289,8 @@ static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu)sev_es_prepare_switch_to_guest (hostsa); } -if (tsc_scaling) { -u64 tsc_ratio = vcpu->arch.tsc_scaling_ratio; -if (tsc_ratio !=__this_cpu_read (current_tsc_ratio)) { -__this_cpu_write (current_tsc_ratio, tsc_ratio); -wrmsrl (MSR_AMD64_TSC_RATIO , tsc_ratio); - } - } +if (tsc_scaling) +__svm_write_tsc_multiplier (vcpu->arch.tsc_scaling_ratio);if (likely (tsc_aux_uret_slot >=0 ))kvm_set_user_return_msr (tsc_aux_uret_slot, svm->tsc_aux,-1ull );
arch/x86/kvm/svm/svm.h +1 -1
@@ -558,7 +558,7 @@ 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);void nested_svm_update_tsc_ratio_msr (struct kvm_vcpu *vcpu); -void svm_write_tsc_multiplier (struct kvm_vcpu *vcpu,u64 multiplier); +void __svm_write_tsc_multiplier (u64 multiplier);void nested_copy_vmcb_control_to_cache (struct vcpu_svm *svm,struct vmcb_control_area *control); void nested_copy_vmcb_save_to_cache(struct vcpu_svm *svm,
block/bio.c +6 -3
@@ -693,6 +693,7 @@ static void bio_alloc_cache_destroy(struct bio_set *bs)bio_alloc_cache_prune (cache,-1U ); }free_percpu (bs->cache); + bs->cache =NULL ; }/**
@@ -1336,10 +1337,12 @@ void bio_copy_data_iter(struct bio *dst, struct bvec_iter *dst_iter,struct bio_vec src_bv =bio_iter_iovec (src, *src_iter);struct bio_vec dst_bv =bio_iter_iovec (dst, *dst_iter);unsigned int bytes =min (src_bv.bv_len, dst_bv.bv_len); -void *src_buf; +void *src_buf =bvec_kmap_local (&src_bv); +void *dst_buf =bvec_kmap_local (&dst_bv); - src_buf =bvec_kmap_local (&src_bv); -memcpy_to_bvec (&dst_bv, src_buf); +memcpy (dst_buf, src_buf, bytes); + +kunmap_local (dst_buf);kunmap_local (src_buf);bio_advance_iter_single (src, src_iter, bytes);
block/blk-core.c +1 -1
@@ -948,7 +948,7 @@ int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags)blk_flush_plug (current->plug, false); -if (blk_queue_enter (q,BLK_MQ_REQ_NOWAIT )) +if (bio_queue_enter (bio))return 0 ;if (queue_is_mq (q)) { ret =blk_mq_poll (q, cookie, iob, flags);
block/blk-mq.c +5 -5
@@ -133,7 +133,8 @@ static bool blk_mq_check_inflight(struct request *rq, void *priv, {struct mq_inflight *mi = priv; -if ((!mi->part->bd_partno || rq->part == mi->part) && +if (rq->part &&blk_do_io_stat (rq) && + (!mi->part->bd_partno || rq->part == mi->part) &&blk_mq_rq_state (rq) ==MQ_RQ_IN_FLIGHT ) mi->inflight[rq_data_dir (rq)]++;
@@ -2123,8 +2124,7 @@ static bool blk_mq_has_sqsched(struct request_queue *q)*/ static struct blk_mq_hw_ctx *blk_mq_get_sq_hctx (struct request_queue *q) { -struct blk_mq_hw_ctx *hctx; - +struct blk_mq_ctx *ctx =blk_mq_get_ctx (q);/* * If the IO scheduler does not respect hardware queues when * dispatching, we just don't bother with multiple HW queues and
@@ -2132,8 +2132,8 @@ static struct blk_mq_hw_ctx *blk_mq_get_sq_hctx(struct request_queue *q)* just causes lock contention inside the scheduler and pointless cache * bouncing. */ - hctx =blk_mq_map_queue_type (q,HCTX_TYPE_DEFAULT , -raw_smp_processor_id ()); +struct blk_mq_hw_ctx *hctx =blk_mq_map_queue (q,0 , ctx); +if (!blk_mq_hctx_stopped (hctx))return hctx;return NULL ;
block/genhd.c +2 -0
@@ -385,6 +385,8 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)if (disk->flags & (GENHD_FL_NO_PART |GENHD_FL_HIDDEN ))return -EINVAL ; +if (test_bit (GD_SUPPRESS_PART_SCAN , &disk->state)) +return -EINVAL ;if (disk->open_partitions)return -EBUSY ;
drivers/ata/libata-core.c +13 -8
@@ -2003,16 +2003,16 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,return err_mask; } -static bool ata_log_supported (struct ata_device *dev,u8 log) +static int ata_log_supported (struct ata_device *dev,u8 log) {struct ata_port *ap = dev->link->ap;if (dev->horkage &ATA_HORKAGE_NO_LOG_DIR ) -return false; +return 0 ;if (ata_read_log_page (dev,ATA_LOG_DIRECTORY ,0 , ap->sector_buf,1 )) -return false; -return get_unaligned_le16 (&ap->sector_buf[log *2 ]) ? true : false; +return 0 ; +return get_unaligned_le16 (&ap->sector_buf[log *2 ]); }static bool ata_identify_page_supported (struct ata_device *dev,u8 page)
@@ -2448,15 +2448,20 @@ static void ata_dev_config_cpr(struct ata_device *dev)struct ata_cpr_log *cpr_log =NULL ;u8 *desc, *buf =NULL ; -if (ata_id_major_version (dev->id) <11 || - !ata_log_supported (dev,ATA_LOG_CONCURRENT_POSITIONING_RANGES )) +if (ata_id_major_version (dev->id) <11 ) + goto out; + + buf_len =ata_log_supported (dev,ATA_LOG_CONCURRENT_POSITIONING_RANGES ); +if (buf_len ==0 ) goto out;/* * Read the concurrent positioning ranges log (0x47). We can have at -* most 255 32B range descriptors plus a 64B header. +* most 255 32B range descriptors plus a 64B header. This log varies in +* size, so use the size reported in the GPL directory. Reading beyond +* the supported length will result in an error. */ - buf_len = (64 +255 *32 +511 ) & ~511 ; + buf_len <<=9 ; buf =kzalloc (buf_len,GFP_KERNEL );if (!buf) goto out;
drivers/ata/libata-scsi.c +1 -1
@@ -2101,7 +2101,7 @@ static unsigned int ata_scsiop_inq_b9(struct ata_scsi_args *args, u8 *rbuf)/* SCSI Concurrent Positioning Ranges VPD page: SBC-5 rev 1 or later */ rbuf[1 ] =0xb9 ; -put_unaligned_be16 (64 + (int )cpr_log->nr_cpr *32 -4 , &rbuf[3 ]); +put_unaligned_be16 (64 + (int )cpr_log->nr_cpr *32 -4 , &rbuf[2 ]);for (i =0 ; i < cpr_log->nr_cpr; i++, desc +=32 ) { desc[0 ] = cpr_log->cpr[i].num;
drivers/ata/libata-transport.c +1 -1
@@ -196,7 +196,7 @@ static struct { { XFER_PIO_0, "XFER_PIO_0" }, { XFER_PIO_SLOW, "XFER_PIO_SLOW" } }; -ata_bitfield_name_match (xfer,ata_xfer_names) +ata_bitfield_name_search (xfer, ata_xfer_names)/* * ATA Port attributes
drivers/ata/pata_octeon_cf.c +3 -0
@@ -856,12 +856,14 @@ static int octeon_cf_probe(struct platform_device *pdev)int i; res_dma =platform_get_resource (dma_dev,IORESOURCE_MEM ,0 );if (!res_dma) { +put_device (&dma_dev->dev);of_node_put (dma_node);return -EINVAL ; } cf_port->dma_base = (u64 )devm_ioremap (&pdev->dev, res_dma->start,resource_size (res_dma));if (!cf_port->dma_base) { +put_device (&dma_dev->dev);of_node_put (dma_node);return -EINVAL ; }
@@ -871,6 +873,7 @@ static int octeon_cf_probe(struct platform_device *pdev) irq = i; irq_handler = octeon_cf_interrupt; } +put_device (&dma_dev->dev); }of_node_put (dma_node); }
drivers/base/bus.c +3 -1
@@ -617,7 +617,7 @@ int bus_add_driver(struct device_driver *drv)if (drv->bus->p->drivers_autoprobe) { error =driver_attach (drv);if (error) - goto out_unregister; + goto out_del_list; }module_add_driver (drv->owner, drv);
@@ -644,6 +644,8 @@ int bus_add_driver(struct device_driver *drv)return 0 ; +out_del_list: +klist_del (&priv->knode_bus); out_unregister:kobject_put (&priv->kobj);/* drv->p is freed in driver_release() */
drivers/base/dd.c +4 -6
@@ -257,7 +257,6 @@ DEFINE_SHOW_ATTRIBUTE(deferred_devs);int driver_deferred_probe_timeout;EXPORT_SYMBOL_GPL (driver_deferred_probe_timeout); -static DECLARE_WAIT_QUEUE_HEAD (probe_timeout_waitqueue);static int __init deferred_probe_timeout_setup (char *str) {
@@ -312,7 +311,6 @@ static void deferred_probe_timeout_work_func(struct work_struct *work)list_for_each_entry (p, &deferred_probe_pending_list, deferred_probe)dev_info (p->device,"deferred probe pending\n" );mutex_unlock (&deferred_probe_mutex); -wake_up_all (&probe_timeout_waitqueue); } static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func);
@@ -716,9 +714,6 @@ int driver_probe_done(void)*/ void wait_for_device_probe (void ) { -/* wait for probe timeout */ -wait_event (probe_timeout_waitqueue, !driver_deferred_probe_timeout); -/* wait for the deferred probe workqueue to finish */ flush_work (&deferred_probe_work);
@@ -941,6 +936,7 @@ static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)static int __device_attach (struct device *dev,bool allow_async) {int ret =0 ; +bool async = false;device_lock (dev);if (dev->p->dead) {
@@ -979,7 +975,7 @@ static int __device_attach(struct device *dev, bool allow_async)*/ dev_dbg (dev,"scheduling asynchronous probe\n" );get_device (dev); -async_schedule_dev (__device_attach_async_helper, dev); + async = true; }else {pm_request_idle (dev); }
@@ -989,6 +985,8 @@ static int __device_attach(struct device *dev, bool allow_async) } out_unlock:device_unlock (dev); +if (async) +async_schedule_dev (__device_attach_async_helper, dev);return ret; }
drivers/block/loop.c +4 -4
@@ -1066,7 +1066,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, lo->lo_flags |=LO_FLAGS_PARTSCAN ; partscan = lo->lo_flags &LO_FLAGS_PARTSCAN ;if (partscan) - lo->lo_disk->flags &= ~GENHD_FL_NO_PART ; +clear_bit (GD_SUPPRESS_PART_SCAN , &lo->lo_disk->state);loop_global_unlock (lo, is_loop);if (partscan)
@@ -1185,7 +1185,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)*/ lo->lo_flags =0 ;if (!part_shift) - lo->lo_disk->flags |=GENHD_FL_NO_PART ; +set_bit (GD_SUPPRESS_PART_SCAN , &lo->lo_disk->state);mutex_lock (&lo->lo_mutex); lo->lo_state = Lo_unbound;mutex_unlock (&lo->lo_mutex);
@@ -1295,7 +1295,7 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)if (!err && (lo->lo_flags &LO_FLAGS_PARTSCAN ) && !(prev_lo_flags &LO_FLAGS_PARTSCAN )) { - lo->lo_disk->flags &= ~GENHD_FL_NO_PART ; +clear_bit (GD_SUPPRESS_PART_SCAN , &lo->lo_disk->state); partscan = true; } out_unlock:
@@ -2054,7 +2054,7 @@ static int loop_add(int i)* userspace tools. Parameters like this in general should be avoided. */ if (!part_shift) - disk->flags |=GENHD_FL_NO_PART ; +set_bit (GD_SUPPRESS_PART_SCAN , &disk->state);atomic_set (&lo->lo_refcnt,0 );mutex_init (&lo->lo_mutex); lo->lo_number = i;
drivers/block/nbd.c +52 -26
177 lines not on this page · raw message
drivers/bus/ti-sysc.c +3 -1
@@ -3395,7 +3395,9 @@ static int sysc_remove(struct platform_device *pdev)struct sysc *ddata =platform_get_drvdata (pdev);int error; -cancel_delayed_work_sync (&ddata->idle_work); +/* Device can still be enabled, see deferred idle quirk in probe */ +if (cancel_delayed_work_sync (&ddata->idle_work)) +ti_sysc_idle (&ddata->idle_work.work); error =pm_runtime_resume_and_get (ddata->dev);if (error <0 ) {
drivers/char/hw_random/virtio-rng.c +2 -0
@@ -159,6 +159,8 @@ static int probe_common(struct virtio_device *vdev) goto err_find; } +virtio_device_ready (vdev); +/* we always have a pending entropy request */ request_entropy (vi);
drivers/char/random.c +7 -8
@@ -793,8 +793,8 @@ static void __cold _credit_init_bits(size_t bits)* **********************************************************************/ -static bool trust_cpu__ro_after_init =IS_ENABLED (CONFIG_RANDOM_TRUST_CPU ); -static bool trust_bootloader__ro_after_init =IS_ENABLED (CONFIG_RANDOM_TRUST_BOOTLOADER ); +static bool trust_cpu__initdata =IS_ENABLED (CONFIG_RANDOM_TRUST_CPU ); +static bool trust_bootloader__initdata =IS_ENABLED (CONFIG_RANDOM_TRUST_BOOTLOADER );static int __init parse_trust_cpu (char *arg) {return kstrtobool (arg, &trust_cpu);
@@ -817,7 +817,7 @@ early_param("random.trust_bootloader", parse_trust_bootloader);int __init random_init (const char *command_line) {ktime_t now =ktime_get_real (); -unsigned int i, arch_bytes; +unsigned int i, arch_bits;unsigned long entropy;#if defined(LATENT_ENTROPY_PLUGIN )
@@ -825,12 +825,12 @@ int __init random_init(const char *command_line)_mix_pool_bytes (compiletime_seed,sizeof (compiletime_seed));#endif -for (i =0 , arch_bytes =BLAKE2S_BLOCK_SIZE ; +for (i =0 , arch_bits =BLAKE2S_BLOCK_SIZE *8 ; i <BLAKE2S_BLOCK_SIZE ; i +=sizeof (entropy)) {if (!arch_get_random_seed_long_early (&entropy) && !arch_get_random_long_early (&entropy)) { entropy =random_get_entropy (); - arch_bytes -=sizeof (entropy); + arch_bits -=sizeof (entropy) *8 ; }_mix_pool_bytes (&entropy,sizeof (entropy)); }
@@ -842,7 +842,7 @@ int __init random_init(const char *command_line)if (crng_ready ())crng_reseed ();else if (trust_cpu) -credit_init_bits (arch_bytes *8 ); +_credit_init_bits (arch_bits);return 0 ; }
@@ -890,13 +890,12 @@ EXPORT_SYMBOL_GPL(add_hwgenerator_randomness);* Handle random seed passed by bootloader, and credit it if * CONFIG_RANDOM_TRUST_BOOTLOADER is set. */ -void __cold add_bootloader_randomness (const void *buf,size_t len) +void __init add_bootloader_randomness (const void *buf,size_t len) {mix_pool_bytes (buf, len);if (trust_bootloader)credit_init_bits (len *8 ); } -EXPORT_SYMBOL_GPL (add_bootloader_randomness);#if IS_ENABLED (CONFIG_VMGENID )static BLOCKING_NOTIFIER_HEAD (vmfork_chain);
drivers/char/xillybus/xillyusb.c +1 -0
@@ -549,6 +549,7 @@ static void cleanup_dev(struct kref *kref)if (xdev->workq)destroy_workqueue (xdev->workq); +usb_put_dev (xdev->udev);kfree (xdev->channels);/* Argument may be NULL, and that's fine */ kfree (xdev); }
drivers/clocksource/timer-oxnas-rps.c +1 -1
@@ -236,7 +236,7 @@ static int __init oxnas_rps_timer_init(struct device_node *np) } rps->irq =irq_of_parse_and_map (np,0 ); -if (rps->irq <0 ) { +if (!rps->irq) { ret = -EINVAL ; goto err_iomap; }
drivers/clocksource/timer-riscv.c +1 -1
@@ -34,7 +34,7 @@ static int riscv_clock_next_event(unsigned long delta,static unsigned int riscv_clock_event_irq; static DEFINE_PER_CPU(struct clock_event_device, riscv_clock_event) = { .name ="riscv_timer_clockevent" , - .features =CLOCK_EVT_FEAT_ONESHOT , + .features =CLOCK_EVT_FEAT_ONESHOT |CLOCK_EVT_FEAT_C3STOP , .rating =100 , .set_next_event = riscv_clock_next_event, };
drivers/clocksource/timer-sp804.c +5 -5
@@ -259,6 +259,11 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *timestruct clk *clk1, *clk2;const char *name =of_get_property (np,"compatible" ,NULL ); +if (initialized) { +pr_debug ("%pOF: skipping further SP804 timer device\n" , np); +return 0 ; + } + base =of_iomap (np,0 );if (!base)return -ENXIO ;
@@ -270,11 +275,6 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *timewritel (0 , timer1_base + timer->ctrl);writel (0 , timer2_base + timer->ctrl); -if (initialized || !of_device_is_available (np)) { - ret = -EINVAL ; - goto err; - } - clk1 =of_clk_get (np,0 );if (IS_ERR (clk1)) clk1 =NULL ;
drivers/dma/idxd/dma.c +23 -0
@@ -87,6 +87,27 @@ static inline void idxd_prep_desc_common(struct idxd_wq *wq, hw->completion_addr = compl; } +static struct dma_async_tx_descriptor * +idxd_dma_prep_interrupt (struct dma_chan *c,unsigned long flags) +{ +struct idxd_wq *wq =to_idxd_wq (c); +u32 desc_flags; +struct idxd_desc *desc; + +if (wq->state !=IDXD_WQ_ENABLED ) +return NULL ; + +op_flag_setup (flags, &desc_flags); + desc =idxd_alloc_desc (wq,IDXD_OP_BLOCK ); +if (IS_ERR (desc)) +return NULL ; + +idxd_prep_desc_common (wq, desc->hw,DSA_OPCODE_NOOP , +0 ,0 ,0 , desc->compl_dma, desc_flags); + desc->txd.flags = flags; +return &desc->txd; +} +static struct dma_async_tx_descriptor *idxd_dma_submit_memcpy (struct dma_chan *c,dma_addr_t dma_dest,dma_addr_t dma_src,size_t len,unsigned long flags)
@@ -193,10 +214,12 @@ int idxd_register_dma_device(struct idxd_device *idxd)INIT_LIST_HEAD (&dma->channels); dma->dev = dev; +dma_cap_set (DMA_INTERRUPT , dma->cap_mask);dma_cap_set (DMA_PRIVATE , dma->cap_mask);dma_cap_set (DMA_COMPLETION_NO_ORDER , dma->cap_mask); dma->device_release = idxd_dma_release; + dma->device_prep_dma_interrupt = idxd_dma_prep_interrupt;if (idxd->hw.opcap.bits[0 ] &IDXD_OPCAP_MEMMOVE ) {dma_cap_set (DMA_MEMCPY , dma->cap_mask); dma->device_prep_dma_memcpy = idxd_dma_submit_memcpy;
drivers/dma/xilinx/zynqmp_dma.c +3 -2
@@ -229,7 +229,7 @@ struct zynqmp_dma_chan {bool is_dmacoherent;struct tasklet_struct tasklet;bool idle; -u32 desc_size; +size_t desc_size;bool err;u32 bus_width;u32 src_burst_len;
@@ -486,7 +486,8 @@ static int zynqmp_dma_alloc_chan_resources(struct dma_chan *dchan) } chan->desc_pool_v =dma_alloc_coherent (chan->dev, - (2 * chan->desc_size *ZYNQMP_DMA_NUM_DESCS ), + (2 *ZYNQMP_DMA_DESC_SIZE (chan) * +ZYNQMP_DMA_NUM_DESCS ), &chan->desc_pool_p,GFP_KERNEL );if (!chan->desc_pool_v)return -ENOMEM ;
drivers/extcon/extcon-axp288.c +2 -2
@@ -394,8 +394,8 @@ static int axp288_extcon_probe(struct platform_device *pdev)if (adev) { info->id_extcon =extcon_get_extcon_dev (acpi_dev_name (adev));put_device (&adev->dev); -if (!info->id_extcon) -return -EPROBE_DEFER ; +if (IS_ERR (info->id_extcon)) +return PTR_ERR (info->id_extcon);dev_info (dev,"controlling USB role\n" ); }else {
drivers/extcon/extcon-ptn5150.c +11 -0
@@ -194,6 +194,13 @@ static int ptn5150_init_dev_type(struct ptn5150_info *info)return 0 ; } +static void ptn5150_work_sync_and_put (void *data) +{ +struct ptn5150_info *info = data; + +cancel_work_sync (&info->irq_work); +} +static int ptn5150_i2c_probe (struct i2c_client *i2c) {struct device *dev = &i2c->dev;
@@ -284,6 +291,10 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c)if (ret)return -EINVAL ; + ret =devm_add_action_or_reset (dev, ptn5150_work_sync_and_put, info); +if (ret) +return ret; +/* * Update current extcon state if for example OTG connection was there * before the probe
drivers/extcon/extcon.c +20 -13
@@ -851,6 +851,8 @@ EXPORT_SYMBOL_GPL(extcon_set_property_capability);* @extcon_name: the extcon name provided with extcon_dev_register() * * Return the pointer of extcon device if success or ERR_PTR(err) if fail. +* NOTE: This function returns -EPROBE_DEFER so it may only be called from +* probe() functions. */ struct extcon_dev *extcon_get_extcon_dev (const char *extcon_name) {
@@ -864,7 +866,7 @@ struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name)if (!strcmp (sd->name, extcon_name)) goto out; } - sd =NULL ; + sd =ERR_PTR (-EPROBE_DEFER ); out:mutex_unlock (&extcon_dev_list_lock);return sd;
@@ -1218,19 +1220,14 @@ int extcon_dev_register(struct extcon_dev *edev) edev->dev.type = &edev->extcon_dev_type; } - ret =device_register (&edev->dev); -if (ret) { -put_device (&edev->dev); - goto err_dev; - } -spin_lock_init (&edev->lock); - edev->nh =devm_kcalloc (&edev->dev, edev->max_supported, -sizeof (*edev->nh),GFP_KERNEL ); -if (!edev->nh) { - ret = -ENOMEM ; -device_unregister (&edev->dev); - goto err_dev; +if (edev->max_supported) { + edev->nh =kcalloc (edev->max_supported,sizeof (*edev->nh), +GFP_KERNEL ); +if (!edev->nh) { + ret = -ENOMEM ; + goto err_alloc_nh; + } }for (index =0 ; index < edev->max_supported; index++)
@@ -1241,6 +1238,12 @@ int extcon_dev_register(struct extcon_dev *edev)dev_set_drvdata (&edev->dev, edev); edev->state =0 ; + ret =device_register (&edev->dev); +if (ret) { +put_device (&edev->dev); + goto err_dev; + } +mutex_lock (&extcon_dev_list_lock);list_add (&edev->entry, &extcon_dev_list);mutex_unlock (&extcon_dev_list_lock);
@@ -1248,6 +1251,9 @@ int extcon_dev_register(struct extcon_dev *edev)return 0 ; err_dev: +if (edev->max_supported) +kfree (edev->nh); +err_alloc_nh:if (edev->max_supported)kfree (edev->extcon_dev_type.groups); err_alloc_groups:
@@ -1308,6 +1314,7 @@ void extcon_dev_unregister(struct extcon_dev *edev)if (edev->max_supported) {kfree (edev->extcon_dev_type.groups);kfree (edev->cables); +kfree (edev->nh); }put_device (&edev->dev);
drivers/firmware/dmi-sysfs.c +1 -1
@@ -604,7 +604,7 @@ static void __init dmi_sysfs_register_handle(const struct dmi_header *dh, "%d-%d", dh->type, entry->instance);if (*ret) { -kfree (entry); +kobject_put (&entry->kobj);return ; }
drivers/firmware/stratix10-svc.c +6 -6
@@ -948,17 +948,17 @@ EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory);void stratix10_svc_free_memory (struct stratix10_svc_chan *chan,void *kaddr) {struct stratix10_svc_data_mem *pmem; -size_t size =0 ;list_for_each_entry (pmem, &svc_data_mem, node)if (pmem->vaddr == kaddr) { - size = pmem->size; -break ; +gen_pool_free (chan->ctrl->genpool, + (unsigned long )kaddr, pmem->size); + pmem->vaddr =NULL ; +list_del (&pmem->node); +return ; } -gen_pool_free (chan->ctrl->genpool, (unsigned long )kaddr, size); - pmem->vaddr =NULL ; -list_del (&pmem->node); +list_del (&svc_data_mem); }EXPORT_SYMBOL_GPL (stratix10_svc_free_memory);
drivers/gpio/gpio-pca953x.c +11 -8
@@ -1108,20 +1108,21 @@ static int pca953x_regcache_sync(struct device *dev) {struct pca953x_chip *chip =dev_get_drvdata (dev);int ret; +u8 regaddr;/* * The ordering between direction and output is important, * sync these registers first and only then sync the rest. */ - ret =regcache_sync_region (chip->regmap, chip->regs->direction, - chip->regs->direction +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->direction,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip));if (ret) {dev_err (dev,"Failed to sync GPIO dir registers: %d\n" , ret);return ret; } - ret =regcache_sync_region (chip->regmap, chip->regs->output, - chip->regs->output +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->output,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip));if (ret) {dev_err (dev,"Failed to sync GPIO out registers: %d\n" , ret);return ret;
@@ -1129,16 +1130,18 @@ static int pca953x_regcache_sync(struct device *dev)#ifdef CONFIG_GPIO_PCA953X_IRQ if (chip->driver_data &PCA_PCAL ) { - ret =regcache_sync_region (chip->regmap,PCAL953X_IN_LATCH , -PCAL953X_IN_LATCH +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip,PCAL953X_IN_LATCH ,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip));if (ret) {dev_err (dev,"Failed to sync INT latch registers: %d\n" , ret);return ret; } - ret =regcache_sync_region (chip->regmap,PCAL953X_INT_MASK , -PCAL953X_INT_MASK +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip,PCAL953X_INT_MASK ,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip));if (ret) {dev_err (dev,"Failed to sync INT mask registers: %d\n" , ret);
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +5 -1
@@ -535,6 +535,10 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring, {unsigned vmid =AMDGPU_JOB_GET_VMID (job); +amdgpu_ring_write (ring,PACKETJ (mmUVD_JPEG_IH_CTRL_INTERNAL_OFFSET, +0 ,0 ,PACKETJ_TYPE0 )); +amdgpu_ring_write (ring, (vmid <<JPEG_IH_CTRL__IH_VMID__SHIFT )); +amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 ));amdgpu_ring_write (ring, (vmid | (vmid <<4 )));
@@ -768,7 +772,7 @@ static const struct amdgpu_ring_funcs jpeg_v2_0_dec_ring_vm_funcs = {8 +/* jpeg_v2_0_dec_ring_emit_vm_flush */ 18 +18 +/* jpeg_v2_0_dec_ring_emit_fence x2 vm fence */ 8 + 16, - .emit_ib_size = 22, /* jpeg_v2_0_dec_ring_emit_ib */ + .emit_ib_size = 24, /* jpeg_v2_0_dec_ring_emit_ib */ .emit_ib = jpeg_v2_0_dec_ring_emit_ib, .emit_fence = jpeg_v2_0_dec_ring_emit_fence, .emit_vm_flush = jpeg_v2_0_dec_ring_emit_vm_flush,
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h +1 -0
@@ -41,6 +41,7 @@#define mmUVD_JRBC_RB_REF_DATA_INTERNAL_OFFSET 0x4084#define mmUVD_JRBC_STATUS_INTERNAL_OFFSET 0x4089#define mmUVD_JPEG_PITCH_INTERNAL_OFFSET 0x401f +#define mmUVD_JPEG_IH_CTRL_INTERNAL_OFFSET 0x4149#define JRBC_DEC_EXTERNAL_REG_WRITE_ADDR 0x18000
drivers/gpu/drm/amd/amdgpu/nv.c +1 -0
@@ -170,6 +170,7 @@ static const struct amdgpu_video_codec_info yc_video_codecs_decode_array[] = { {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)}, + {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1, 8192, 4352, 0)}, }; static const struct amdgpu_video_codecs yc_video_codecs_decode = {
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +7 -10
@@ -1821,23 +1821,21 @@ static const struct amdgpu_ring_funcs vcn_v3_0_dec_sw_ring_vm_funcs = { .emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper, }; -static int vcn_v3_0_limit_sched (struct amdgpu_cs_parser *p, -struct amdgpu_job *job) +static int vcn_v3_0_limit_sched (struct amdgpu_cs_parser *p) {struct drm_gpu_scheduler **scheds;/* The create msg must be in the first IB submitted */ -if (atomic_read (&job->base.entity->fence_seq)) +if (atomic_read (&p->entity->fence_seq))return -EINVAL ; scheds = p->adev->gpu_sched[AMDGPU_HW_IP_VCN_DEC ] [AMDGPU_RING_PRIO_DEFAULT ].sched; -drm_sched_entity_modify_sched (job->base.entity, scheds,1 ); +drm_sched_entity_modify_sched (p->entity, scheds,1 );return 0 ; } -static int vcn_v3_0_dec_msg (struct amdgpu_cs_parser *p,struct amdgpu_job *job, -uint64_t addr) +static int vcn_v3_0_dec_msg (struct amdgpu_cs_parser *p,uint64_t addr) {struct ttm_operation_ctx ctx = { false, false };struct amdgpu_bo_va_mapping *map;
@@ -1908,7 +1906,7 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,if (create[0 ] ==0x7 || create[0 ] ==0x10 || create[0 ] ==0x11 )continue ; - r =vcn_v3_0_limit_sched (p, job); + r =vcn_v3_0_limit_sched (p);if (r) goto out; }
@@ -1922,7 +1920,7 @@ static int vcn_v3_0_ring_patch_cs_in_place(struct amdgpu_cs_parser *p,struct amdgpu_job *job, struct amdgpu_ib *ib) { - struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched); + struct amdgpu_ring *ring = to_amdgpu_ring(p->entity->rq->sched);uint32_t msg_lo =0 , msg_hi =0 ;unsigned i;int r;
@@ -1941,8 +1939,7 @@ static int vcn_v3_0_ring_patch_cs_in_place(struct amdgpu_cs_parser *p, msg_hi = val; }else if (reg ==PACKET0 (p->adev->vcn.internal.cmd,0 ) && val ==0 ) { - r =vcn_v3_0_dec_msg (p, job, - ((u64 )msg_hi) <<32 | msg_lo); + r =vcn_v3_0_dec_msg (p, ((u64 )msg_hi) <<32 | msg_lo);if (r)return r; }
drivers/gpu/drm/amd/amdkfd/kfd_device.c +3 -1
@@ -156,7 +156,9 @@ static void kfd_device_info_init(struct kfd_dev *kfd,if (gc_version <IP_VERSION (11 ,0 ,0 )) {/* Navi2x+, Navi1x+ */ -if (gc_version >=IP_VERSION (10 ,3 ,0 )) +if (gc_version ==IP_VERSION (10 ,3 ,6 )) + kfd->device_info.no_atomic_fw_version =14 ; +else if (gc_version >=IP_VERSION (10 ,3 ,0 )) kfd->device_info.no_atomic_fw_version =92 ;else if (gc_version >=IP_VERSION (10 ,1 ,1 )) kfd->device_info.no_atomic_fw_version =145 ;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -1
@@ -771,7 +771,7 @@ static void dm_dmub_outbox1_low_irq(void *interrupt_params) do { dc_stat_get_dmub_notification(adev->dm.dc, ¬ify); - if (notify.type > ARRAY_SIZE(dm->dmub_thread_offload)) { + if (notify.type >= ARRAY_SIZE(dm->dmub_thread_offload)) { DRM_ERROR("DM: notify type %d invalid!", notify.type); continue; }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_clk_mgr.c +2 -3
@@ -41,9 +41,7 @@#include "dc_dmub_srv.h" -#if defined (CONFIG_DRM_AMD_DC_DP2_0 )#include "dc_link_dp.h" -#endif #define TO_CLK_MGR_DCN315 (clk_mgr)\ container_of(clk_mgr, struct clk_mgr_dcn315, base)
@@ -91,7 +89,8 @@ static void dcn315_disable_otg_wa(struct clk_mgr *clk_mgr_base, bool disable)if (pipe->top_pipe || pipe->prev_odm_pipe)continue ; -if (pipe->stream && (pipe->stream->dpms_off ||dc_is_virtual_signal (pipe->stream->signal))) { +if (pipe->stream && (pipe->stream->dpms_off || pipe->plane_state ==NULL || +dc_is_virtual_signal (pipe->stream->signal))) {if (disable) pipe->stream_res.tg->funcs->immediate_disable_crtc (pipe->stream_res.tg);else
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_clk_mgr.c +2 -1
@@ -122,7 +122,8 @@ static void dcn316_disable_otg_wa(struct clk_mgr *clk_mgr_base, bool disable)if (pipe->top_pipe || pipe->prev_odm_pipe)continue ; -if (pipe->stream && (pipe->stream->dpms_off ||dc_is_virtual_signal (pipe->stream->signal))) { +if (pipe->stream && (pipe->stream->dpms_off || pipe->plane_state ==NULL || +dc_is_virtual_signal (pipe->stream->signal))) {if (disable) pipe->stream_res.tg->funcs->immediate_disable_crtc (pipe->stream_res.tg);else
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c +6 -3
@@ -1105,9 +1105,12 @@ static bool get_pixel_clk_frequency_100hz(* not be programmed equal to DPREFCLK */ modulo_hz =REG_READ (MODULO [inst]); - *pixel_clk_khz =div_u64 ((uint64_t )clock_hz* - clock_source->ctx->dc->clk_mgr->dprefclk_khz*10 , - modulo_hz); +if (modulo_hz) + *pixel_clk_khz =div_u64 ((uint64_t )clock_hz* + clock_source->ctx->dc->clk_mgr->dprefclk_khz*10 , + modulo_hz); +else + *pixel_clk_khz =0 ; }else {/* NOTE: There is agreement with VBIOS here that MODULO is * programmed equal to DPREFCLK, in which case PHASE will be
drivers/gpu/drm/amd/display/dc/dml/dml_wrapper.c +0 -2
@@ -1284,10 +1284,8 @@ static bool is_dtbclk_required(struct dc *dc, struct dc_state *context)for (i =0 ; i < dc->res_pool->pipe_count; i++) {if (!context->res_ctx.pipe_ctx[i].stream)continue ; -#if defined (CONFIG_DRM_AMD_DC_DP2_0 )if (is_dp_128b_132b_signal (&context->res_ctx.pipe_ctx[i]))return true; -#endif }return false; }
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +44 -13
69 lines not on this page · raw message
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +1 -1
@@ -781,7 +781,7 @@ int smu_v11_0_set_allowed_mask(struct smu_context *smu) goto failed; } -bitmap_copy ((unsigned long *)feature_mask, feature->allowed,64 ); +bitmap_to_arr32 (feature_mask, feature->allowed,64 ); ret =smu_cmn_send_smc_msg_with_param (smu, SMU_MSG_SetAllowedFeaturesMaskHigh, feature_mask[1 ],NULL );
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c +1 -0
@@ -1664,6 +1664,7 @@ static const struct throttling_logging_label {uint32_t feature_mask;const char *label; } logging_label[] = { + {(1U << THROTTLER_TEMP_GPU_BIT), "GPU"}, {(1U << THROTTLER_TEMP_MEM_BIT), "HBM"}, {(1U << THROTTLER_TEMP_VR_GFX_BIT), "VR of GFX rail"}, {(1U << THROTTLER_TEMP_VR_MEM_BIT), "VR of HBM rail"},
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +1 -1
@@ -730,7 +730,7 @@ int smu_v13_0_set_allowed_mask(struct smu_context *smu) feature->feature_num < 64)return -EINVAL ; -bitmap_copy ((unsigned long *)feature_mask, feature->allowed,64 ); +bitmap_to_arr32 (feature_mask, feature->allowed,64 ); ret =smu_cmn_send_smc_msg_with_param (smu, SMU_MSG_SetAllowedFeaturesMaskHigh, feature_mask[1 ],NULL );
drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c +3 -0
@@ -190,6 +190,9 @@ static int yellow_carp_fini_smc_tables(struct smu_context *smu)kfree (smu_table->watermarks_table); smu_table->watermarks_table =NULL ; +kfree (smu_table->gpu_metrics_table); + smu_table->gpu_metrics_table =NULL ; +return 0 ; }
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +38 -4
64 lines not on this page · raw message
drivers/gpu/drm/bridge/ti-sn65dsi83.c +1 -1
@@ -573,7 +573,7 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model) ctx->host_node =of_graph_get_remote_port_parent (endpoint);of_node_put (endpoint); -if (ctx->dsi_lanes <0 || ctx->dsi_lanes >4 ) { +if (ctx->dsi_lanes <=0 || ctx->dsi_lanes >4 ) { ret = -EINVAL ; goto err_put_node; }
drivers/gpu/drm/drm_atomic_helper.c +13 -3
@@ -1011,9 +1011,19 @@ crtc_needs_disable(struct drm_crtc_state *old_state,return drm_atomic_crtc_effectively_active (old_state);/* -* We need to run through the crtc_funcs->disable() function if the CRTC -* is currently on, if it's transitioning to self refresh mode, or if -* it's in self refresh mode and needs to be fully disabled. +* We need to disable bridge(s) and CRTC if we're transitioning out of +* self-refresh and changing CRTCs at the same time, because the +* bridge tracks self-refresh status via CRTC state. +*/ +if (old_state->self_refresh_active && + old_state->crtc != new_state->crtc) +return true; + +/* +* We also need to run through the crtc_funcs->disable() function if +* the CRTC is currently on, if it's transitioning to self refresh +* mode, or if it's in self refresh mode and needs to be fully +* disabled. */ return old_state->active || (old_state->self_refresh_active && !new_state->active) ||
drivers/gpu/drm/imx/ipuv3-crtc.c +1 -1
@@ -69,7 +69,7 @@ static void ipu_crtc_disable_planes(struct ipu_crtc *ipu_crtc,drm_atomic_crtc_state_for_each_plane (plane, old_crtc_state) {if (plane == &ipu_crtc->plane[0 ]->base) disable_full = true; -if (&ipu_crtc->plane[1 ] && plane == &ipu_crtc->plane[1 ]->base) +if (ipu_crtc->plane[1 ] && plane == &ipu_crtc->plane[1 ]->base) disable_partial = true; }
drivers/gpu/drm/msm/dp/dp_ctrl.c +7 -2
@@ -1380,8 +1380,13 @@ void dp_ctrl_reset_irq_ctrl(struct dp_ctrl *dp_ctrl, bool enable)dp_catalog_ctrl_reset (ctrl->catalog); -if (enable) -dp_catalog_ctrl_enable_irq (ctrl->catalog, enable); +/* +* all dp controller programmable registers will not +* be reset to default value after DP_SW_RESET +* therefore interrupt mask bits have to be updated +* to enable/disable interrupts +*/ +dp_catalog_ctrl_enable_irq (ctrl->catalog, enable); }void dp_ctrl_phy_init (struct dp_ctrl *dp_ctrl)
drivers/gpu/drm/panfrost/panfrost_drv.c +3 -2
@@ -233,6 +233,7 @@ static int panfrost_ioctl_submit(struct drm_device *dev, void *data, struct drm_file *file) {struct panfrost_device *pfdev = dev->dev_private; +struct panfrost_file_priv *file_priv = file->driver_priv;struct drm_panfrost_submit *args = data;struct drm_syncobj *sync_out =NULL ;struct panfrost_job *job;
@@ -262,12 +263,12 @@ static int panfrost_ioctl_submit(struct drm_device *dev, void *data, job->jc = args->jc; job->requirements = args->requirements; job->flush_id =panfrost_gpu_get_latest_flush_id (pfdev); - job->file_priv = file->driver_priv; + job->mmu = file_priv->mmu; slot =panfrost_job_get_slot (job); ret =drm_sched_job_init (&job->base, - &job->file_priv->sched_entity[slot], + &file_priv->sched_entity[slot],NULL );if (ret) goto out_put_job;
drivers/gpu/drm/panfrost/panfrost_job.c +3 -3
@@ -201,7 +201,7 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)return ; } - cfg =panfrost_mmu_as_get (pfdev, job->file_priv->mmu); + cfg =panfrost_mmu_as_get (pfdev, job->mmu);job_write (pfdev,JS_HEAD_NEXT_LO (js),lower_32_bits (jc_head));job_write (pfdev,JS_HEAD_NEXT_HI (js),upper_32_bits (jc_head));
@@ -431,7 +431,7 @@ static void panfrost_job_handle_err(struct panfrost_device *pfdev, job->jc =0 ; } -panfrost_mmu_as_put (pfdev, job->file_priv->mmu); +panfrost_mmu_as_put (pfdev, job->mmu);panfrost_devfreq_record_idle (&pfdev->pfdevfreq);if (signal_fence)
@@ -452,7 +452,7 @@ static void panfrost_job_handle_done(struct panfrost_device *pfdev,* happen when we receive the DONE interrupt while doing a GPU reset). */ job->jc =0 ; -panfrost_mmu_as_put (pfdev, job->file_priv->mmu); +panfrost_mmu_as_put (pfdev, job->mmu);panfrost_devfreq_record_idle (&pfdev->pfdevfreq);dma_fence_signal_locked (job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.h +1 -1
@@ -17,7 +17,7 @@ struct panfrost_job {struct kref refcount;struct panfrost_device *pfdev; -struct panfrost_file_priv *file_priv; +struct panfrost_mmu *mmu;/* Fence to be signaled by IRQ handler when the job is complete. */ struct dma_fence *done_fence;
drivers/gpu/drm/radeon/radeon_connectors.c +4 -0
@@ -473,6 +473,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode native_mode->vdisplay != 0 && native_mode->clock != 0) { mode =drm_mode_duplicate (dev, native_mode); +if (!mode) +return NULL ; mode->type =DRM_MODE_TYPE_PREFERRED |DRM_MODE_TYPE_DRIVER ;drm_mode_set_name (mode);
@@ -487,6 +489,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode* simpler. */ mode =drm_cvt_mode (dev, native_mode->hdisplay, native_mode->vdisplay,60 , true, false, false); +if (!mode) +return NULL ; mode->type =DRM_MODE_TYPE_PREFERRED |DRM_MODE_TYPE_DRIVER ;DRM_DEBUG_KMS ("Adding cvt approximation of native panel mode %s\n" , mode->name); }
drivers/hwtracing/coresight/coresight-cpu-debug.c +4 -3
@@ -380,9 +380,10 @@ static int debug_notifier_call(struct notifier_block *self,int cpu;struct debug_drvdata *drvdata; -mutex_lock (&debug_lock); +/* Bail out if we can't acquire the mutex or the functionality is off */ +if (!mutex_trylock (&debug_lock)) +return NOTIFY_DONE ; -/* Bail out if the functionality is disabled */ if (!debug_enable) goto skip_dump;
@@ -401,7 +402,7 @@ static int debug_notifier_call(struct notifier_block *self, skip_dump:mutex_unlock (&debug_lock); -return 0 ; +return NOTIFY_DONE ; }static struct notifier_block debug_notifier = {
drivers/i2c/busses/i2c-cadence.c +10 -2
@@ -760,7 +760,7 @@ static void cdns_i2c_master_reset(struct i2c_adapter *adap)static int cdns_i2c_process_msg (struct cdns_i2c *id,struct i2c_msg *msg,struct i2c_adapter *adap) { -unsigned long time_left; +unsigned long time_left, msg_timeout;u32 reg; id->p_msg = msg;
@@ -785,8 +785,16 @@ static int cdns_i2c_process_msg(struct cdns_i2c *id, struct i2c_msg *msg,else cdns_i2c_msend (id); +/* Minimal time to execute this message */ + msg_timeout =msecs_to_jiffies ((1000 * msg->len *BITS_PER_BYTE ) / id->i2c_clk); +/* Plus some wiggle room */ + msg_timeout +=msecs_to_jiffies (500 ); + +if (msg_timeout < adap->timeout) + msg_timeout = adap->timeout; +/* Wait for the signal of completion */ - time_left =wait_for_completion_timeout (&id->xfer_done, adap->timeout); + time_left =wait_for_completion_timeout (&id->xfer_done, msg_timeout);if (time_left ==0 ) {cdns_i2c_master_reset (adap); dev_err(id->adap.dev.parent,
drivers/i2c/busses/i2c-mt65xx.c +7 -4
@@ -1177,7 +1177,7 @@ static int mtk_i2c_transfer(struct i2c_adapter *adap,int left_num = num;struct mtk_i2c *i2c =i2c_get_adapdata (adap); - ret =clk_bulk_prepare_enable (I2C_MT65XX_CLK_MAX , i2c->clocks); + ret =clk_bulk_enable (I2C_MT65XX_CLK_MAX , i2c->clocks);if (ret)return ret;
@@ -1231,7 +1231,7 @@ static int mtk_i2c_transfer(struct i2c_adapter *adap, ret = num; err_exit: -clk_bulk_disable_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks); +clk_bulk_disable (I2C_MT65XX_CLK_MAX , i2c->clocks);return ret; }
@@ -1412,7 +1412,7 @@ static int mtk_i2c_probe(struct platform_device *pdev)return ret; }mtk_i2c_init_hw (i2c); -clk_bulk_disable_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks); +clk_bulk_disable (I2C_MT65XX_CLK_MAX , i2c->clocks); ret = devm_request_irq(&pdev->dev, irq, mtk_i2c_irq, IRQF_NO_SUSPEND | IRQF_TRIGGER_NONE,
@@ -1439,6 +1439,8 @@ static int mtk_i2c_remove(struct platform_device *pdev)i2c_del_adapter (&i2c->adap); +clk_bulk_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks); +return 0 ; }
@@ -1448,6 +1450,7 @@ static int mtk_i2c_suspend_noirq(struct device *dev)struct mtk_i2c *i2c =dev_get_drvdata (dev);i2c_mark_adapter_suspended (&i2c->adap); +clk_bulk_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks);return 0 ; }
@@ -1465,7 +1468,7 @@ static int mtk_i2c_resume_noirq(struct device *dev)mtk_i2c_init_hw (i2c); -clk_bulk_disable_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks); +clk_bulk_disable (I2C_MT65XX_CLK_MAX , i2c->clocks);i2c_mark_adapter_resumed (&i2c->adap);
drivers/idle/intel_idle.c +25 -7
@@ -115,6 +115,18 @@ static unsigned int mwait_substates __initdata;#define flg2MWAIT (flags) (((flags) >> 24) & 0xFF)#define MWAIT2flg (eax) ((eax & 0xFF) << 24) +static __always_inline int __intel_idle(struct cpuidle_device *dev, +struct cpuidle_driver *drv,int index) +{ +struct cpuidle_state *state = &drv->states[index]; +unsigned long eax =flg2MWAIT (state->flags); +unsigned long ecx =1 ;/* break on interrupt flag */ + +mwait_idle_with_hints (eax, ecx); + +return index; +} +/** * intel_idle - Ask the processor to enter the given idle state. * @dev: cpuidle device of the target CPU.
@@ -132,16 +144,19 @@ static unsigned int mwait_substates __initdata; static __cpuidle int intel_idle(struct cpuidle_device *dev,struct cpuidle_driver *drv,int index) { -struct cpuidle_state *state = &drv->states[index]; -unsigned long eax =flg2MWAIT (state->flags); -unsigned long ecx =1 ;/* break on interrupt flag */ +return __intel_idle (dev, drv, index); +} -if (state->flags &CPUIDLE_FLAG_IRQ_ENABLE ) -local_irq_enable (); +static __cpuidle int intel_idle_irq(struct cpuidle_device *dev, +struct cpuidle_driver *drv,int index) +{ +int ret; -mwait_idle_with_hints (eax, ecx); +raw_local_irq_enable (); + ret =__intel_idle (dev, drv, index); +raw_local_irq_disable (); -return index; +return ret; }/**
@@ -1668,6 +1683,9 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv)/* Structure copy. */ drv->states[drv->state_count] = cpuidle_state_table[cstate]; +if (cpuidle_state_table[cstate].flags &CPUIDLE_FLAG_IRQ_ENABLE ) + drv->states[drv->state_count].enter = intel_idle_irq; + if ((disabled_states_mask & BIT(drv->state_count)) || ((icpu->use_acpi || force_use_acpi) && intel_idle_off_by_default(mwait_hint) &&
drivers/iio/adc/ad7124.c +0 -1
@@ -188,7 +188,6 @@ static const struct iio_chan_spec ad7124_channel_template = { .sign = 'u', .realbits = 24, .storagebits = 32, - .shift = 8, .endianness = IIO_BE, }, };
drivers/iio/adc/sc27xx_adc.c +10 -10
@@ -36,8 +36,8 @@/* Bits and mask definition for SC27XX_ADC_CH_CFG register */ #define SC27XX_ADC_CHN_ID_MASK GENMASK(4, 0) -#define SC27XX_ADC_SCALE_MASK GENMASK(10, 8) -#define SC27XX_ADC_SCALE_SHIFT 8 +#define SC27XX_ADC_SCALE_MASK GENMASK(10, 9) +#define SC27XX_ADC_SCALE_SHIFT 9/* Bits definitions for SC27XX_ADC_INT_EN registers */ #define SC27XX_ADC_IRQ_EN BIT(0)
@@ -103,14 +103,14 @@ static struct sc27xx_adc_linear_graph small_scale_graph = { 100, 341, }; -static const struct sc27xx_adc_linear_graph big_scale_graph_calib = { -4200 ,856 , -3600 ,733 , +static const struct sc27xx_adc_linear_graph sc2731_big_scale_graph_calib = { +4200 ,850 , +3600 ,728 , }; -static const struct sc27xx_adc_linear_graph small_scale_graph_calib = { -1000 ,833 , -100 ,80 , +static const struct sc27xx_adc_linear_graph sc2731_small_scale_graph_calib = { +1000 ,838 , +100 ,84 , };static int sc27xx_adc_get_calib_data (u32 calib_data,int calib_adc)
@@ -130,11 +130,11 @@ static int sc27xx_adc_scale_calibration(struct sc27xx_adc_data *data,size_t len;if (big_scale) { - calib_graph = &big_scale_graph_calib; + calib_graph = &sc2731_big_scale_graph_calib; graph = &big_scale_graph; cell_name ="big_scale_calib" ; }else { - calib_graph = &small_scale_graph_calib; + calib_graph = &sc2731_small_scale_graph_calib; graph = &small_scale_graph; cell_name ="small_scale_calib" ; }
drivers/iio/adc/stmpe-adc.c +4 -4
@@ -61,7 +61,7 @@ struct stmpe_adc {static int stmpe_read_voltage (struct stmpe_adc *info,struct iio_chan_spec const *chan,int *val) { -long ret; +unsigned long ret;mutex_lock (&info->lock);
@@ -79,7 +79,7 @@ static int stmpe_read_voltage(struct stmpe_adc *info, ret =wait_for_completion_timeout (&info->completion,STMPE_ADC_TIMEOUT ); -if (ret <=0 ) { +if (ret ==0 ) {stmpe_reg_write (info->stmpe,STMPE_REG_ADC_INT_STA ,STMPE_ADC_CH (info->channel));mutex_unlock (&info->lock);
@@ -96,7 +96,7 @@ static int stmpe_read_voltage(struct stmpe_adc *info,static int stmpe_read_temp (struct stmpe_adc *info,struct iio_chan_spec const *chan,int *val) { -long ret; +unsigned long ret;mutex_lock (&info->lock);
@@ -114,7 +114,7 @@ static int stmpe_read_temp(struct stmpe_adc *info, ret =wait_for_completion_timeout (&info->completion,STMPE_ADC_TIMEOUT ); -if (ret <=0 ) { +if (ret ==0 ) {mutex_unlock (&info->lock);return -ETIMEDOUT ; }
drivers/iio/common/st_sensors/st_sensors_core.c +18 -6
@@ -71,16 +71,18 @@ static int st_sensors_match_odr(struct st_sensor_settings *sensor_settings,int st_sensors_set_odr (struct iio_dev *indio_dev,unsigned int odr) { -int err; +int err =0 ;struct st_sensor_odr_avl odr_out = {0 ,0 };struct st_sensor_data *sdata =iio_priv (indio_dev); +mutex_lock (&sdata->odr_lock); +if (!sdata->sensor_settings->odr.mask) -return 0 ; + goto unlock_mutex; err =st_sensors_match_odr (sdata->sensor_settings, odr, &odr_out);if (err <0 ) - goto st_sensors_match_odr_error; + goto unlock_mutex; if ((sdata->sensor_settings->odr.addr == sdata->sensor_settings->pw.addr) &&
@@ -103,7 +105,9 @@ int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr)if (err >=0 ) sdata->odr = odr_out.hz; -st_sensors_match_odr_error: +unlock_mutex: +mutex_unlock (&sdata->odr_lock); +return err; }EXPORT_SYMBOL_NS (st_sensors_set_odr,IIO_ST_SENSORS );
@@ -361,6 +365,8 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,struct st_sensors_platform_data *of_pdata;int err =0 ; +mutex_init (&sdata->odr_lock); +/* If OF/DT pdata exists, it will take precedence of anything else */ of_pdata =st_sensors_dev_probe (indio_dev->dev.parent, pdata);if (IS_ERR (of_pdata))
@@ -554,18 +560,24 @@ int st_sensors_read_info_raw(struct iio_dev *indio_dev, err = -EBUSY ; goto out; }else { +mutex_lock (&sdata->odr_lock); err =st_sensors_set_enable (indio_dev, true); -if (err <0 ) +if (err <0 ) { +mutex_unlock (&sdata->odr_lock); goto out; + }msleep ((sdata->sensor_settings->bootime *1000 ) / sdata->odr); err =st_sensors_read_axis_data (indio_dev, ch, val); -if (err <0 ) +if (err <0 ) { +mutex_unlock (&sdata->odr_lock); goto out; + } *val = *val >> ch->scan_type.shift; err =st_sensors_set_enable (indio_dev, false); +mutex_unlock (&sdata->odr_lock); } out:mutex_unlock (&indio_dev->mlock);
drivers/iio/dummy/iio_simple_dummy.c +12 -8
@@ -575,10 +575,9 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)*/ swd =kzalloc (sizeof (*swd),GFP_KERNEL ); -if (!swd) { - ret = -ENOMEM ; - goto error_kzalloc; - } +if (!swd) +return ERR_PTR (-ENOMEM ); +/* * Allocate an IIO device. *
@@ -590,7 +589,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name) indio_dev =iio_device_alloc (parent,sizeof (*st));if (!indio_dev) { ret = -ENOMEM ; - goto error_ret; + goto error_free_swd; } st =iio_priv (indio_dev);
@@ -616,6 +615,10 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)* indio_dev->name = spi_get_device_id(spi)->name; */ indio_dev->name =kstrdup (name,GFP_KERNEL ); +if (!indio_dev->name) { + ret = -ENOMEM ; + goto error_free_device; + }/* Provide description of available channels */ indio_dev->channels = iio_dummy_channels;
@@ -632,7 +635,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name) ret =iio_simple_dummy_events_register (indio_dev);if (ret <0 ) - goto error_free_device; + goto error_free_name; ret =iio_simple_dummy_configure_buffer (indio_dev);if (ret <0 )
@@ -649,11 +652,12 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)iio_simple_dummy_unconfigure_buffer (indio_dev); error_unregister_events:iio_simple_dummy_events_unregister (indio_dev); +error_free_name: +kfree (indio_dev->name); error_free_device:iio_device_free (indio_dev); -error_ret: +error_free_swd:kfree (swd); -error_kzalloc:return ERR_PTR (ret); }
drivers/iio/proximity/vl53l0x-i2c.c +3 -4
@@ -104,6 +104,7 @@ static int vl53l0x_read_proximity(struct vl53l0x_data *data,u16 tries =20 ;u8 buffer[12 ];int ret; +unsigned long time_left; ret =i2c_smbus_write_byte_data (client,VL_REG_SYSRANGE_START ,1 );if (ret <0 )
@@ -112,10 +113,8 @@ static int vl53l0x_read_proximity(struct vl53l0x_data *data,if (data->client->irq) {reinit_completion (&data->completion); - ret =wait_for_completion_timeout (&data->completion,HZ /10 ); -if (ret <0 ) -return ret; -else if (ret ==0 ) + time_left =wait_for_completion_timeout (&data->completion,HZ /10 ); +if (time_left ==0 )return -ETIMEDOUT ;vl53l0x_clear_irq (data);
drivers/input/mouse/bcm5974.c +6 -1
@@ -942,17 +942,22 @@ static int bcm5974_probe(struct usb_interface *iface,if (!dev->tp_data) goto err_free_bt_buffer; -if (dev->bt_urb) +if (dev->bt_urb) {usb_fill_int_urb (dev->bt_urb, udev,usb_rcvintpipe (udev, cfg->bt_ep), dev->bt_data, dev->cfg.bt_datalen, bcm5974_irq_button, dev,1 ); + dev->bt_urb->transfer_flags |=URB_NO_TRANSFER_DMA_MAP ; + } +usb_fill_int_urb (dev->tp_urb, udev,usb_rcvintpipe (udev, cfg->tp_ep), dev->tp_data, dev->cfg.tp_datalen, bcm5974_irq_trackpad, dev,1 ); + dev->tp_urb->transfer_flags |=URB_NO_TRANSFER_DMA_MAP ; +/* create bcm5974 device */ usb_make_path (udev, dev->phys,sizeof (dev->phys));strlcat (dev->phys,"/input0" ,sizeof (dev->phys));
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +2 -0
@@ -3770,6 +3770,8 @@ static int arm_smmu_device_probe(struct platform_device *pdev)/* Base address */ res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!res) +return -EINVAL ;if (resource_size (res) <arm_smmu_resource_size (smmu)) {dev_err (dev,"MMIO region too small (%pr)\n" , res);return -EINVAL ;
drivers/iommu/arm/arm-smmu/arm-smmu.c +2 -3
@@ -2092,11 +2092,10 @@ static int arm_smmu_device_probe(struct platform_device *pdev)if (err)return err; - res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); - ioaddr = res->start; - smmu->base =devm_ioremap_resource (dev, res); + smmu->base =devm_platform_get_and_ioremap_resource (pdev,0 , &res);if (IS_ERR (smmu->base))return PTR_ERR (smmu->base); + ioaddr = res->start;/* * The resource size should effectively match the value of SMMU_TOP; * stash that temporarily until we know PAGESIZE to validate it with.
drivers/md/md.c +10 -5
@@ -7960,17 +7960,22 @@ EXPORT_SYMBOL(md_register_thread);void md_unregister_thread (struct md_thread **threadp) { -struct md_thread *thread = *threadp; -if (!thread) -return ; -pr_debug ("interrupting MD-thread pid %d\n" ,task_pid_nr (thread->tsk)); -/* Locking ensures that mddev_unlock does not wake_up a +struct md_thread *thread; + +/* +* Locking ensures that mddev_unlock does not wake_up a * non-existent thread */ spin_lock (&pers_lock); + thread = *threadp; +if (!thread) { +spin_unlock (&pers_lock); +return ; + } *threadp =NULL ;spin_unlock (&pers_lock); +pr_debug ("interrupting MD-thread pid %d\n" ,task_pid_nr (thread->tsk));kthread_stop (thread->tsk);kfree (thread); }
drivers/md/raid0.c +16 -15
@@ -128,21 +128,6 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)pr_debug ("md/raid0:%s: FINAL %d zones\n" ,mdname (mddev), conf->nr_strip_zones); -if (conf->nr_strip_zones ==1 ) { - conf->layout =RAID0_ORIG_LAYOUT ; - }else if (mddev->layout ==RAID0_ORIG_LAYOUT || - mddev->layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { - conf->layout = mddev->layout; - }else if (default_layout ==RAID0_ORIG_LAYOUT || - default_layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { - conf->layout = default_layout; - }else { -pr_err ("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n" , -mdname (mddev)); -pr_err ("md/raid0: please set raid0.default_layout to 1 or 2\n" ); - err = -ENOTSUPP ; - goto abort; - }/* * now since we have the hard sector sizes, we can make sure * chunk size is a multiple of that sector size
@@ -273,6 +258,22 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) (unsigned long long)smallest->sectors); } +if (conf->nr_strip_zones ==1 || conf->strip_zone[1 ].nb_dev ==1 ) { + conf->layout =RAID0_ORIG_LAYOUT ; + }else if (mddev->layout ==RAID0_ORIG_LAYOUT || + mddev->layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { + conf->layout = mddev->layout; + }else if (default_layout ==RAID0_ORIG_LAYOUT || + default_layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { + conf->layout = default_layout; + }else { +pr_err ("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n" , +mdname (mddev)); +pr_err ("md/raid0: please set raid0.default_layout to 1 or 2\n" ); + err = -EOPNOTSUPP ; + goto abort; + } +pr_debug ("md/raid0:%s: done.\n" ,mdname (mddev)); *private_conf = conf;
drivers/misc/cardreader/rtsx_usb.c +1 -0
@@ -667,6 +667,7 @@ static int rtsx_usb_probe(struct usb_interface *intf,return 0 ; out_init_fail: +usb_set_intfdata (ucr->pusb_intf,NULL );usb_free_coherent (ucr->pusb_dev,IOBUF_SIZE , ucr->iobuf, ucr->iobuf_dma);return ret;
drivers/misc/fastrpc.c +5 -4
@@ -1606,17 +1606,18 @@ static int fastrpc_req_munmap_impl(struct fastrpc_user *fl, struct fastrpc_req_munmap *req) {struct fastrpc_invoke_args args[1 ] = { [0 ] = {0 } }; -struct fastrpc_buf *buf, *b; +struct fastrpc_buf *buf =NULL , *iter, *b;struct fastrpc_munmap_req_msg req_msg;struct device *dev = fl->sctx->dev;int err;u32 sc;spin_lock (&fl->lock); -list_for_each_entry_safe (buf, b, &fl->mmaps, node) { -if ((buf->raddr == req->vaddrout) && (buf->size == req->size)) +list_for_each_entry_safe (iter, b, &fl->mmaps, node) { +if ((iter->raddr == req->vaddrout) && (iter->size == req->size)) { + buf = iter;break ; - buf =NULL ; + } }spin_unlock (&fl->lock);
drivers/misc/lkdtm/bugs.c +9 -1
@@ -327,6 +327,11 @@ void lkdtm_ARRAY_BOUNDS(void) not_checked =kmalloc (sizeof (*not_checked) *2 ,GFP_KERNEL ); checked =kmalloc (sizeof (*checked) *2 ,GFP_KERNEL ); +if (!not_checked || !checked) { +kfree (not_checked); +kfree (checked); +return ; + }pr_info ("Array access within bounds ...\n" );/* For both, touch all bytes in the actual member size. */
@@ -346,7 +351,10 @@ void lkdtm_ARRAY_BOUNDS(void)kfree (not_checked);kfree (checked);pr_err ("FAIL: survived array bounds overflow!\n" ); -pr_expected_config (CONFIG_UBSAN_BOUNDS ); +if (IS_ENABLED (CONFIG_UBSAN_BOUNDS )) +pr_expected_config (CONFIG_UBSAN_TRAP ); +else +pr_expected_config (CONFIG_UBSAN_BOUNDS ); }void lkdtm_CORRUPT_LIST_ADD (void )
drivers/misc/lkdtm/lkdtm.h +4 -4
@@ -9,19 +9,19 @@extern char *lkdtm_kernel_info;#define pr_expected_config (kconfig) \ -{ \ +do { \ if (IS_ENABLED(kconfig)) \ pr_err("Unexpected! This %s was built with " #kconfig "=y\n", \ lkdtm_kernel_info); \ else \ pr_warn("This is probably expected, since this %s was built *without* " #kconfig "=y\n", \ lkdtm_kernel_info); \ -} +} while (0)#ifndef MODULE int lkdtm_check_bool_cmdline (const char *param);#define pr_expected_config_param (kconfig, param) \ -{ \ +do { \ if (IS_ENABLED(kconfig)) { \ switch (lkdtm_check_bool_cmdline(param)) { \ case 0: \
@@ -52,7 +52,7 @@ int lkdtm_check_bool_cmdline(const char *param); break; \ } \ } \ -} +} while (0)#else #define pr_expected_config_param (kconfig, param) pr_expected_config(kconfig)#endif
drivers/misc/lkdtm/usercopy.c +14 -3
@@ -30,12 +30,12 @@ static const unsigned char test_text[] = "This is a test.\n";*/ static noinline unsigned char *trick_compiler(unsigned char *stack) { -return stack +0 ; +return stack + unconst; } static noinline unsigned char *do_usercopy_stack_callee(int value) { -unsigned char buf[32 ]; +unsigned char buf[128 ];int i;/* Exercise stack to avoid everything living in registers. */
@@ -43,7 +43,12 @@ static noinline unsigned char *do_usercopy_stack_callee(int value) buf[i] = value &0xff ; } -return trick_compiler (buf); +/* +* Put the target buffer in the middle of stack allocation +* so that we don't step on future stack users regardless +* of stack growth direction. +*/ +return trick_compiler (&buf[(128 /2 )-32 ]); } static noinline void do_usercopy_stack(bool to_user, bool bad_frame)
@@ -66,6 +71,12 @@ static noinline void do_usercopy_stack(bool to_user, bool bad_frame) bad_stack -=sizeof (unsigned long ); } +#ifdef ARCH_HAS_CURRENT_STACK_POINTER +pr_info ("stack : %px\n" , (void *)current_stack_pointer); +#endif +pr_info ("good_stack: %px-%px\n" , good_stack, good_stack +sizeof (good_stack)); +pr_info ("bad_stack : %px-%px\n" , bad_stack, bad_stack +sizeof (good_stack)); + user_addr =vm_mmap (NULL ,0 ,PAGE_SIZE ,PROT_READ |PROT_WRITE |PROT_EXEC ,MAP_ANONYMOUS |MAP_PRIVATE ,0 );
drivers/misc/pvpanic/pvpanic.c +8 -2
@@ -34,7 +34,9 @@ pvpanic_send_event(unsigned int event) {struct pvpanic_instance *pi_cur; -spin_lock (&pvpanic_lock); +if (!spin_trylock (&pvpanic_lock)) +return ; +list_for_each_entry (pi_cur, &pvpanic_list, list) {if (event & pi_cur->capability & pi_cur->events)iowrite8 (event, pi_cur->base);
@@ -55,9 +57,13 @@ pvpanic_panic_notify(struct notifier_block *nb, unsigned long code, void *unusedreturn NOTIFY_DONE ; } +/* +* Call our notifier very early on panic, deferring the +* action taken to the hypervisor. +*/ static struct notifier_block pvpanic_panic_nb = { .notifier_call = pvpanic_panic_notify, - .priority =1 ,/* let this called before broken drm_fb_helper() */ + .priority =INT_MAX , };static void pvpanic_remove (void *param)
drivers/mmc/core/block.c +1 -2
@@ -1482,8 +1482,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq) err =mmc_cqe_recovery (host);if (err)mmc_blk_reset (mq->blkdata, host,MMC_BLK_CQE_RECOVERY ); -else -mmc_blk_reset_success (mq->blkdata,MMC_BLK_CQE_RECOVERY ); +mmc_blk_reset_success (mq->blkdata,MMC_BLK_CQE_RECOVERY );pr_debug ("%s: CQE recovery done\n" ,mmc_hostname (host)); }
drivers/mmc/host/sdhci-pci-gli.c +3 -0
@@ -972,6 +972,9 @@ static int gl9763e_runtime_resume(struct sdhci_pci_chip *chip)struct sdhci_host *host = slot->host;u16 clock; +if (host->mmc->ios.power_mode !=MMC_POWER_ON ) +return 0 ; + clock =sdhci_readw (host,SDHCI_CLOCK_CONTROL ); clock |=SDHCI_CLOCK_PLL_EN ;
drivers/mtd/ubi/fastmap-wl.c +46 -23
112 lines not on this page · raw message
drivers/mtd/ubi/fastmap.c +0 -11
@@ -1230,17 +1230,6 @@ static int ubi_write_fastmap(struct ubi_device *ubi, fm_pos +=sizeof (*fec);ubi_assert (fm_pos <= ubi->fm_size); } -if (ubi->fm_next_anchor) { - fec = (struct ubi_fm_ec *)(fm_raw + fm_pos); - - fec->pnum =cpu_to_be32 (ubi->fm_next_anchor->pnum); -set_seen (ubi, ubi->fm_next_anchor->pnum, seen_pebs); - fec->ec =cpu_to_be32 (ubi->fm_next_anchor->ec); - - free_peb_count++; - fm_pos +=sizeof (*fec); -ubi_assert (fm_pos <= ubi->fm_size); - } fmh->free_peb_count =cpu_to_be32 (free_peb_count);ubi_for_each_used_peb (ubi, wl_e, tmp_rb) {
drivers/mtd/ubi/ubi.h +1 -3
@@ -489,8 +489,7 @@ struct ubi_debug_info {* @fm_work: fastmap work queue * @fm_work_scheduled: non-zero if fastmap work was scheduled * @fast_attach: non-zero if UBI was attached by fastmap -* @fm_anchor: The new anchor PEB used during fastmap update -* @fm_next_anchor: An anchor PEB candidate for the next time fastmap is updated +* @fm_anchor: The next anchor PEB to use for fastmap * @fm_do_produce_anchor: If true produce an anchor PEB in wl * * @used: RB-tree of used physical eraseblocks
@@ -601,7 +600,6 @@ struct ubi_device {int fm_work_scheduled;int fast_attach;struct ubi_wl_entry *fm_anchor; -struct ubi_wl_entry *fm_next_anchor;int fm_do_produce_anchor;/* Wear-leveling sub-system's stuff */
drivers/mtd/ubi/vmt.c +0 -1
@@ -309,7 +309,6 @@ int ubi_create_volume(struct ubi_device *ubi, struct ubi_mkvol_req *req) ubi->volumes[vol_id] =NULL ; ubi->vol_count -=1 ;spin_unlock (&ubi->volumes_lock); -ubi_eba_destroy_table (eba_tbl); out_acc:spin_lock (&ubi->volumes_lock); ubi->rsvd_pebs -= vol->reserved_pebs;
drivers/mtd/ubi/wl.c +10 -9
@@ -689,16 +689,16 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,#ifdef CONFIG_MTD_UBI_FASTMAP e1 =find_anchor_wl_entry (&ubi->used); -if (e1 && ubi->fm_next_anchor && - (ubi->fm_next_anchor->ec - e1->ec >=UBI_WL_THRESHOLD )) { +if (e1 && ubi->fm_anchor && + (ubi->fm_anchor->ec - e1->ec >=UBI_WL_THRESHOLD )) { ubi->fm_do_produce_anchor =1 ; -/* fm_next_anchor is no longer considered a good anchor -* candidate. +/* +* fm_anchor is no longer considered a good anchor. * NULL assignment also prevents multiple wear level checks * of this PEB. */ -wl_tree_add (ubi->fm_next_anchor, &ubi->free); - ubi->fm_next_anchor =NULL ; +wl_tree_add (ubi->fm_anchor, &ubi->free); + ubi->fm_anchor =NULL ; ubi->free_count++; }
@@ -1085,12 +1085,13 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)if (!err) {spin_lock (&ubi->wl_lock); -if (!ubi->fm_disabled && !ubi->fm_next_anchor && +if (!ubi->fm_disabled && !ubi->fm_anchor && e->pnum <UBI_FM_MAX_START ) { -/* Abort anchor production, if needed it will be +/* +* Abort anchor production, if needed it will be * enabled again in the wear leveling started below. */ - ubi->fm_next_anchor = e; + ubi->fm_anchor = e; ubi->fm_do_produce_anchor =0 ; }else {wl_tree_add (e, &ubi->free);
drivers/net/amt.c +40 -19
162 lines not on this page · raw message
drivers/net/bonding/bond_main.c +2 -0
@@ -6159,7 +6159,9 @@ static int bond_check_params(struct bond_params *params)strscpy_pad (params->primary, primary,sizeof (params->primary));memcpy (params->arp_targets, arp_target,sizeof (arp_target)); +#if IS_ENABLED (CONFIG_IPV6 )memset (params->ns_targets,0 ,sizeof (struct in6_addr ) *BOND_MAX_NS_TARGETS ); +#endif return 0 ; }
drivers/net/bonding/bond_netlink.c +0 -5
@@ -290,11 +290,6 @@ static int bond_changelink(struct net_device *bond_dev, struct nlattr *tb[], addr6 =nla_get_in6_addr (attr); -if (ipv6_addr_type (&addr6) &IPV6_ADDR_LINKLOCAL ) { -NL_SET_ERR_MSG (extack,"Invalid IPv6 addr6" ); -return -EINVAL ; - } -bond_opt_initextra (&newval, &addr6,sizeof (addr6)); err =__bond_opt_set (bond,BOND_OPT_NS_TARGETS , &newval);
drivers/net/bonding/bond_options.c +6 -4
@@ -34,10 +34,8 @@ static int bond_option_arp_ip_target_add(struct bonding *bond, __be32 target);static int bond_option_arp_ip_target_rem (struct bonding *bond,__be32 target);static int bond_option_arp_ip_targets_set (struct bonding *bond,const struct bond_opt_value *newval); -#if IS_ENABLED (CONFIG_IPV6 )static int bond_option_ns_ip6_targets_set (struct bonding *bond,const struct bond_opt_value *newval); -#endif static int bond_option_arp_validate_set (struct bonding *bond,const struct bond_opt_value *newval); static int bond_option_arp_all_targets_set(struct bonding *bond,
@@ -299,7 +297,6 @@ static const struct bond_option bond_opts[BOND_OPT_LAST] = { .flags = BOND_OPTFLAG_RAWVAL, .set = bond_option_arp_ip_targets_set }, -#if IS_ENABLED (CONFIG_IPV6 ) [BOND_OPT_NS_TARGETS] = { .id = BOND_OPT_NS_TARGETS, .name = "ns_ip6_target",
@@ -307,7 +304,6 @@ static const struct bond_option bond_opts[BOND_OPT_LAST] = { .flags = BOND_OPTFLAG_RAWVAL, .set = bond_option_ns_ip6_targets_set }, -#endif [BOND_OPT_DOWNDELAY] = { .id = BOND_OPT_DOWNDELAY, .name = "downdelay",
@@ -1254,6 +1250,12 @@ static int bond_option_ns_ip6_targets_set(struct bonding *bond,return 0 ; } +#else +static int bond_option_ns_ip6_targets_set (struct bonding *bond, +const struct bond_opt_value *newval) +{ +return -EPERM ; +}#endif static int bond_option_arp_validate_set(struct bonding *bond,
drivers/net/bonding/bond_procfs.c +15 -0
@@ -129,6 +129,21 @@ static void bond_info_show_master(struct seq_file *seq) printed =1 ; }seq_printf (seq,"\n" ); + +#if IS_ENABLED (CONFIG_IPV6 ) + printed =0 ; +seq_printf (seq,"NS IPv6 target/s (xx::xx form):" ); + +for (i =0 ; (i <BOND_MAX_NS_TARGETS ); i++) { +if (ipv6_addr_any (&bond->params.ns_targets[i])) +break ; +if (printed) +seq_printf (seq,"," ); +seq_printf (seq," %pI6c" , &bond->params.ns_targets[i]); + printed =1 ; + } +seq_printf (seq,"\n" ); +#endif }if (BOND_MODE (bond) ==BOND_MODE_8023AD ) {
drivers/net/dsa/lantiq_gswip.c +3 -1
@@ -2069,8 +2069,10 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,for_each_available_child_of_node (gphy_fw_list_np, gphy_fw_np) { err =gswip_gphy_fw_probe (priv, &priv->gphy_fw[i], gphy_fw_np, i); -if (err) +if (err) { +of_node_put (gphy_fw_np); goto remove_gphy; + } i++; }
drivers/net/dsa/mv88e6xxx/chip.c +1 -0
@@ -3960,6 +3960,7 @@ static int mv88e6xxx_mdios_register(struct mv88e6xxx_chip *chip,*/ child =of_get_child_by_name (np,"mdio" ); err =mv88e6xxx_mdio_register (chip, child, false); +of_node_put (child);if (err)return err;
drivers/net/dsa/mv88e6xxx/serdes.c +11 -16
@@ -50,22 +50,17 @@ static int mv88e6390_serdes_write(struct mv88e6xxx_chip *chip, }static int mv88e6xxx_serdes_pcs_get_state (struct mv88e6xxx_chip *chip, -u16 ctrl,u16 status,u16 lpa, +u16 bmsr,u16 lpa,u16 status,struct phylink_link_state *state) { state->link = !!(status &MV88E6390_SGMII_PHY_STATUS_LINK ); + state->an_complete = !!(bmsr &BMSR_ANEGCOMPLETE );if (status &MV88E6390_SGMII_PHY_STATUS_SPD_DPL_VALID ) {/* The Spped and Duplex Resolved register is 1 if AN is enabled * and complete, or if AN is disabled. So with disabled AN we -* still get here on link up. But we want to set an_complete -* only if AN was enabled, thus we look at BMCR_ANENABLE. -* (According to 802.3-2008 section 22.2.4.2.10, we should be -* able to get this same value from BMSR_ANEGCAPABLE, but tests -* show that these Marvell PHYs don't conform to this part of -* the specificaion - BMSR_ANEGCAPABLE is simply always 1.) +* still get here on link up. */ - state->an_complete = !!(ctrl &BMCR_ANENABLE ); state->duplex = status &MV88E6390_SGMII_PHY_STATUS_DUPLEX_FULL ?DUPLEX_FULL :DUPLEX_HALF ;
@@ -191,12 +186,12 @@ int mv88e6352_serdes_pcs_config(struct mv88e6xxx_chip *chip, int port, int mv88e6352_serdes_pcs_get_state(struct mv88e6xxx_chip *chip, int port,
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/altera/altera_tse_main.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/dev.c +40 -14
54 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +11 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/trap.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +22 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +16 -15
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +36 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +33 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_main.c +7 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/conntrack.c +16 -16
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/match.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfdk/dp.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfdk/nfdk.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_net.h +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/sfc/efx_channels.c +2 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/nfc/st21nfca/se.c +30 -23
53 lines not on this page · raw message
drivers/pci/controller/pcie-brcmstb.c +30 -227
257 lines not on this page · raw message
drivers/phy/rockchip/phy-rockchip-inno-usb2.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/power/supply/axp288_fuel_gauge.c +36 -5
41 lines not on this page · raw message
drivers/power/supply/power_supply_core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/remoteproc/mtk_scp.c +52 -18
70 lines not on this page · raw message
drivers/staging/fieldbus/anybuss/host.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/r8188eu/core/rtw_mlme.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/staging/r8188eu/core/rtw_xmit.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/staging/r8188eu/include/rtw_xmit.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192e/rtllib_softmac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/tty/serial/8250/8250_aspeed_vuart.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/tty/serial/cpm_uart/cpm_uart_core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/watchdog/rzg2l_wdt.c +17 -29
46 lines not on this page · raw message
include/net/netfilter/nf_tables_offload.h +1 -1
Lines of this file are not shown. View the raw message.
include/net/sch_generic.h +14 -28
42 lines not on this page · raw message
net/bluetooth/hci_sync.c +45 -17
62 lines not on this page · raw message
net/bluetooth/mgmt.c +27 -18
45 lines not on this page · raw message
net/ipv4/tcp_input.c +22 -19
41 lines not on this page · raw message
net/netfilter/nf_tables_api.c +23 -31
54 lines not on this page · raw message
security/keys/trusted-keys/trusted_tpm2.c +2 -2
Lines of this file are not shown. View the raw message.
tools/perf/arch/x86/util/evsel.h new file +7 -0
Lines of this file are not shown. View the raw message.
tools/perf/arch/x86/util/topdown.c +29 -17
46 lines not on this page · raw message
tools/perf/arch/x86/util/topdown.h new file +7 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/bpf/Makefile +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_nat.sh +43 -0
43 lines not on this page · 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.