Linux 5.10.42
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.42 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/userspace-api/seccomp_filter.rst | 16 Makefile | 2 arch/arm64/include/asm/kvm_emulate.h | 5 arch/arm64/kvm/reset.c | 28 + arch/mips/alchemy/board-xxs1500.c | 1 arch/mips/ralink/of.c | 2 arch/openrisc/include/asm/barrier.h | 9 arch/x86/kvm/x86.c | 2 drivers/acpi/acpi_apd.c | 1 drivers/base/core.c | 37 + drivers/char/hpet.c | 2 drivers/crypto/cavium/nitrox/nitrox_main.c | 1 drivers/dma/qcom/hidma_mgmt.c | 17 drivers/gpio/gpio-cadence.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.c | 12 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 1 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 2 drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c | 2 drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c | 2 drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 5 drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 6 drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | 2 drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c | 2 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 8 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 18 drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 9 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 10 drivers/gpu/drm/i915/display/intel_dp.c | 2 drivers/gpu/drm/meson/meson_drv.c | 9 drivers/i2c/busses/i2c-i801.c | 6 drivers/i2c/busses/i2c-mt65xx.c | 5 drivers/i2c/busses/i2c-s3c2410.c | 3 drivers/i2c/busses/i2c-sh_mobile.c | 2 drivers/iio/adc/ad7124.c | 36 - drivers/iio/adc/ad7192.c | 19 drivers/iio/adc/ad7768-1.c | 8 drivers/iio/adc/ad7793.c | 1 drivers/iio/adc/ad7923.c | 4 drivers/iio/dac/ad5770r.c | 16 drivers/iio/gyro/fxas21002c_core.c | 2 drivers/interconnect/qcom/bcm-voter.c | 4 drivers/iommu/intel/dmar.c | 4 drivers/iommu/intel/iommu.c | 7 drivers/iommu/intel/pasid.c | 3 drivers/iommu/virtio-iommu.c | 1 drivers/isdn/hardware/mISDN/hfcsusb.c | 17 drivers/isdn/hardware/mISDN/mISDNinfineon.c | 21 - drivers/md/dm-snap.c | 2 drivers/media/dvb-frontends/sp8870.c | 2 drivers/media/usb/gspca/cpia1.c | 6 drivers/media/usb/gspca/m5602/m5602_mt9m111.c | 16 drivers/media/usb/gspca/m5602/m5602_po1030.c | 14 drivers/misc/kgdbts.c | 3 drivers/misc/lis3lv02d/lis3lv02d.h | 1 drivers/misc/mei/interrupt.c | 3 drivers/net/caif/caif_serial.c | 3 drivers/net/dsa/mt7530.c | 8 drivers/net/dsa/sja1105/sja1105_dynamic_config.c | 23 - drivers/net/dsa/sja1105/sja1105_main.c | 75 ++- drivers/net/ethernet/broadcom/bnx2.c | 2 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 12 drivers/net/ethernet/broadcom/bnxt/bnxt.h | 10 drivers/net/ethernet/cavium/liquidio/lio_main.c | 27 - drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 27 - drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 2 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c | 80 +++ drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.h | 2 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c | 6 drivers/net/ethernet/freescale/fec_main.c | 11 drivers/net/ethernet/fujitsu/fmvj18x_cs.c | 4 drivers/net/ethernet/google/gve/gve_main.c | 21 - drivers/net/ethernet/google/gve/gve_tx.c | 8 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 26 - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 4 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 16 drivers/net/ethernet/lantiq_xrx200.c | 14 drivers/net/ethernet/marvell/mvpp2/mvpp2.h | 22 + drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 54 ++ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 67 ++- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 24 + drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 4 drivers/net/ethernet/mellanox/mlx4/port.c | 107 +++++ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 10 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 1 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c | 38 - drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c | 6 drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c | 3 drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.h | 5 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 9 drivers/net/ethernet/ti/netcp_core.c | 4 drivers/net/ipa/ipa.h | 2 drivers/net/ipa/ipa_mem.c | 3 drivers/net/mdio/mdio-octeon.c | 2 drivers/net/mdio/mdio-thunder.c | 1 drivers/net/usb/hso.c | 45 +- drivers/net/usb/smsc75xx.c | 8 drivers/net/wireless/ath/ath10k/htt.h | 1 drivers/net/wireless/ath/ath10k/htt_rx.c | 201 +++++++++- drivers/net/wireless/ath/ath10k/rx_desc.h | 14 drivers/net/wireless/ath/ath11k/dp_rx.c | 18 drivers/net/wireless/ath/ath11k/dp_rx.h | 1 drivers/net/wireless/ath/ath11k/mac.c | 6 drivers/net/wireless/ath/ath6kl/debug.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 8 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 19 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 42 -- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 9 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.h | 5 drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 8 drivers/net/wireless/marvell/libertas/mesh.c | 33 - drivers/nvme/target/tcp.c | 2 drivers/platform/x86/hp-wireless.c | 2 drivers/platform/x86/hp_accel.c | 22 + drivers/platform/x86/intel_punit_ipc.c | 1 drivers/platform/x86/touchscreen_dmi.c | 43 ++ drivers/s390/cio/vfio_ccw_cp.c | 4 drivers/scsi/BusLogic.c | 6 drivers/scsi/BusLogic.h | 2 drivers/scsi/libsas/sas_port.c | 4 drivers/scsi/pm8001/pm8001_hwi.c | 10 drivers/scsi/pm8001/pm8001_init.c | 2 drivers/scsi/pm8001/pm8001_sas.c | 7 drivers/scsi/pm8001/pm80xx_hwi.c | 12 drivers/scsi/ufs/ufs-mediatek.c | 4 drivers/spi/spi-fsl-dspi.c | 4 drivers/spi/spi.c | 23 - drivers/staging/emxx_udc/emxx_udc.c | 4 drivers/staging/iio/cdc/ad7746.c | 1 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c | 4 drivers/thermal/intel/x86_pkg_temp_thermal.c | 2 drivers/thunderbolt/dma_port.c | 11 drivers/thunderbolt/usb4.c | 9 drivers/tty/serial/8250/8250.h | 1 drivers/tty/serial/8250/8250_aspeed_vuart.c | 1 drivers/tty/serial/8250/8250_dw.c | 1 drivers/tty/serial/8250/8250_pci.c | 47 +- drivers/tty/serial/8250/8250_port.c | 12 drivers/tty/serial/max310x.c | 2 drivers/tty/serial/rp2.c | 52 -- drivers/tty/serial/serial-tegra.c | 2 drivers/tty/serial/serial_core.c | 8 drivers/tty/serial/sh-sci.c | 4 drivers/usb/core/devio.c | 11 drivers/usb/core/hub.h | 6 drivers/usb/dwc3/gadget.c | 13 drivers/usb/gadget/udc/renesas_usb3.c | 5 drivers/usb/misc/trancevibrator.c | 4 drivers/usb/misc/uss720.c | 1 drivers/usb/serial/ftdi_sio.c | 3 drivers/usb/serial/ftdi_sio_ids.h | 7 drivers/usb/serial/option.c | 4 drivers/usb/serial/pl2303.c | 1 drivers/usb/serial/pl2303.h | 1 drivers/usb/serial/ti_usb_3410_5052.c | 3 drivers/usb/typec/mux.c | 7 drivers/vdpa/mlx5/net/mlx5_vnet.c | 19 fs/afs/dir.c | 4 fs/block_dev.c | 3 fs/btrfs/extent_io.c | 7 fs/btrfs/reflink.c | 5 fs/btrfs/tree-log.c | 2 fs/cifs/smb2pdu.c | 13 fs/nfs/filelayout/filelayout.c | 2 fs/nfs/nfs4file.c | 2 fs/nfs/nfs4proc.c | 4 fs/nfs/pagelist.c | 21 - fs/nfs/pnfs.c | 15 fs/proc/base.c | 4 include/linux/bits.h | 2 include/linux/const.h | 8 include/linux/device.h | 6 include/linux/minmax.h | 10 include/linux/mlx5/mpfs.h | 18 include/linux/sunrpc/xprt.h | 2 include/net/cfg80211.h | 4 include/net/netfilter/nf_flow_table.h | 1 include/net/pkt_cls.h | 11 include/net/pkt_sched.h | 7 include/net/sch_generic.h | 35 + include/net/sock.h | 4 kernel/bpf/verifier.c | 12 kernel/seccomp.c | 30 - net/bluetooth/cmtp/core.c | 5 net/core/dev.c | 29 + net/core/filter.c | 1 net/core/neighbour.c | 4 net/core/sock.c | 8 net/dsa/master.c | 5 net/dsa/slave.c | 12 net/hsr/hsr_device.c | 2 net/hsr/hsr_forward.c | 30 + net/hsr/hsr_forward.h | 8 net/hsr/hsr_main.h | 4 net/hsr/hsr_slave.c | 11 net/ipv6/mcast.c | 3 net/ipv6/reassembly.c | 4 net/mac80211/ieee80211_i.h | 36 - net/mac80211/iface.c | 11 net/mac80211/key.c | 7 net/mac80211/key.h | 2 net/mac80211/rx.c | 150 +++++-- net/mac80211/sta_info.c | 6 net/mac80211/sta_info.h | 33 + net/mac80211/wpa.c | 13 net/mptcp/options.c | 1 net/mptcp/protocol.c | 6 net/mptcp/subflow.c | 1 net/netfilter/nf_flow_table_core.c | 3 net/netfilter/nf_flow_table_offload.c | 7 net/netfilter/nft_set_pipapo.c | 4 net/netfilter/nft_set_pipapo.h | 2 net/netfilter/nft_set_pipapo_avx2.c | 3 net/openvswitch/meter.c | 8 net/packet/af_packet.c | 10 net/sched/cls_api.c | 2 net/sched/sch_dsmark.c | 3 net/sched/sch_fq_pie.c | 19 net/sched/sch_generic.c | 50 ++ net/smc/smc_ism.c | 26 - net/sunrpc/clnt.c | 7 net/sunrpc/xprt.c | 40 + net/sunrpc/xprtrdma/transport.c | 12 net/sunrpc/xprtrdma/verbs.c | 18 net/sunrpc/xprtrdma/xprt_rdma.h | 1 net/tipc/core.c | 2 net/tipc/core.h | 2 net/tipc/msg.c | 9 net/tipc/socket.c | 5 net/tipc/udp_media.c | 2 net/tls/tls_sw.c | 11 net/wireless/util.c | 7 samples/bpf/xdpsock_user.c | 2 scripts/clang-tools/gen_compile_commands.py | 2 scripts/clang-tools/run-clang-tools.py | 2 sound/isa/gus/gus_main.c | 13 sound/isa/sb/sb16_main.c | 10 sound/pci/hda/patch_realtek.c | 46 ++ sound/soc/codecs/cs35l33.c | 1 sound/soc/codecs/cs42l42.c | 3 sound/soc/codecs/cs43130.c | 28 - sound/soc/qcom/lpass-cpu.c | 12 sound/usb/mixer_quirks.c | 2 sound/usb/mixer_scarlett_gen2.c | 81 ++-- sound/usb/mixer_scarlett_gen2.h | 2 tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 4 tools/bpf/bpftool/Documentation/bpftool-prog.rst | 2 tools/bpf/bpftool/bash-completion/bpftool | 6 tools/bpf/bpftool/cgroup.c | 3 tools/bpf/bpftool/prog.c | 2 tools/include/linux/bits.h | 2 tools/include/linux/const.h | 8 tools/perf/pmu-events/jevents.c | 2 tools/perf/scripts/python/exported-sql-viewer.py | 12 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 6 tools/perf/util/intel-pt.c | 5 tools/testing/selftests/gpio/Makefile | 24 - tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json | 8 virt/lib/irqbypass.c | 16 265 files changed, 2244 insertions(+), 937 deletions(-)
Adrian Hunter (5):
perf intel-pt: Fix sample instruction bytes
perf intel-pt: Fix transaction abort handling
perf scripts python: exported-sql-viewer.py: Fix copy to clipboard from Top Calls by elapsed Time report perf scripts python: exported-sql-viewer.py: Fix Array TypeError
perf scripts python: exported-sql-viewer.py: Fix warning display
Ajish Koshy (1):
scsi: pm80xx: Fix drives missing during rmmod/insmod loop
Alaa Emad (2):
media: dvb: Add check on sp8870_readreg return
media: gspca: mt9m111: Check write_bridge for timeout
Alan Stern (1):
USB: usbfs: Don't WARN about excessively large memory allocations
Aleksander Jan Bajkowski (1):
net: lantiq: fix memory corruption in RX ring
Alex Elder (1):
net: ipa: memory region array is variable size
Alexander Usyskin (1):
mei: request autosuspend after sending rx flow control
Alexandru Ardelean (1):
iio: adc: ad7192: handle regulator voltage error first
Andrew Jeffery (1):
serial: 8250: Add UART_BUG_TXRACE workaround for Aspeed VUART
Andy Gospodarek (1):
bnxt_en: Include new P5 HV definition in VF check.
Andy Shevchenko (3):
iio: dac: ad5770r: Put fwnode in error case during ->probe() platform/x86: intel_punit_ipc: Append MODULE_DEVICE_TABLE for ACPI
spi: Assume GPIO CS active high in ACPI case
Anirudh Rayabharam (3):
net: fujitsu: fix potential null-ptr-deref net/smc: properly handle workqueue allocation failure
ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd()
Anna Schumaker (1):
NFSv4: Fix a NULL pointer dereference in pnfs_mark_matching_lsegs_return()
Ariel Levkovich (1):
net/mlx5: Set term table as an unmanaged flow table
Atul Gopinathan (1):
serial: max310x: unregister uart driver in case of failure and abort
Aurelien Aptel (1):
cifs: set server->cipher_type to AES-128-CCM for SMB3.0
Aya Levin (1):
net/mlx5e: Fix error path of updating netdev queues
Ayush Sawal (1):
cxgb4/ch_ktls: Clear resources when pf4 device is removed
Bixuan Cui (1):
iommu/virtio: Add missing MODULE_DEVICE_TABLE
Bjorn Andersson (1):
usb: typec: mux: Fix matching with typec_altmode_desc
Boris Burkov (1):
btrfs: return whole extents in fiemap
Catherine Sullivan (2):
gve: Check TX QPL was actually assigned
gve: Upgrade memory barrier in poll routine
Chinmay Agarwal (1):
neighbour: Prevent Race condition in neighbour subsytem
Chris Park (1):
drm/amd/display: Disconnect non-DP with no EDID
Christian Gmeiner (1):
serial: 8250_pci: handle FL_NOIRQ board flag
Christian König (1):
drm/amdgpu: stop touching sched.ready in the backend
Christophe JAILLET (4):
spi: spi-fsl-dspi: Fix a resource leak in an error handling path
net: netcp: Fix an error message
net: mdio: thunder: Fix a double free issue in the .remove function
net: mdio: octeon: Fix some double free issues
Chunfeng Yun (1):
usb: core: reduce power-on-good delay time of root hub
Colin Ian King (1):
serial: tegra: Fix a mask operation that is always true
DENG Qingfang (1):
net: dsa: mt7530: fix VLAN traffic leaks
Dan Carpenter (7):
NFS: fix an incorrect limit in filelayout_decode_layout()
net: dsa: fix a crash if ->get_sset_count() fails chelsio/chtls: unlock on error in chtls_pt_recvmsg()
net: hso: check for allocation failure in hso_create_bulk_serial_device()
staging: emxx_udc: fix loop in _nbu2ss_nuke()
ASoC: cs35l33: fix an error code in probe()
scsi: libsas: Use _safe() loop in sas_resume_port()
Daniele Palmas (1):
USB: serial: option: add Telit LE910-S1 compositions 0x7010, 0x7011
David Awogbemila (3):
gve: Update mgmt_msix_idx if num_ntfy changes
gve: Add NULL pointer checks when freeing irqs.
gve: Correct SKB queue index validation.
David Howells (1):
afs: Fix the nlink handling of dir-over-dir rename
Davide Caratti (2):
net/sched: fq_pie: re-factor fix for fq_pie endless loop net/sched: fq_pie: fix OOB access in the traffic path
Dima Chumak (2):
net/mlx5e: Fix multipath lag activation net/mlx5e: Fix nullptr in add_vlan_push_action()
Dominik Andreas Schorpp (1):
USB: serial: ftdi_sio: add IDs for IDS GmbH Products
Dongliang Mu (1):
misc/uss720: fix memory leak in uss720_probe
Du Cheng (1):
net: caif: remove BUG_ON(dev == NULL) in caif_xmit
Eli Cohen (1):
{net,vdpa}/mlx5: Configure interface MAC into mpfs L2 table
Eric Farman (1):
vfio-ccw: Check initialized flag in cp_init()
Evan Quan (1):
drm/amd/pm: correct MGpuFanBoost setting
Felix Fietkau (1):
perf jevents: Fix getting maximum number of fds
Filipe Manana (1):
btrfs: release path before starting transaction when cloning inline extent
Francesco Ruggeri (1):
ipv6: record frag_max_size in atomic fragments in input path
Fugang Duan (1):
net: fec: fix the potential memory leak in fec_enet_init()
Geert Uytterhoeven (2):
serial: sh-sci: Fix off-by-one error in FIFO threshold register setting
i2c: sh_mobile: Use new clock calculation formulas for RZ/G2E
Geoffrey D. Bennett (2):
ALSA: usb-audio: scarlett2: Fix device hang with ehci-pci
ALSA: usb-audio: scarlett2: Improve driver startup messages
George McCollister (1):
net: hsr: fix mac_len checks
Greg Kroah-Hartman (29):
kgdb: fix gcc-11 warnings harder
Revert "crypto: cavium/nitrox - add an error message to explain the failure of pci_request_mem_regions" Revert "media: usb: gspca: add a missed check for goto_low_power"
Revert "ALSA: sb: fix a missing check of snd_ctl_add"
Revert "serial: max310x: pass return value of spi_register_driver"
Revert "net: fujitsu: fix a potential NULL pointer dereference"
Revert "net/smc: fix a NULL pointer dereference"
Revert "net: caif: replace BUG_ON with recovery code"
Revert "char: hpet: fix a missing check of ioremap"
Revert "ALSA: gus: add a check of the status of snd_ctl_add"
Revert "ALSA: usx2y: Fix potential NULL pointer dereference"
Revert "isdn: mISDNinfineon: fix potential NULL pointer dereference"
Revert "ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd()"
Revert "isdn: mISDN: Fix potential NULL pointer dereference of kzalloc"
Revert "dmaengine: qcom_hidma: Check for driver register failure"
Revert "libertas: add checks for the return value of sysfs_create_group"
libertas: register sysfs groups properly
Revert "ASoC: cs43130: fix a NULL pointer dereference"
ASoC: cs43130: handle errors in cs43130_probe() properly
Revert "media: dvb: Add check on sp8870_readreg"
Revert "media: gspca: mt9m111: Check write_bridge for timeout"
Revert "media: gspca: Check the return value of write_bridge for timeout"
media: gspca: properly check for errors in po1030_probe()
Revert "net: liquidio: fix a NULL pointer dereference"
Revert "brcmfmac: add a check for the status of usb_register"
brcmfmac: properly check for bus register errors
i915: fix build warning in intel_dp_get_link_status()
Revert "Revert "ALSA: usx2y: Fix potential NULL pointer dereference""
Linux 5.10.42
Gulam Mohamed (1):
block: fix a race between del_gendisk and BLKRRPART
Hans de Goede (1):
platform/x86: touchscreen_dmi: Add info for the Chuwi Hi10 Pro (CWI529) tablet
Hoang Le (1):
Revert "net:tipc: Fix a double free in tipc_sk_mcast_rcv"
Hou Pu (1):
nvmet-tcp: fix inline data size comparison in nvmet_tcp_queue_response
Hui Wang (2):
ALSA: hda/realtek: the bass speaker can't output sound on Yoga 9i
ALSA: hda/realtek: Headphone volume is controlled by Front mixer
James Zhu (4):
drm/amdgpu/vcn1: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn2.0: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn2.5: add cancel_delayed_work_sync before power gate drm/amdgpu/jpeg2.0: add cancel_delayed_work_sync before power gate
Jean Delvare (1):
i2c: i801: Don't generate an interrupt on bus reset
Jeremy Szu (4):
ALSA: hda/realtek: fix mute/micmute LEDs for HP 855 G8
ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook G8
ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook Fury 15 G8
ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook Fury 17 G8
Jesse Brandeburg (1):
ixgbe: fix large MTU request from VF
Jian Shen (1):
net: hns3: put off calling register_netdev() until client initialize complete
Jianbo Liu (1):
net/mlx5: Set reformat action when needed for termination rules
Jiaran Zhang (1):
net: hns3: fix incorrect resp_msg issue
Jim Ma (1):
tls splice: check SPLICE_F_NONBLOCK instead of MSG_DONTWAIT
Jingwen Chen (1):
drm/amd/amdgpu: fix refcount leak
Joakim Zhang (1):
net: stmmac: Fix MAC WoL not working if PHY does not support WoL
Johan Hovold (3):
net: hso: fix control-request directions
USB: trancevibrator: fix control-request direction
net: hso: bail out on interrupt URB allocation failure
Johannes Berg (5):
mac80211: drop A-MSDUs on old ciphers
mac80211: add fragment cache to sta_info
mac80211: check defrag PN against current frame
mac80211: prevent attacks on TKIP/WEP as well
mac80211: do not accept/forward invalid EAPOL frames
Jonathan Cameron (5):
iio: adc: ad7768-1: Fix too small buffer passed to iio_push_to_buffers_with_timestamp()
iio: adc: ad7124: Fix missbalanced regulator enable / disable on error.
iio: adc: ad7124: Fix potential overflow due to non sequential channel numbers
iio: adc: ad7923: Fix undersized rx buffer.
iio: adc: ad7192: Avoid disabling a clock that was never enabled.
Josef Bacik (1):
btrfs: do not BUG_ON in link_to_fixup_dir
Julian Wiedmann (1):
net/smc: remove device from smcd_dev_list after failed device_add()
Jussi Maki (1):
bpf: Set mac_len in bpf_skb_change_head
Kai-Heng Feng (1):
platform/x86: hp_accel: Avoid invoking _INI to speed up resume
Kees Cook (1):
proc: Check /proc/$pid/attr/ writes against file opener
Kevin Wang (1):
drm/amdkfd: correct sienna_cichlid SDMA RLC register offset error
Krzysztof Kozlowski (1):
i2c: s3c2410: fix possible NULL pointer deref on read message after write
Lang Yu (1):
drm/amd/amdgpu: fix a potential deadlock in gpu reset
Liu Jian (1):
bpftool: Add sock_release help info for cgroup attach/prog load command
Lu Baolu (1):
iommu/vt-d: Use user privilege for RID2PASID translation
Lucas Stankus (1):
staging: iio: cdc: ad7746: avoid overwrite of num_channels
Magnus Karlsson (1):
samples/bpf: Consider frame size in tx_only of xdpsock sample
Marc Zyngier (1):
KVM: arm64: Prevent mixed-width VM creation
Masahiro Yamada (1):
scripts/clang-tools: switch explicitly to Python 3
Mathias Nyman (2):
thunderbolt: usb4: Fix NVM read buffer bounds and offset issue
thunderbolt: dma_port: Fix NVM read buffer bounds and offset issue
Mathy Vanhoef (4):
mac80211: assure all fragments are encrypted
mac80211: prevent mixed key and fragment cache attacks
mac80211: properly handle A-MSDUs that start with an RFC 1042 header
cfg80211: mitigate A-MSDU aggregation attacks
Matt Wang (1):
scsi: BusLogic: Fix 64-bit system enumeration error for Buslogic
Maximilian Luz (1):
serial: 8250_dw: Add device HID for new AMD UART controller
Michael Chan (1):
bnxt_en: Fix context memory setup for 64K page size.
Michael Ellerman (3):
selftests/gpio: Use TEST_GEN_PROGS_EXTENDED selftests/gpio: Move include of lib.mk up selftests/gpio: Fix build when source tree is read only
Mikulas Patocka (1):
dm snapshot: properly fix a crash when an origin has no snapshots
Neil Armstrong (1):
drm/meson: fix shutdown crash when component not probed
NeilBrown (1):
SUNRPC in case of backlog, hand free slots directly to waiting task
Ondrej Mosnacek (1):
serial: core: fix suspicious security_locked_down() call
Paolo Abeni (4):
mptcp: avoid error message on infinite mapping
mptcp: drop unconditional pr_warn on bad opt
mptcp: fix data stream corruption
net: really orphan skbs tied to closing sk
Pavel Skripkin (1):
net: usb: fix memory leak in smsc75xx_bind
Peter Ujfalusi (1):
ALSA: hda/realtek: Chain in pop reduction fixup for ThinkStation P340
Peter Wang (1):
scsi: ufs: ufs-mediatek: Fix power down spec violation
Peter Zijlstra (1):
openrisc: Define memory barrier mb
Phillip Potter (3):
isdn: mISDNinfineon: check/cleanup ioremap failure correctly in setup_io
isdn: mISDN: correctly handle ph_info allocation failure in hfcsusb_ph_info
dmaengine: qcom_hidma: comment platform_driver_register call
Qii Wang (1):
i2c: mediatek: Disable i2c start_en and clear intr_stat brfore reset
Rafael J. Wysocki (1):
drivers: base: Fix device link removal
Raju Rangoju (1):
cxgb4: avoid accessing registers when clearing filters
Randy Dunlap (2):
MIPS: alchemy: xxs1500: add gpio-au1000.h header file
MIPS: ralink: export rt_sysc_membase for rt2880_wdt.c
Randy Wright (1):
serial: 8250_pci: Add support for new HPE serial device
Richard Fitzgerald (1):
ASoC: cs42l42: Regmap must use_single_read/write
Richard Sanger (1):
net: packetmmap: fix only tx timestamp on request
Rikard Falkeborn (1):
linux/bits.h: fix compilation error with GENMASK
Roi Dayan (2):
net/mlx5e: Fix null deref accessing lag dev
netfilter: flowtable: Remove redundant hw refresh bit
Rolf Eike Beer (1):
iommu/vt-d: Fix sysfs leak in alloc_iommu()
Rui Miguel Silva (1):
iio: gyro: fxas21002c: balance runtime power in error path
Saeed Mahameed (1):
net/mlx5e: reset XPS on error flow if netdev isn't registered yet
Sargun Dhillon (2):
Documentation: seccomp: Fix user notification documentation
seccomp: Refactor notification handler to prepare for new semantics
Sean MacLennan (1):
USB: serial: ti_usb_3410_5052: add startech.com device id
Shyam Sundar S K (1):
platform/x86: hp-wireless: add AMD's hardware id to the supported list
Srinivas Pandruvada (1):
thermal/drivers/intel: Initialize RW trip to THERMAL_TEMP_INVALID
Sriram R (2):
ath10k: Validate first subframe of A-MSDU before processing the list
ath11k: Clear the fragment cache during key install
Stefan Chulski (1):
net: mvpp2: add buffer header handling in RX
Stefan Roese (1):
net: ethernet: mtk_eth_soc: Fix packet statistics support for MT7628/88
Stefano Brivio (1):
netfilter: nft_set_pipapo_avx2: Add irq_fpu_usable() check, fallback to non-AVX2 version
Stephen Boyd (1):
ASoC: qcom: lpass-cpu: Use optional clk APIs
Steve French (1):
SMB3: incorrect file id in requests compounded with open
Subbaraman Narayanamurthy (1):
interconnect: qcom: bcm-voter: add a missing of_node_put()
Taehee Yoo (2):
mld: fix panic in mld_newpack()
sch_dsmark: fix a NULL deref in qdisc_reset()
Tao Liu (1):
openvswitch: meter: fix race when getting now_ms.
Teava Radu (1):
platform/x86: touchscreen_dmi: Add info for the Mediacom Winpad 7.0 W700 tablet
Thadeu Lima de Souza Cascardo (1):
Bluetooth: cmtp: fix file refcount when cmtp_attach_device fails
Thinh Nguyen (1):
usb: dwc3: gadget: Properly track pending and queued SG
Tom Seewald (2):
char: hpet: add checks after calling ioremap
net: liquidio: Add missing null pointer checks
Trond Myklebust (3):
NFS: Fix an Oopsable condition in __nfs_pageio_add_request()
NFS: Don't corrupt the value of pg_bytes_written in nfs_do_recoalesce()
SUNRPC: More fixes for backlog congestion
Vlad Buslov (1):
net: zero-initialize tc skb extension on allocation
Vladimir Oltean (7):
net: dsa: sja1105: update existing VLANs from the bridge VLAN list
net: dsa: sja1105: use 4095 as the private VLAN for untagged traffic
net: dsa: sja1105: error out on unsupported PHY mode
net: dsa: sja1105: add error handling in sja1105_setup()
net: dsa: sja1105: call dsa_unregister_switch when allocating memory fails
net: dsa: sja1105: fix VL lookup command packing for P/Q/R/S
net: dsa: fix error code getting shifted with 4 in dsa_slave_get_sset_count
Vladyslav Tarasiuk (1):
net/mlx4: Fix EEPROM dump support
Wanpeng Li (1):
KVM: X86: Fix vCPU preempted state from guest's point of view
Wen Gong (6):
mac80211: extend protection against mixed key and fragment cache attacks
ath10k: add CCMP PN replay protection for fragmented frames for PCIe
ath10k: drop fragments with multicast DA for PCIe
ath10k: drop fragments with multicast DA for SDIO
ath10k: drop MPDU which has discard flag set by firmware for SDIO
ath10k: Fix TKIP Michael MIC verification for PCIe
Xin Long (2):
tipc: wait and exit until all work queues are done
tipc: skb_linearize the head skb when reassembling msgs
Yinjun Zhang (1):
bpf, offload: Reorder offload callback 'prepare' in verifier
Yoshihiro Shimoda (1):
usb: gadget: udc: renesas_usb3: Fix a race in usb3_start_pipen()
YueHaibing (1):
iio: adc: ad7793: Add missing error code in ad7793_setup()
Yunsheng Lin (4):
net: sched: fix packet stuck problem for lockless qdisc
net: sched: fix tx action rescheduling issue during deactivation
net: sched: fix tx action reschedule issue with stopped queue
net: hns3: check the return of skb_checksum_help()
Zhang Xiaoxu (1):
NFSv4: Fix v4.0/v4.1 SEEK_DATA return -ENOTSUPP when set NFS_V4_2 config
Zhen Lei (1):
net: bnx2: Fix error return code in bnx2_init_board()
Zheyu Ma (1):
serial: rp2: use 'request_firmware' instead of 'request_firmware_nowait'
Zhu Lingshan (1):
Revert "irqbypass: do not start cons/prod when failed connect"
Zolton Jheng (1):
USB: serial: pl2303: add device id for ADLINK ND-6530 GC
Zou Wei (2):
gpio: cadence: Add missing MODULE_DEVICE_TABLE
interconnect: qcom: Add missing MODULE_DEVICE_TABLE
kernel test robot (1):
ALSA: usb-audio: scarlett2: snd_scarlett_gen2_controls_create() can be static
xinhui pan (1):
drm/amdgpu: Fix a use-after-free
zhouchuangao (1):
fs/nfs: Use fatal_signal_pending instead of signal_pending
Greg Kroah-Hartman
maintainerDocumentation/userspace-api/seccomp_filter.rst +8 -8
@@ -250,14 +250,14 @@ Users can read via ``ioctl(SECCOMP_IOCTL_NOTIF_RECV)`` (or ``poll()``) on a seccomp notification fd to receive a ``struct seccomp_notif``, which contains five members: the input length of the structure, a unique-per-filter ``id``, the ``pid`` of the task which triggered this request (which may be 0 if the -task is in a pid ns not visible from the listener's pid namespace), a ``flags`` -member which for now only has ``SECCOMP_NOTIF_FLAG_SIGNALED``, representing -whether or not the notification is a result of a non-fatal signal, and the -``data`` passed to seccomp. Userspace can then make a decision based on this -information about what to do, and ``ioctl(SECCOMP_IOCTL_NOTIF_SEND)`` a -response, indicating what should be returned to userspace. The ``id`` member of -``struct seccomp_notif_resp`` should be the same ``id`` as in ``struct -seccomp_notif``. +task is in a pid ns not visible from the listener's pid namespace). The +notification also contains the ``data`` passed to seccomp, and a filters flag. +The structure should be zeroed out prior to calling the ioctl. + +Userspace can then make a decision based on this information about what to do, +and ``ioctl(SECCOMP_IOCTL_NOTIF_SEND)`` a response, indicating what should be +returned to userspace. The ``id`` member of ``struct seccomp_notif_resp`` should +be the same ``id`` as in ``struct seccomp_notif``. It is worth noting that ``struct seccomp_data`` contains the values of register arguments to the syscall, but does not contain pointers to memory. The task's
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 41 +SUBLEVEL = 42 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/include/asm/kvm_emulate.h +5 -0
@@ -505,4 +505,9 @@ static __always_inline void __kvm_skip_instr(struct kvm_vcpu *vcpu) write_sysreg_el2(*vcpu_pc(vcpu), SYS_ELR); } +static inline bool vcpu_has_feature (struct kvm_vcpu *vcpu,int feature) +{ +return test_bit (feature, vcpu->arch.features); +} +#endif /* __ARM64_KVM_EMULATE_H__ */
arch/arm64/kvm/reset.c +24 -4
@@ -223,6 +223,25 @@ static int kvm_vcpu_enable_ptrauth(struct kvm_vcpu *vcpu)return 0 ; } +static bool vcpu_allowed_register_width (struct kvm_vcpu *vcpu) +{ +struct kvm_vcpu *tmp; +bool is32bit; +int i; + + is32bit =vcpu_has_feature (vcpu,KVM_ARM_VCPU_EL1_32BIT ); +if (!cpus_have_const_cap (ARM64_HAS_32BIT_EL1 ) && is32bit) +return false; + +/* Check that the vcpus are either all 32bit or all 64bit */ +kvm_for_each_vcpu (i, tmp, vcpu->kvm) { +if (vcpu_has_feature (tmp,KVM_ARM_VCPU_EL1_32BIT ) != is32bit) +return false; + } + +return true; +} +/** * kvm_reset_vcpu - sets core registers and sys_regs to reset value * @vcpu: The VCPU pointer
@@ -274,13 +293,14 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) } } +if (!vcpu_allowed_register_width (vcpu)) { + ret = -EINVAL ; + goto out; + } +switch (vcpu->arch.target) {default :if (test_bit (KVM_ARM_VCPU_EL1_32BIT , vcpu->arch.features)) { -if (!cpus_have_const_cap (ARM64_HAS_32BIT_EL1 )) { - ret = -EINVAL ; - goto out; - } pstate =VCPU_RESET_PSTATE_SVC ; }else { pstate =VCPU_RESET_PSTATE_EL1 ;
arch/mips/alchemy/board-xxs1500.c +1 -0
@@ -18,6 +18,7 @@#include <asm/reboot.h> #include <asm/setup.h> #include <asm/mach-au1x00/au1000.h> +#include <asm/mach-au1x00/gpio-au1000.h> #include <prom.h> const char *get_system_type (void )
arch/mips/ralink/of.c +2 -0
@@ -8,6 +8,7 @@#include <linux/io.h> #include <linux/clk.h> +#include <linux/export.h> #include <linux/init.h> #include <linux/sizes.h> #include <linux/of_fdt.h>
@@ -25,6 +26,7 @@__iomem void *rt_sysc_membase;__iomem void *rt_memc_membase; +EXPORT_SYMBOL_GPL (rt_sysc_membase);__iomem void *plat_of_remap_node (const char *node) {
arch/openrisc/include/asm/barrier.h new file +9 -0
@@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __ASM_BARRIER_H +#define __ASM_BARRIER_H + +#define mb () asm volatile ("l.msync" ::: "memory") + +#include <asm-generic/barrier.h> + +#endif /* __ASM_BARRIER_H */
arch/x86/kvm/x86.c +2 -0
@@ -3006,6 +3006,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) st->preempted & KVM_VCPU_FLUSH_TLB);if (xchg (&st->preempted,0 ) &KVM_VCPU_FLUSH_TLB )kvm_vcpu_flush_tlb_guest (vcpu); + }else { + st->preempted =0 ; } vcpu->arch.st.preempted =0 ;
drivers/acpi/acpi_apd.c +1 -0
@@ -226,6 +226,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = { { "AMDI0010", APD_ADDR(wt_i2c_desc) }, { "AMD0020", APD_ADDR(cz_uart_desc) }, { "AMDI0020", APD_ADDR(cz_uart_desc) }, + { "AMDI0022", APD_ADDR(cz_uart_desc) }, { "AMD0030", }, { "AMD0040", APD_ADDR(fch_misc_desc)}, { "HYGO0010", APD_ADDR(wt_i2c_desc) },
drivers/base/core.c +23 -14
@@ -83,6 +83,11 @@ int device_links_read_lock_held(void) {return srcu_read_lock_held (&device_links_srcu); } + +static void device_link_synchronize_removal (void ) +{ +synchronize_srcu (&device_links_srcu); +}#else /* !CONFIG_SRCU */ static DECLARE_RWSEM (device_links_lock);
@@ -113,6 +118,10 @@ int device_links_read_lock_held(void)return lockdep_is_held (&device_links_lock); }#endif + +static inline void device_link_synchronize_removal (void ) +{ +}#endif /* !CONFIG_SRCU */ static bool device_is_ancestor (struct device *dev,struct device *target)
@@ -332,8 +341,13 @@ static struct attribute *devlink_attrs[] = { };ATTRIBUTE_GROUPS (devlink); -static void device_link_free (struct device_link *link) +static void device_link_release_fn (struct work_struct *work) { + struct device_link *link = container_of(work, struct device_link, rm_work); + +/* Ensure that all references to the link object have been dropped. */ +device_link_synchronize_removal (); +while (refcount_dec_not_one (&link->rpm_active))pm_runtime_put (link->supplier);
@@ -342,24 +356,19 @@ static void device_link_free(struct device_link *link)kfree (link); } -#ifdef CONFIG_SRCU -static void __device_link_free_srcu (struct rcu_head *rhead) -{ -device_link_free (container_of(rhead ,struct device_link ,rcu_head )); -} -static void devlink_dev_release (struct device *dev) {struct device_link *link =to_devlink (dev); -call_srcu (&device_links_srcu, &link->rcu_head, __device_link_free_srcu); -} -#else -static void devlink_dev_release (struct device *dev) -{ -device_link_free (to_devlink (dev)); +INIT_WORK (&link->rm_work, device_link_release_fn); +/* +* It may take a while to complete this work because of the SRCU +* synchronization in device_link_release_fn() and if the consumer or +* supplier devices get deleted when it runs, so put it into the "long" +* workqueue. +*/ +queue_work (system_long_wq, &link->rm_work); } -#endif static struct class devlink_class = { .name ="devlink" ,
drivers/char/hpet.c +2 -0
@@ -984,6 +984,8 @@ static acpi_status hpet_resources(struct acpi_resource *res, void *data) hdp->hd_phys_address = fixmem32->address; hdp->hd_address =ioremap (fixmem32->address,HPET_RANGE_SIZE ); +if (!hdp->hd_address) +return AE_ERROR ;if (hpet_is_known (hdp)) {iounmap (hdp->hd_address);
drivers/crypto/cavium/nitrox/nitrox_main.c +0 -1
@@ -451,7 +451,6 @@ static int nitrox_probe(struct pci_dev *pdev, err =pci_request_mem_regions (pdev, nitrox_driver_name);if (err) {pci_disable_device (pdev); -dev_err (&pdev->dev,"Failed to request mem regions!\n" );return err; }pci_set_master (pdev);
drivers/dma/qcom/hidma_mgmt.c +16 -1
@@ -418,8 +418,23 @@ static int __init hidma_mgmt_init(void) hidma_mgmt_of_populate_channels(child); }#endif -return platform_driver_register (&hidma_mgmt_driver); +/* +* We do not check for return value here, as it is assumed that +* platform_driver_register must not fail. The reason for this is that +* the (potential) hidma_mgmt_of_populate_channels calls above are not +* cleaned up if it does fail, and to do this work is quite +* complicated. In particular, various calls of of_address_to_resource, +* of_irq_to_resource, platform_device_register_full, of_dma_configure, +* and of_msi_configure which then call other functions and so on, must +* be cleaned up - this is not a trivial exercise. +* +* Currently, this module is not intended to be unloaded, and there is +* no module_exit function defined which does the needed cleanup. For +* this reason, we have to assume success here. +*/ +platform_driver_register (&hidma_mgmt_driver); +return 0 ; }module_init (hidma_mgmt_init);MODULE_LICENSE ("GPL v2" );
drivers/gpio/gpio-cadence.c +1 -0
@@ -278,6 +278,7 @@ static const struct of_device_id cdns_of_ids[] = { { .compatible = "cdns,gpio-r1p02" }, { /* sentinel */ }, }; +MODULE_DEVICE_TABLE (of, cdns_of_ids);static struct platform_driver cdns_gpio_driver = { .driver = {
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.c +6 -6
@@ -157,16 +157,16 @@ static uint32_t get_sdma_rlc_reg_offset(struct amdgpu_device *adev, mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;break ;case 1 : - sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA1 ,0 , + sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA0 ,0 , mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;break ;case 2 : - sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA2 ,0 , - mmSDMA2_RLC0_RB_CNTL) - mmSDMA2_RLC0_RB_CNTL; + sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA0 ,0 , + mmSDMA2_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;break ;case 3 : - sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA3 ,0 , - mmSDMA3_RLC0_RB_CNTL) - mmSDMA2_RLC0_RB_CNTL; + sdma_engine_reg_base =SOC15_REG_OFFSET (SDMA0 ,0 , + mmSDMA3_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;break ; }
@@ -451,7 +451,7 @@ static int hqd_sdma_dump_v10_3(struct kgd_dev *kgd, engine_id, queue_id);uint32_t i =0 , reg;#undef HQD_N_REGS -#define HQD_N_REGS (19+6+7+10) +#define HQD_N_REGS (19+6+7+12) *dump =kmalloc (HQD_N_REGS *2 *sizeof (uint32_t ),GFP_KERNEL );if (*dump ==NULL )
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +0 -1
@@ -4368,7 +4368,6 @@ static int amdgpu_do_asic_reset(struct amdgpu_hive_info *hive, r =amdgpu_ib_ring_tests (tmp_adev);if (r) {dev_err (tmp_adev->dev,"ib ring test failed (%d).\n" , r); - r =amdgpu_device_ip_suspend (tmp_adev); need_full_reset = true; r = -EAGAIN ; goto end;
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +3 -0
@@ -289,10 +289,13 @@ static int amdgpufb_create(struct drm_fb_helper *helper,static int amdgpu_fbdev_destroy (struct drm_device *dev,struct amdgpu_fbdev *rfbdev) {struct amdgpu_framebuffer *rfb = &rfbdev->rfb; +int i;drm_fb_helper_unregister_fbi (&rfbdev->helper);if (rfb->base.obj[0 ]) { +for (i =0 ; i < rfb->base.format->num_planes; i++) +drm_gem_object_put (rfb->base.obj[0 ]);amdgpufb_destroy_pinned_object (rfb->base.obj[0 ]); rfb->base.obj[0 ] =NULL ;drm_framebuffer_unregister_private (&rfb->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -0
@@ -1381,6 +1381,7 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_bo_device *bdev, struct ttm_tt *if (gtt && gtt->userptr) {amdgpu_ttm_tt_set_user_pages (ttm,NULL );kfree (ttm->sg); + ttm->sg =NULL ; ttm->page_flags &= ~TTM_PAGE_FLAG_SG ;return ; }
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -0
@@ -172,6 +172,8 @@ static int jpeg_v2_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_delayed_work_sync (&adev->vcn.idle_work); +if (adev->jpeg.cur_state !=AMD_PG_STATE_GATE &&RREG32_SOC15 (JPEG ,0 , mmUVD_JRBC_STATUS))jpeg_v2_0_set_powergating_state (adev,AMD_PG_STATE_GATE );
drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c +0 -2
@@ -198,8 +198,6 @@ static int jpeg_v2_5_hw_fini(void *handle)if (adev->jpeg.cur_state !=AMD_PG_STATE_GATE &&RREG32_SOC15 (JPEG , i, mmUVD_JRBC_STATUS))jpeg_v2_5_set_powergating_state (adev,AMD_PG_STATE_GATE ); - - ring->sched.ready = false; }return 0 ;
drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c +0 -2
@@ -166,8 +166,6 @@ static int jpeg_v3_0_hw_fini(void *handle) RREG32_SOC15(JPEG, 0, mmUVD_JRBC_STATUS))jpeg_v3_0_set_powergating_state (adev,AMD_PG_STATE_GATE ); - ring->sched.ready = false; -return 0 ; }
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +0 -5
@@ -476,11 +476,6 @@ static void sdma_v5_2_gfx_stop(struct amdgpu_device *adev) ib_cntl =REG_SET_FIELD (ib_cntl,SDMA0_GFX_IB_CNTL ,IB_ENABLE ,0 );WREG32 (sdma_v5_2_get_reg_offset (adev, i, mmSDMA0_GFX_IB_CNTL), ib_cntl); } - - sdma0->sched.ready = false; - sdma1->sched.ready = false; - sdma2->sched.ready = false; - sdma3->sched.ready = false; }/**
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +5 -1
@@ -232,9 +232,13 @@ static int vcn_v1_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_delayed_work_sync (&adev->vcn.idle_work); +if ((adev->pg_flags &AMD_PG_SUPPORT_VCN_DPG ) || -RREG32_SOC15 (VCN ,0 , mmUVD_STATUS)) + (adev->vcn.cur_state !=AMD_PG_STATE_GATE && +RREG32_SOC15 (VCN ,0 , mmUVD_STATUS))) {vcn_v1_0_set_powergating_state (adev,AMD_PG_STATE_GATE ); + }return 0 ; }
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c +2 -0
@@ -262,6 +262,8 @@ static int vcn_v2_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_delayed_work_sync (&adev->vcn.idle_work); +if ((adev->pg_flags &AMD_PG_SUPPORT_VCN_DPG ) || (adev->vcn.cur_state !=AMD_PG_STATE_GATE &&RREG32_SOC15 (VCN ,0 , mmUVD_STATUS)))
drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c +2 -0
@@ -321,6 +321,8 @@ static int vcn_v2_5_hw_fini(void *handle)struct amdgpu_device *adev = (struct amdgpu_device *)handle;int i; +cancel_delayed_work_sync (&adev->vcn.idle_work); +for (i =0 ; i < adev->vcn.num_vcn_inst; ++i) {if (adev->vcn.harvest_config & (1 << i))continue ;
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +1 -7
@@ -346,7 +346,7 @@ static int vcn_v3_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle;struct amdgpu_ring *ring; -int i, j; +int i;for (i =0 ; i < adev->vcn.num_vcn_inst; ++i) {if (adev->vcn.harvest_config & (1 << i))
@@ -361,12 +361,6 @@ static int vcn_v3_0_hw_fini(void *handle)vcn_v3_0_set_powergating_state (adev,AMD_PG_STATE_GATE ); } } - ring->sched.ready = false; - -for (j =0 ; j < adev->vcn.num_enc_rings; ++j) { - ring = &adev->vcn.inst[i].ring_enc[j]; - ring->sched.ready = false; - } }return 0 ;
drivers/gpu/drm/amd/display/dc/core/dc_link.c +18 -0
@@ -1049,6 +1049,24 @@ static bool dc_link_detect_helper(struct dc_link *link, dc_is_dvi_signal(link->connector_signal)) {if (prev_sink)dc_sink_release (prev_sink); +link_disconnect_sink (link); + +return false; + } +/* +* Abort detection for DP connectors if we have +* no EDID and connector is active converter +* as there are no display downstream +* +*/ +if (dc_is_dp_sst_signal (link->connector_signal) && + (link->dpcd_caps.dongle_type == +DISPLAY_DONGLE_DP_VGA_CONVERTER || + link->dpcd_caps.dongle_type == +DISPLAY_DONGLE_DP_DVI_CONVERTER )) { +if (prev_sink) +dc_sink_release (prev_sink); +link_disconnect_sink (link);return false; }
drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c +9 -0
@@ -2606,6 +2606,8 @@ static ssize_t navi10_get_gpu_metrics(struct smu_context *smu,static int navi10_enable_mgpu_fan_boost (struct smu_context *smu) { +struct smu_table_context *table_context = &smu->smu_table; +PPTable_t *smc_pptable = table_context->driver_pptable;struct amdgpu_device *adev = smu->adev;uint32_t param =0 ;
@@ -2613,6 +2615,13 @@ static int navi10_enable_mgpu_fan_boost(struct smu_context *smu)if (adev->asic_type ==CHIP_NAVI12 )return 0 ; +/* +* Skip the MGpuFanBoost setting for those ASICs +* which do not support it +*/ +if (!smc_pptable->MGpuFanBoostLimitRpm) +return 0 ; +/* Workaround for WS SKU */ if (adev->pdev->device ==0x7312 && adev->pdev->revision ==0 )
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +10 -0
@@ -2715,6 +2715,16 @@ static ssize_t sienna_cichlid_get_gpu_metrics(struct smu_context *smu,static int sienna_cichlid_enable_mgpu_fan_boost (struct smu_context *smu) { +struct smu_table_context *table_context = &smu->smu_table; +PPTable_t *smc_pptable = table_context->driver_pptable; + +/* +* Skip the MGpuFanBoost setting for those ASICs +* which do not support it +*/ +if (!smc_pptable->MGpuFanBoostLimitRpm) +return 0 ; + return smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetMGpuFanBoostLimitRpm, 0,
drivers/gpu/drm/i915/display/intel_dp.c +1 -1
@@ -4136,7 +4136,7 @@ static void chv_dp_post_pll_disable(struct intel_atomic_state *state,* link status information */ bool -intel_dp_get_link_status (struct intel_dp *intel_dp,u8 link_status[DP_LINK_STATUS_SIZE ]) +intel_dp_get_link_status (struct intel_dp *intel_dp,u8 *link_status) {return drm_dp_dpcd_read (&intel_dp->aux,DP_LANE0_1_STATUS , link_status,DP_LINK_STATUS_SIZE ) ==DP_LINK_STATUS_SIZE ;
drivers/gpu/drm/meson/meson_drv.c +5 -4
@@ -485,11 +485,12 @@ static int meson_probe_remote(struct platform_device *pdev,static void meson_drv_shutdown (struct platform_device *pdev) {struct meson_drm *priv =dev_get_drvdata (&pdev->dev); -struct drm_device *drm = priv->drm; -DRM_DEBUG_DRIVER ("\n" ); -drm_kms_helper_poll_fini (drm); -drm_atomic_helper_shutdown (drm); +if (!priv) +return ; + +drm_kms_helper_poll_fini (priv->drm); +drm_atomic_helper_shutdown (priv->drm); }static int meson_drv_probe (struct platform_device *pdev)
drivers/i2c/busses/i2c-i801.c +2 -4
@@ -391,11 +391,9 @@ static int i801_check_post(struct i801_priv *priv, int status)dev_err (&priv->pci_dev->dev,"Transaction timeout\n" );/* try to stop the current command */ dev_dbg (&priv->pci_dev->dev,"Terminating the current operation\n" ); -outb_p (inb_p (SMBHSTCNT (priv)) |SMBHSTCNT_KILL , -SMBHSTCNT (priv)); +outb_p (SMBHSTCNT_KILL ,SMBHSTCNT (priv));usleep_range (1000 ,2000 ); -outb_p (inb_p (SMBHSTCNT (priv)) & (~SMBHSTCNT_KILL ), -SMBHSTCNT (priv)); +outb_p (0 ,SMBHSTCNT (priv));/* Check if it worked */ status =inb_p (SMBHSTSTS (priv));
drivers/i2c/busses/i2c-mt65xx.c +5 -0
@@ -478,6 +478,11 @@ static void mtk_i2c_clock_disable(struct mtk_i2c *i2c)static void mtk_i2c_init_hw (struct mtk_i2c *i2c) {u16 control_reg; +u16 intr_stat_reg; + +mtk_i2c_writew (i2c,I2C_CHN_CLR_FLAG ,OFFSET_START ); + intr_stat_reg =mtk_i2c_readw (i2c,OFFSET_INTR_STAT ); +mtk_i2c_writew (i2c, intr_stat_reg,OFFSET_INTR_STAT );if (i2c->dev_comp->apdma_sync) {writel (I2C_DMA_WARM_RST , i2c->pdmabase +OFFSET_RST );
drivers/i2c/busses/i2c-s3c2410.c +3 -0
@@ -483,7 +483,10 @@ static int i2c_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)* forces us to send a new START * when we change direction */ +dev_dbg (i2c->dev, +"missing START before write->read\n" );s3c24xx_i2c_stop (i2c, -EINVAL ); +break ; } goto retry_write;
drivers/i2c/busses/i2c-sh_mobile.c +1 -1
@@ -807,7 +807,7 @@ static const struct sh_mobile_dt_config r8a7740_dt_config = {static const struct of_device_id sh_mobile_i2c_dt_ids[] = { { .compatible ="renesas,iic-r8a73a4" , .data = &fast_clock_dt_config }, { .compatible ="renesas,iic-r8a7740" , .data = &r8a7740_dt_config }, - { .compatible ="renesas,iic-r8a774c0" , .data = &fast_clock_dt_config }, + { .compatible ="renesas,iic-r8a774c0" , .data = &v2_freq_calc_dt_config }, { .compatible ="renesas,iic-r8a7790" , .data = &v2_freq_calc_dt_config }, { .compatible ="renesas,iic-r8a7791" , .data = &v2_freq_calc_dt_config }, { .compatible ="renesas,iic-r8a7792" , .data = &v2_freq_calc_dt_config },
drivers/iio/adc/ad7124.c +20 -16
@@ -616,6 +616,13 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,if (ret) goto err; +if (channel >= indio_dev->num_channels) { +dev_err (indio_dev->dev.parent, +"Channel index >= number of channels\n" ); + ret = -EINVAL ; + goto err; + } + ret =of_property_read_u32_array (child,"diff-channels" , ain,2 );if (ret)
@@ -707,6 +714,11 @@ static int ad7124_setup(struct ad7124_state *st)return ret; } +static void ad7124_reg_disable (void *r) +{ +regulator_disable (r); +} +static int ad7124_probe (struct spi_device *spi) {const struct ad7124_chip_info *info;
@@ -752,17 +764,20 @@ static int ad7124_probe(struct spi_device *spi) ret =regulator_enable (st->vref[i]);if (ret)return ret; + + ret =devm_add_action_or_reset (&spi->dev, ad7124_reg_disable, + st->vref[i]); +if (ret) +return ret; } st->mclk =devm_clk_get (&spi->dev,"mclk" ); -if (IS_ERR (st->mclk)) { - ret =PTR_ERR (st->mclk); - goto error_regulator_disable; - } +if (IS_ERR (st->mclk)) +return PTR_ERR (st->mclk); ret =clk_prepare_enable (st->mclk);if (ret <0 ) - goto error_regulator_disable; +return ret; ret =ad7124_soft_reset (st);if (ret <0 )
@@ -792,11 +807,6 @@ static int ad7124_probe(struct spi_device *spi)ad_sd_cleanup_buffer_and_trigger (indio_dev); error_clk_disable_unprepare:clk_disable_unprepare (st->mclk); -error_regulator_disable: -for (i =ARRAY_SIZE (st->vref) -1 ; i >=0 ; i--) { -if (!IS_ERR_OR_NULL (st->vref[i])) -regulator_disable (st->vref[i]); - }return ret; }
@@ -805,17 +815,11 @@ static int ad7124_remove(struct spi_device *spi) {struct iio_dev *indio_dev =spi_get_drvdata (spi);struct ad7124_state *st =iio_priv (indio_dev); -int i;iio_device_unregister (indio_dev);ad_sd_cleanup_buffer_and_trigger (indio_dev);clk_disable_unprepare (st->mclk); -for (i =ARRAY_SIZE (st->vref) -1 ; i >=0 ; i--) { -if (!IS_ERR_OR_NULL (st->vref[i])) -regulator_disable (st->vref[i]); - } -return 0 ; }
drivers/iio/adc/ad7192.c +10 -9
@@ -912,7 +912,7 @@ static int ad7192_probe(struct spi_device *spi) {struct ad7192_state *st;struct iio_dev *indio_dev; -int ret, voltage_uv =0 ; +int ret;if (!spi->irq) {dev_err (&spi->dev,"no IRQ?\n" );
@@ -949,15 +949,12 @@ static int ad7192_probe(struct spi_device *spi) goto error_disable_avdd; } - voltage_uv =regulator_get_voltage (st->avdd); - -if (voltage_uv >0 ) { - st->int_vref_mv = voltage_uv /1000 ; - }else { - ret = voltage_uv; + ret =regulator_get_voltage (st->avdd); +if (ret <0 ) {dev_err (&spi->dev,"Device tree error, reference voltage undefined\n" ); goto error_disable_avdd; } + st->int_vref_mv = ret /1000 ;spi_set_drvdata (spi, indio_dev); st->chip_info =of_device_get_match_data (&spi->dev);
@@ -1014,7 +1011,9 @@ static int ad7192_probe(struct spi_device *spi)return 0 ; error_disable_clk: -clk_disable_unprepare (st->mclk); +if (st->clock_sel ==AD7192_CLK_EXT_MCLK1_2 || + st->clock_sel ==AD7192_CLK_EXT_MCLK2 ) +clk_disable_unprepare (st->mclk); error_remove_trigger:ad_sd_cleanup_buffer_and_trigger (indio_dev); error_disable_dvdd:
@@ -1031,7 +1030,9 @@ static int ad7192_remove(struct spi_device *spi)struct ad7192_state *st =iio_priv (indio_dev);iio_device_unregister (indio_dev); -clk_disable_unprepare (st->mclk); +if (st->clock_sel ==AD7192_CLK_EXT_MCLK1_2 || + st->clock_sel ==AD7192_CLK_EXT_MCLK2 ) +clk_disable_unprepare (st->mclk);ad_sd_cleanup_buffer_and_trigger (indio_dev);regulator_disable (st->dvdd);
drivers/iio/adc/ad7768-1.c +6 -2
@@ -166,6 +166,10 @@ struct ad7768_state {* transfer buffers to live in their own cache lines. */ union { +struct { +__be32 chan; +s64 timestamp; + } scan;__be32 d32;u8 d8[2 ]; } data____cacheline_aligned ;
@@ -459,11 +463,11 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)mutex_lock (&st->lock); - ret =spi_read (st->spi, &st->data.d32,3 ); + ret =spi_read (st->spi, &st->data.scan.chan,3 );if (ret <0 ) goto err_unlock; -iio_push_to_buffers_with_timestamp (indio_dev, &st->data.d32, +iio_push_to_buffers_with_timestamp (indio_dev, &st->data.scan,iio_get_time_ns (indio_dev));iio_trigger_notify_done (indio_dev->trig);
drivers/iio/adc/ad7793.c +1 -0
@@ -279,6 +279,7 @@ static int ad7793_setup(struct iio_dev *indio_dev, id &=AD7793_ID_MASK ;if (id != st->chip_info->id) { + ret = -ENODEV ;dev_err (&st->sd.spi->dev,"device ID query failed\n" ); goto out; }
drivers/iio/adc/ad7923.c +3 -1
@@ -59,8 +59,10 @@ struct ad7923_state {/* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache lines. +* Ensure rx_buf can be directly used in iio_push_to_buffers_with_timetamp +* Length = 8 channels + 4 extra for 8 byte timestamp */ -__be16 rx_buf[4 ]____cacheline_aligned ; +__be16 rx_buf[12 ]____cacheline_aligned ;__be16 tx_buf[4 ]; };
drivers/iio/dac/ad5770r.c +11 -5
@@ -524,23 +524,29 @@ static int ad5770r_channel_config(struct ad5770r_state *st)device_for_each_child_node (&st->spi->dev, child) { ret =fwnode_property_read_u32 (child,"num" , &num);if (ret) -return ret; -if (num >=AD5770R_MAX_CHANNELS ) -return -EINVAL ; + goto err_child_out; +if (num >=AD5770R_MAX_CHANNELS ) { + ret = -EINVAL ; + goto err_child_out; + } ret =fwnode_property_read_u32_array (child,"adi,range-microamp" , tmp,2 );if (ret) -return ret; + goto err_child_out; min = tmp[0 ] /1000 ; max = tmp[1 ] /1000 ; ret =ad5770r_store_output_range (st, min, max, num);if (ret) -return ret; + goto err_child_out; } +return 0 ; + +err_child_out: +fwnode_handle_put (child);return ret; }
drivers/iio/gyro/fxas21002c_core.c +2 -0
@@ -399,6 +399,7 @@ static int fxas21002c_temp_get(struct fxas21002c_data *data, int *val) ret =regmap_field_read (data->regmap_fields[F_TEMP ], &temp);if (ret <0 ) {dev_err (dev,"failed to read temp: %d\n" , ret); +fxas21002c_pm_put (data); goto data_unlock; }
@@ -432,6 +433,7 @@ static int fxas21002c_axis_get(struct fxas21002c_data *data, &axis_be, sizeof(axis_be));if (ret <0 ) {dev_err (dev,"failed to read axis: %d: %d\n" , index, ret); +fxas21002c_pm_put (data); goto data_unlock; }
drivers/interconnect/qcom/bcm-voter.c +3 -1
@@ -1,6 +1,6 @@// SPDX-License-Identifier: GPL-2.0 /* -* Copyright (c) 2020, The Linux Foundation. All rights reserved. +* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. */ #include <asm/div64.h>
@@ -212,6 +212,7 @@ struct bcm_voter *of_bcm_voter_get(struct device *dev, const char *name) }mutex_unlock (&bcm_voter_lock); +of_node_put (node);return voter; }EXPORT_SYMBOL_GPL (of_bcm_voter_get);
@@ -369,6 +370,7 @@ static const struct of_device_id bcm_voter_of_match[] = { { .compatible = "qcom,bcm-voter" }, { } }; +MODULE_DEVICE_TABLE (of, bcm_voter_of_match);static struct platform_driver qcom_icc_bcm_voter_driver = { .probe = qcom_icc_bcm_voter_probe,
drivers/iommu/intel/dmar.c +3 -1
@@ -1137,7 +1137,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd) err =iommu_device_register (&iommu->iommu);if (err) - goto err_unmap; + goto err_sysfs; } drhd->iommu = iommu;
@@ -1145,6 +1145,8 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)return 0 ; +err_sysfs: +iommu_device_sysfs_remove (&iommu->iommu); err_unmap:unmap_iommu (iommu); error_free_seq_id:
drivers/iommu/intel/iommu.c +5 -2
@@ -2606,9 +2606,9 @@ static int domain_setup_first_level(struct intel_iommu *iommu, struct device *dev, u32 pasid) { - int flags = PASID_FLAG_SUPERVISOR_MODE;struct dma_pte *pgd = domain->pgd;int agaw, level; +int flags =0 ;/* * Skip top levels of page tables for iommu which has
@@ -2624,7 +2624,10 @@ static int domain_setup_first_level(struct intel_iommu *iommu,if (level !=4 && level !=5 )return -EINVAL ; - flags |= (level ==5 ) ?PASID_FLAG_FL5LP :0 ; +if (pasid !=PASID_RID2PASID ) + flags |=PASID_FLAG_SUPERVISOR_MODE ; +if (level ==5 ) + flags |=PASID_FLAG_FL5LP ;if (domain->domain.type ==IOMMU_DOMAIN_UNMANAGED ) flags |=PASID_FLAG_PAGE_SNOOP ;
drivers/iommu/intel/pasid.c +2 -1
@@ -677,7 +677,8 @@ int intel_pasid_setup_second_level(struct intel_iommu *iommu,* Since it is a second level only translation setup, we should * set SRE bit as well (addresses are expected to be GPAs). */ -pasid_set_sre (pte); +if (pasid !=PASID_RID2PASID ) +pasid_set_sre (pte);pasid_set_present (pte);pasid_flush_caches (iommu, pte, pasid, did);
drivers/iommu/virtio-iommu.c +1 -0
@@ -1138,6 +1138,7 @@ static struct virtio_device_id id_table[] = { { VIRTIO_ID_IOMMU, VIRTIO_DEV_ANY_ID }, { 0 }, }; +MODULE_DEVICE_TABLE (virtio, id_table);static struct virtio_driver virtio_iommu_drv = { .driver.name = KBUILD_MODNAME,
drivers/isdn/hardware/mISDN/hfcsusb.c +8 -9
@@ -46,7 +46,7 @@ static void hfcsusb_start_endpoint(struct hfcsusb *hw, int channel);static void hfcsusb_stop_endpoint (struct hfcsusb *hw,int channel);static int hfcsusb_setup_bch (struct bchannel *bch,int protocol);static void deactivate_bchannel (struct bchannel *bch); -static void hfcsusb_ph_info (struct hfcsusb *hw); +static int hfcsusb_ph_info (struct hfcsusb *hw);/* start next background transfer for control channel */ static void
@@ -241,7 +241,7 @@ hfcusb_l2l1B(struct mISDNchannel *ch, struct sk_buff *skb)* send full D/B channel status information * as MPH_INFORMATION_IND */ -static void +static int hfcsusb_ph_info (struct hfcsusb *hw) {struct ph_info *phi;
@@ -250,7 +250,7 @@ hfcsusb_ph_info(struct hfcsusb *hw) phi =kzalloc (struct_size (phi, bch, dch->dev.nrbchan),GFP_ATOMIC );if (!phi) -return ; +return -ENOMEM ; phi->dch.ch.protocol = hw->protocol; phi->dch.ch.Flags = dch->Flags;
@@ -263,6 +263,8 @@ hfcsusb_ph_info(struct hfcsusb *hw)_queue_data (&dch->dev.D,MPH_INFORMATION_IND ,MISDN_ID_ANY ,struct_size (phi, bch, dch->dev.nrbchan), phi,GFP_ATOMIC );kfree (phi); + +return 0 ; }/*
@@ -347,8 +349,7 @@ hfcusb_l2l1D(struct mISDNchannel *ch, struct sk_buff *skb) ret =l1_event (dch->l1, hh->prim);break ;case MPH_INFORMATION_REQ : -hfcsusb_ph_info (hw); - ret =0 ; + ret =hfcsusb_ph_info (hw);break ; }
@@ -403,8 +404,7 @@ hfc_l1callback(struct dchannel *dch, u_int cmd) hw->name, __func__, cmd);return -1 ; } -hfcsusb_ph_info (hw); -return 0 ; +return hfcsusb_ph_info (hw); } static int
@@ -746,8 +746,7 @@ hfcsusb_setup_bch(struct bchannel *bch, int protocol)handle_led (hw, (bch->nr ==1 ) ?LED_B1_OFF :LED_B2_OFF ); } -hfcsusb_ph_info (hw); -return 0 ; +return hfcsusb_ph_info (hw); } static void
drivers/isdn/hardware/mISDN/mISDNinfineon.c +13 -8
@@ -630,17 +630,19 @@ static void release_io(struct inf_hw *hw) {if (hw->cfg.mode) { -if (hw->cfg.p) { +if (hw->cfg.mode ==AM_MEMIO ) {release_mem_region (hw->cfg.start, hw->cfg.size); -iounmap (hw->cfg.p); +if (hw->cfg.p) +iounmap (hw->cfg.p); }else release_region (hw->cfg.start, hw->cfg.size); hw->cfg.mode =AM_NONE ; }if (hw->addr.mode) { -if (hw->addr.p) { +if (hw->addr.mode ==AM_MEMIO ) {release_mem_region (hw->addr.start, hw->addr.size); -iounmap (hw->addr.p); +if (hw->addr.p) +iounmap (hw->addr.p); }else release_region (hw->addr.start, hw->addr.size); hw->addr.mode =AM_NONE ;
@@ -670,9 +672,12 @@ setup_io(struct inf_hw *hw) (ulong)hw->cfg.start, (ulong)hw->cfg.size);return err; } -if (hw->ci->cfg_mode ==AM_MEMIO ) - hw->cfg.p =ioremap (hw->cfg.start, hw->cfg.size); hw->cfg.mode = hw->ci->cfg_mode; +if (hw->ci->cfg_mode ==AM_MEMIO ) { + hw->cfg.p =ioremap (hw->cfg.start, hw->cfg.size); +if (!hw->cfg.p) +return -ENOMEM ; + }if (debug &DEBUG_HW ) pr_notice("%s: IO cfg %lx (%lu bytes) mode%d\n", hw->name, (ulong)hw->cfg.start,
@@ -697,12 +702,12 @@ setup_io(struct inf_hw *hw) (ulong)hw->addr.start, (ulong)hw->addr.size);return err; } + hw->addr.mode = hw->ci->addr_mode;if (hw->ci->addr_mode ==AM_MEMIO ) { hw->addr.p =ioremap (hw->addr.start, hw->addr.size); -if (unlikely (!hw->addr.p)) +if (!hw->addr.p)return -ENOMEM ; } - hw->addr.mode = hw->ci->addr_mode;if (debug &DEBUG_HW ) pr_notice("%s: IO addr %lx (%lu bytes) mode%d\n", hw->name, (ulong)hw->addr.start,
drivers/md/dm-snap.c +1 -1
@@ -854,7 +854,7 @@ static int dm_add_exception(void *context, chunk_t old, chunk_t new)static uint32_t __minimum_chunk_size (struct origin *o) {struct dm_snapshot *snap; -unsigned chunk_size =0 ; +unsigned chunk_size =rounddown_pow_of_two (UINT_MAX );if (o)list_for_each_entry (snap, &o->snapshots, list)
drivers/media/dvb-frontends/sp8870.c +1 -1
@@ -281,7 +281,7 @@ static int sp8870_set_frontend_parameters(struct dvb_frontend *fe)// read status reg in order to clear pending irqs err =sp8870_readreg (state,0x200 ); -if (err) +if (err <0 )return err;// system controller start
drivers/media/usb/gspca/cpia1.c +1 -5
@@ -1424,7 +1424,6 @@ static int sd_config(struct gspca_dev *gspca_dev, {struct sd *sd = (struct sd *) gspca_dev;struct cam *cam; -int ret; sd->mainsFreq =FREQ_DEF ==V4L2_CID_POWER_LINE_FREQUENCY_60HZ ;reset_camera_params (gspca_dev);
@@ -1436,10 +1435,7 @@ static int sd_config(struct gspca_dev *gspca_dev, cam->cam_mode = mode; cam->nmodes =ARRAY_SIZE (mode); - ret =goto_low_power (gspca_dev); -if (ret) -gspca_err (gspca_dev,"Cannot go to low power mode: %d\n" , - ret); +goto_low_power (gspca_dev);/* Check the firmware version. */ sd->params.version.firmwareVersion =0 ;get_version_information (gspca_dev);
drivers/media/usb/gspca/m5602/m5602_mt9m111.c +8 -8
@@ -195,7 +195,7 @@ static const struct v4l2_ctrl_config mt9m111_greenbal_cfg = {int mt9m111_probe (struct sd *sd) {u8 data[2 ] = {0x00 ,0x00 }; -int i, rc =0 ; +int i, err;struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;if (force_sensor) {
@@ -213,18 +213,18 @@ int mt9m111_probe(struct sd *sd)/* Do the preinit */ for (i =0 ; i <ARRAY_SIZE (preinit_mt9m111); i++) {if (preinit_mt9m111[i][0 ] ==BRIDGE ) { - rc |=m5602_write_bridge (sd, - preinit_mt9m111[i][1 ], - preinit_mt9m111[i][2 ]); + err =m5602_write_bridge (sd, + preinit_mt9m111[i][1 ], + preinit_mt9m111[i][2 ]); }else { data[0 ] = preinit_mt9m111[i][2 ]; data[1 ] = preinit_mt9m111[i][3 ]; - rc |=m5602_write_sensor (sd, - preinit_mt9m111[i][1 ], data,2 ); + err =m5602_write_sensor (sd, + preinit_mt9m111[i][1 ], data,2 ); } +if (err <0 ) +return err; } -if (rc <0 ) -return rc;if (m5602_read_sensor (sd,MT9M111_SC_CHIPVER , data,2 ))return -ENODEV ;
drivers/media/usb/gspca/m5602/m5602_po1030.c +7 -7
@@ -154,8 +154,8 @@ static const struct v4l2_ctrl_config po1030_greenbal_cfg = {int po1030_probe (struct sd *sd) { -int rc =0 ;u8 dev_id_h =0 , i; +int err;struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;if (force_sensor) {
@@ -174,14 +174,14 @@ int po1030_probe(struct sd *sd)for (i =0 ; i <ARRAY_SIZE (preinit_po1030); i++) {u8 data = preinit_po1030[i][2 ];if (preinit_po1030[i][0 ] ==SENSOR ) - rc |=m5602_write_sensor (sd, - preinit_po1030[i][1 ], &data,1 ); + err =m5602_write_sensor (sd, preinit_po1030[i][1 ], + &data,1 );else - rc |=m5602_write_bridge (sd, preinit_po1030[i][1 ], - data); + err =m5602_write_bridge (sd, preinit_po1030[i][1 ], + data); +if (err <0 ) +return err; } -if (rc <0 ) -return rc;if (m5602_read_sensor (sd,PO1030_DEVID_H , &dev_id_h,1 ))return -ENODEV ;
drivers/misc/kgdbts.c +2 -1
@@ -100,8 +100,9 @@ printk(KERN_INFO a); \ }while (0 ) #define v2printk(a...) do { \ -if (verbose >1 ) \ +if (verbose >1 ) { \ printk(KERN_INFO a); \ + } \touch_nmi_watchdog (); \ } while (0) #define eprintk(a...) do { \
drivers/misc/lis3lv02d/lis3lv02d.h +1 -0
@@ -271,6 +271,7 @@ struct lis3lv02d {int regs_size;u8 *reg_cache;bool regs_stored; +bool init_required;u8 odr_mask;/* ODR bit mask */ u8 whoami;/* indicates measurement precision */ s16 (*read_data) (struct lis3lv02d *lis3,int reg);
drivers/misc/mei/interrupt.c +3 -0
@@ -277,6 +277,9 @@ static int mei_cl_irq_read(struct mei_cl *cl, struct mei_cl_cb *cb,return ret; } +pm_runtime_mark_last_busy (dev->dev); +pm_request_autosuspend (dev->dev); +list_move_tail (&cb->list, &cl->rd_pending);return 0 ;
drivers/net/caif/caif_serial.c +0 -3
@@ -270,9 +270,6 @@ static netdev_tx_t caif_xmit(struct sk_buff *skb, struct net_device *dev) {struct ser_device *ser; -if (WARN_ON (!dev)) -return -EINVAL ; - ser =netdev_priv (dev);/* Send flow off once, on high water mark */
drivers/net/dsa/mt7530.c +0 -8
@@ -1128,14 +1128,6 @@ mt7530_port_set_vlan_aware(struct dsa_switch *ds, int port) {struct mt7530_priv *priv = ds->priv; -/* The real fabric path would be decided on the membership in the -* entry of VLAN table. PCR_MATRIX set up here with ALL_MEMBERS -* means potential VLAN can be consisting of certain subset of all -* ports. -*/ -mt7530_rmw (priv,MT7530_PCR_P (port), -PCR_MATRIX_MASK ,PCR_MATRIX (MT7530_ALL_MEMBERS )); -/* Trapped into security mode allows packet forwarding through VLAN * table lookup. CPU port is set to fallback mode to let untagged * frames pass through.
drivers/net/dsa/sja1105/sja1105_dynamic_config.c +19 -4
@@ -167,9 +167,10 @@ enum sja1105_hostcmd { SJA1105_HOSTCMD_INVALIDATE = 4, }; +/* Command and entry overlap */ static void -sja1105_vl_lookup_cmd_packing (void *buf,struct sja1105_dyn_cmd *cmd, -enum packing_op op) +sja1105et_vl_lookup_cmd_packing (void *buf,struct sja1105_dyn_cmd *cmd, +enum packing_op op) {const int size =SJA1105_SIZE_DYN_CMD ;
@@ -179,6 +180,20 @@ sja1105_vl_lookup_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,sja1105_packing (buf, &cmd->index,9 ,0 , size, op); } +/* Command and entry are separate */ +static void +sja1105pqrs_vl_lookup_cmd_packing (void *buf,struct sja1105_dyn_cmd *cmd, +enum packing_op op) +{ +u8 *p = buf +SJA1105_SIZE_VL_LOOKUP_ENTRY ; +const int size =SJA1105_SIZE_DYN_CMD ; + +sja1105_packing (p, &cmd->valid,31 ,31 , size, op); +sja1105_packing (p, &cmd->errors,30 ,30 , size, op); +sja1105_packing (p, &cmd->rdwrset,29 ,29 , size, op); +sja1105_packing (p, &cmd->index,9 ,0 , size, op); +} +static size_t sja1105et_vl_lookup_entry_packing (void *buf,void *entry_ptr,enum packing_op op) {
@@ -641,7 +656,7 @@ static size_t sja1105pqrs_cbs_entry_packing(void *buf, void *entry_ptr,const struct sja1105_dynamic_table_ops sja1105et_dyn_ops[BLK_IDX_MAX_DYN ] = { [BLK_IDX_VL_LOOKUP ] = { .entry_packing = sja1105et_vl_lookup_entry_packing, - .cmd_packing = sja1105_vl_lookup_cmd_packing, + .cmd_packing = sja1105et_vl_lookup_cmd_packing, .access =OP_WRITE , .max_entry_count =SJA1105_MAX_VL_LOOKUP_COUNT , .packed_size =SJA1105ET_SIZE_VL_LOOKUP_DYN_CMD ,
@@ -725,7 +740,7 @@ const struct sja1105_dynamic_table_ops sja1105et_dyn_ops[BLK_IDX_MAX_DYN] = {const struct sja1105_dynamic_table_ops sja1105pqrs_dyn_ops[BLK_IDX_MAX_DYN ] = { [BLK_IDX_VL_LOOKUP ] = { .entry_packing = sja1105_vl_lookup_entry_packing, - .cmd_packing = sja1105_vl_lookup_cmd_packing, + .cmd_packing = sja1105pqrs_vl_lookup_cmd_packing, .access = (OP_READ |OP_WRITE ), .max_entry_count =SJA1105_MAX_VL_LOOKUP_COUNT , .packed_size =SJA1105PQRS_SIZE_VL_LOOKUP_DYN_CMD ,
drivers/net/dsa/sja1105/sja1105_main.c +52 -23
176 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnx2.c +1 -1
@@ -8247,9 +8247,9 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)BNX2_WR (bp,PCI_COMMAND , reg); }else if ((BNX2_CHIP_ID (bp) ==BNX2_CHIP_ID_5706_A1 ) && !(bp->flags &BNX2_FLAG_PCIX )) { -dev_err (&pdev->dev,"5706 A1 can only be used in a PCIX bus, aborting\n" ); + rc = -EPERM ; goto err_out_unmap; }
drivers/net/ethernet/broadcom/bnxt/bnxt.c +3 -9
@@ -280,7 +280,8 @@ static bool bnxt_vf_pciid(enum board_idx idx) {return (idx ==NETXTREME_C_VF || idx ==NETXTREME_E_VF || idx ==NETXTREME_S_VF || idx ==NETXTREME_C_VF_HV || - idx ==NETXTREME_E_VF_HV || idx ==NETXTREME_E_P5_VF ); + idx ==NETXTREME_E_VF_HV || idx ==NETXTREME_E_P5_VF || + idx ==NETXTREME_E_P5_VF_HV ); }#define DB_CP_REARM_FLAGS (DB_KEY_CP | DB_IDX_VALID)
@@ -6833,14 +6834,7 @@ static int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp)static void bnxt_hwrm_set_pg_attr (struct bnxt_ring_mem_info *rmem,u8 *pg_attr,__le64 *pg_dir) { -u8 pg_size =0 ; - -if (BNXT_PAGE_SHIFT ==13 ) - pg_size =1 <<4 ; -else if (BNXT_PAGE_SIZE ==16 ) - pg_size =2 <<4 ; - - *pg_attr = pg_size; +BNXT_SET_CTX_PAGE_ATTR (*pg_attr);if (rmem->depth >=1 ) {if (rmem->depth ==2 ) *pg_attr |=2 ;
drivers/net/ethernet/broadcom/bnxt/bnxt.h +10 -0
@@ -1440,6 +1440,16 @@ struct bnxt_ctx_pg_info {#define BNXT_MAX_TQM_RINGS \ (BNXT_MAX_TQM_SP_RINGS + BNXT_MAX_TQM_FP_RINGS) +#define BNXT_SET_CTX_PAGE_ATTR (attr) \ +do { \ + if (BNXT_PAGE_SIZE == 0x2000) \ + attr = FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_8K; \ + else if (BNXT_PAGE_SIZE == 0x10000) \ + attr = FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_64K; \ + else \ + attr = FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_4K; \ +} while (0) +struct bnxt_ctx_mem_info {u32 qp_max_entries;u16 qp_min_qp1_entries;
drivers/net/ethernet/cavium/liquidio/lio_main.c +17 -10
@@ -1153,7 +1153,7 @@ static void octeon_destroy_resources(struct octeon_device *oct)* @lio: per-network private data * @start_stop: whether to start or stop */ -static void send_rx_ctrl_cmd (struct lio *lio,int start_stop) +static int send_rx_ctrl_cmd (struct lio *lio,int start_stop) {struct octeon_soft_command *sc;union octnet_cmd *ncmd;
@@ -1161,15 +1161,15 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)int retval;if (oct->props[lio->ifidx].rx_on == start_stop) -return ; +return 0 ; sc = (struct octeon_soft_command *)octeon_alloc_soft_command (oct,OCTNET_CMD_SIZE ,16 ,0 );if (!sc) {netif_info (lio, rx_err, lio->netdev, -"Failed to allocate octeon_soft_command\n" ); -return ; +"Failed to allocate octeon_soft_command struct\n" ); +return -ENOMEM ; } ncmd = (union octnet_cmd *)sc->virtdptr;
@@ -1192,18 +1192,19 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)if (retval ==IQ_SEND_FAILED ) {netif_info (lio, rx_err, lio->netdev,"Failed to send RX Control message\n" );octeon_free_soft_command (oct, sc); -return ; }else {/* Sleep on a wait queue till the cond flag indicates that the * response arrived or timed-out. */ retval =wait_for_sc_completion_timeout (oct, sc,0 );if (retval) -return ; +return retval; oct->props[lio->ifidx].rx_on = start_stop;WRITE_ONCE (sc->caller_is_done, true); } + +return retval; }/**
@@ -1778,6 +1779,7 @@ static int liquidio_open(struct net_device *netdev)struct octeon_device_priv *oct_priv = (struct octeon_device_priv *)oct->priv;struct napi_struct *napi, *n; +int ret =0 ;if (oct->props[lio->ifidx].napi_enabled ==0 ) {tasklet_disable (&oct_priv->droq_tasklet);
@@ -1813,7 +1815,9 @@ static int liquidio_open(struct net_device *netdev)netif_info (lio, ifup, lio->netdev,"Interface Open, ready for traffic\n" );/* tell Octeon to start forwarding packets to host */ -send_rx_ctrl_cmd (lio,1 ); + ret =send_rx_ctrl_cmd (lio,1 ); +if (ret) +return ret;/* start periodical statistics fetch */ INIT_DELAYED_WORK (&lio->stats_wk.work, lio_fetch_stats);
@@ -1824,7 +1828,7 @@ static int liquidio_open(struct net_device *netdev)dev_info (&oct->pci_dev->dev,"%s interface is opened\n" , netdev->name); -return 0 ; +return ret; }/**
@@ -1838,6 +1842,7 @@ static int liquidio_stop(struct net_device *netdev)struct octeon_device_priv *oct_priv = (struct octeon_device_priv *)oct->priv;struct napi_struct *napi, *n; +int ret =0 ;ifstate_reset (lio,LIO_IFSTATE_RUNNING );
@@ -1854,7 +1859,9 @@ static int liquidio_stop(struct net_device *netdev) lio->link_changes++;/* Tell Octeon that nic interface is down. */ -send_rx_ctrl_cmd (lio,0 ); + ret =send_rx_ctrl_cmd (lio,0 ); +if (ret) +return ret;if (OCTEON_CN23XX_PF (oct)) {if (!oct->msix_on)
@@ -1889,7 +1896,7 @@ static int liquidio_stop(struct net_device *netdev)dev_info (&oct->pci_dev->dev,"%s interface is stopped\n" , netdev->name); -return 0 ; +return ret; }/**
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +20 -7
@@ -595,7 +595,7 @@ static void octeon_destroy_resources(struct octeon_device *oct)* @lio: per-network private data * @start_stop: whether to start or stop */ -static void send_rx_ctrl_cmd (struct lio *lio,int start_stop) +static int send_rx_ctrl_cmd (struct lio *lio,int start_stop) {struct octeon_device *oct = (struct octeon_device *)lio->oct_dev;struct octeon_soft_command *sc;
@@ -603,11 +603,16 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)int retval;if (oct->props[lio->ifidx].rx_on == start_stop) -return ; +return 0 ; sc = (struct octeon_soft_command *)octeon_alloc_soft_command (oct,OCTNET_CMD_SIZE ,16 ,0 ); +if (!sc) { +netif_info (lio, rx_err, lio->netdev, +"Failed to allocate octeon_soft_command struct\n" ); +return -ENOMEM ; + } ncmd = (union octnet_cmd *)sc->virtdptr;
@@ -635,11 +640,13 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)*/ retval =wait_for_sc_completion_timeout (oct, sc,0 );if (retval) -return ; +return retval; oct->props[lio->ifidx].rx_on = start_stop;WRITE_ONCE (sc->caller_is_done, true); } + +return retval; }/**
@@ -906,6 +913,7 @@ static int liquidio_open(struct net_device *netdev)struct octeon_device_priv *oct_priv = (struct octeon_device_priv *)oct->priv;struct napi_struct *napi, *n; +int ret =0 ;if (!oct->props[lio->ifidx].napi_enabled) {tasklet_disable (&oct_priv->droq_tasklet);
@@ -932,11 +940,13 @@ static int liquidio_open(struct net_device *netdev) (LIQUIDIO_NDEV_STATS_POLL_TIME_MS));/* tell Octeon to start forwarding packets to host */ -send_rx_ctrl_cmd (lio,1 ); + ret =send_rx_ctrl_cmd (lio,1 ); +if (ret) +return ret;dev_info (&oct->pci_dev->dev,"%s interface is opened\n" , netdev->name); -return 0 ; +return ret; }/**
@@ -950,9 +960,12 @@ static int liquidio_stop(struct net_device *netdev)struct octeon_device_priv *oct_priv = (struct octeon_device_priv *)oct->priv;struct napi_struct *napi, *n; +int ret =0 ;/* tell Octeon to stop forwarding packets to host */ -send_rx_ctrl_cmd (lio,0 ); + ret =send_rx_ctrl_cmd (lio,0 ); +if (ret) +return ret;netif_info (lio, ifdown, lio->netdev,"Stopping interface!\n" );/* Inform that netif carrier is down */
@@ -986,7 +999,7 @@ static int liquidio_stop(struct net_device *netdev)dev_info (&oct->pci_dev->dev,"%s interface is stopped\n" , netdev->name); -return 0 ; +return ret; }/**
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +1 -1
@@ -1042,7 +1042,7 @@ void clear_all_filters(struct adapter *adapter)cxgb4_del_filter (dev, f->tid, &f->fs); } - sb =t4_read_reg (adapter,LE_DB_SRVR_START_INDEX_A ); + sb = adapter->tids.stid_base;for (i =0 ; i < sb; i++) { f = (struct filter_entry *)adapter->tids.tid_tab[i];
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +1 -1
@@ -6484,9 +6484,9 @@ static void cxgb4_ktls_dev_del(struct net_device *netdev, adap->uld[CXGB4_ULD_KTLS ].tlsdev_ops->tls_dev_del (netdev, tls_ctx, direction); -cxgb4_set_ktls_feature (adap,FW_PARAMS_PARAM_DEV_KTLS_HW_DISABLE ); out_unlock: +cxgb4_set_ktls_feature (adap,FW_PARAMS_PARAM_DEV_KTLS_HW_DISABLE );mutex_unlock (&uld_mutex); }
drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c +79 -1
172 lines not on this page · raw message
drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.h +2 -0
@@ -75,6 +75,8 @@ struct chcr_ktls_ofld_ctx_tx {struct chcr_ktls_uld_ctx {struct list_head entry;struct cxgb4_lld_info lldi; +struct xarray tid_list; +bool detach; }; static inline struct chcr_ktls_ofld_ctx_tx *
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c +4 -2
@@ -1564,8 +1564,10 @@ static int chtls_pt_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, cerr =put_cmsg (msg,SOL_TLS ,TLS_GET_RECORD_TYPE ,sizeof (thdr->type), &thdr->type); -if (cerr && thdr->type !=TLS_RECORD_TYPE_DATA ) -return -EIO ; +if (cerr && thdr->type !=TLS_RECORD_TYPE_DATA ) { + copied = -EIO ; +break ; + }/* don't send tls header, skip copy */ goto skip_copy; }
drivers/net/ethernet/freescale/fec_main.c +9 -2
@@ -3277,7 +3277,9 @@ static int fec_enet_init(struct net_device *ndev)return ret; } -fec_enet_alloc_queue (ndev); + ret =fec_enet_alloc_queue (ndev); +if (ret) +return ret; bd_size = (fep->total_tx_ring_size + fep->total_rx_ring_size) * dsize;
@@ -3285,7 +3287,8 @@ static int fec_enet_init(struct net_device *ndev) cbd_base =dmam_alloc_coherent (&fep->pdev->dev, bd_size, &bd_dma,GFP_KERNEL );if (!cbd_base) { -return -ENOMEM ; + ret = -ENOMEM ; + goto free_queue_mem; }/* Get the Ethernet address */
@@ -3363,6 +3366,10 @@ static int fec_enet_init(struct net_device *ndev)fec_enet_update_ethtool_stats (ndev);return 0 ; + +free_queue_mem: +fec_enet_free_queue (ndev); +return ret; }#ifdef CONFIG_OF
drivers/net/ethernet/fujitsu/fmvj18x_cs.c +2 -2
@@ -548,8 +548,8 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id) base =ioremap (link->resource[2 ]->start,resource_size (link->resource[2 ]));if (!base) { -pcmcia_release_window (link, link->resource[2 ]); -return -ENOMEM ; +pcmcia_release_window (link, link->resource[2 ]); +return -1 ; }pcmcia_map_mem_page (link, link->resource[2 ],0 );
drivers/net/ethernet/google/gve/gve_main.c +12 -9
@@ -180,7 +180,7 @@ static int gve_napi_poll(struct napi_struct *napi, int budget)/* Double check we have no extra work. * Ensure unmask synchronizes with checking for work. */ -dma_rmb (); +mb ();if (block->tx) reschedule |=gve_tx_poll (block,-1 );if (block->rx)
@@ -220,6 +220,7 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv)int vecs_left = new_num_ntfy_blks %2 ; priv->num_ntfy_blks = new_num_ntfy_blks; + priv->mgmt_msix_idx = priv->num_ntfy_blks; priv->tx_cfg.max_queues =min_t (int, priv->tx_cfg.max_queues, vecs_per_type); priv->rx_cfg.max_queues = min_t(int, priv->rx_cfg.max_queues,
@@ -300,20 +301,22 @@ static void gve_free_notify_blocks(struct gve_priv *priv) {int i; -/* Free the irqs */ -for (i =0 ; i < priv->num_ntfy_blks; i++) { -struct gve_notify_block *block = &priv->ntfy_blocks[i]; -int msix_idx = i; +if (priv->msix_vectors) { +/* Free the irqs */ +for (i =0 ; i < priv->num_ntfy_blks; i++) { +struct gve_notify_block *block = &priv->ntfy_blocks[i]; +int msix_idx = i; -irq_set_affinity_hint (priv->msix_vectors[msix_idx].vector, -NULL ); -free_irq (priv->msix_vectors[msix_idx].vector, block); +irq_set_affinity_hint (priv->msix_vectors[msix_idx].vector, +NULL ); +free_irq (priv->msix_vectors[msix_idx].vector, block); + } +free_irq (priv->msix_vectors[priv->mgmt_msix_idx].vector, priv); }dma_free_coherent (&priv->pdev->dev, priv->num_ntfy_blks *sizeof (*priv->ntfy_blocks), priv->ntfy_blocks, priv->ntfy_block_bus); priv->ntfy_blocks =NULL ; -free_irq (priv->msix_vectors[priv->mgmt_msix_idx].vector, priv);pci_disable_msix (priv->pdev);kvfree (priv->msix_vectors); priv->msix_vectors =NULL ;
drivers/net/ethernet/google/gve/gve_tx.c +6 -2
@@ -207,10 +207,12 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) goto abort_with_info; tx->tx_fifo.qpl =gve_assign_tx_qpl (priv); +if (!tx->tx_fifo.qpl) + goto abort_with_desc;/* map Tx FIFO */ if (gve_tx_fifo_init (priv, &tx->tx_fifo)) - goto abort_with_desc; + goto abort_with_qpl; tx->q_resources = dma_alloc_coherent(hdev,
@@ -229,6 +231,8 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) abort_with_fifo:gve_tx_fifo_release (priv, &tx->tx_fifo); +abort_with_qpl: +gve_unassign_qpl (priv, tx->tx_fifo.qpl->id); abort_with_desc:dma_free_coherent (hdev, bytes, tx->desc, tx->bus); tx->desc =NULL ;
@@ -478,7 +482,7 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev)struct gve_tx_ring *tx;int nsegs; -WARN (skb_get_queue_mapping (skb) > priv->tx_cfg.num_queues, +WARN (skb_get_queue_mapping (skb) >= priv->tx_cfg.num_queues,"skb queue index out of range" ); tx = &priv->tx[skb_get_queue_mapping (skb)];if (unlikely (gve_maybe_stop_tx (tx, skb))) {
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +11 -15
@@ -792,8 +792,6 @@ static bool hns3_tunnel_csum_bug(struct sk_buff *skb) l4.udp->dest == htons(4790))))return false; -skb_checksum_help (skb); -return true; }
@@ -871,8 +869,7 @@ static int hns3_set_l2l3l4(struct sk_buff *skb, u8 ol4_proto,/* the stack computes the IP header already, * driver calculate l4 checksum when not TSO. */ -skb_checksum_help (skb); -return 0 ; +return skb_checksum_help (skb); }hns3_set_outer_l2l3l4 (skb, ol4_proto, ol_type_vlan_len_msec);
@@ -917,7 +914,7 @@ static int hns3_set_l2l3l4(struct sk_buff *skb, u8 ol4_proto,break ;case IPPROTO_UDP :if (hns3_tunnel_csum_bug (skb)) -break ; +return skb_checksum_help (skb);hns3_set_field (*type_cs_vlan_tso,HNS3_TXD_L4CS_B ,1 ); hns3_set_field(*type_cs_vlan_tso, HNS3_TXD_L4T_S,
@@ -942,8 +939,7 @@ static int hns3_set_l2l3l4(struct sk_buff *skb, u8 ol4_proto,/* the stack computes the IP header already, * driver calculate l4 checksum when not TSO. */ -skb_checksum_help (skb); -return 0 ; +return skb_checksum_help (skb); }return 0 ;
@@ -4113,12 +4109,6 @@ static int hns3_client_init(struct hnae3_handle *handle)if (ret) goto out_init_phy; - ret =register_netdev (netdev); -if (ret) { -dev_err (priv->dev,"probe register netdev fail!\n" ); - goto out_reg_netdev_fail; - } -/* the device can work without cpu rmap, only aRFS needs it */ ret =hns3_set_rx_cpu_rmap (netdev);if (ret)
@@ -4146,17 +4136,23 @@ static int hns3_client_init(struct hnae3_handle *handle)set_bit (HNS3_NIC_STATE_INITED , &priv->state); + ret =register_netdev (netdev); +if (ret) { +dev_err (priv->dev,"probe register netdev fail!\n" ); + goto out_reg_netdev_fail; + } +if (netif_msg_drv (handle))hns3_info_show (priv);return ret; +out_reg_netdev_fail: +hns3_dbg_uninit (handle); out_client_start:hns3_free_rx_cpu_rmap (netdev);hns3_nic_uninit_irq (priv); out_init_irq_fail: -unregister_netdev (netdev); -out_reg_netdev_fail:hns3_uninit_phy (netdev); out_init_phy:hns3_uninit_all_ring (priv);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +3 -1
@@ -678,7 +678,6 @@ void hclge_mbx_handler(struct hclge_dev *hdev)unsigned int flag;int ret =0 ; -memset (&resp_msg,0 ,sizeof (resp_msg));/* handle all the mailbox requests in the queue */ while (!hclge_cmd_crq_empty (&hdev->hw)) {if (test_bit (HCLGE_STATE_CMD_DISABLE , &hdev->state)) {
@@ -706,6 +705,9 @@ void hclge_mbx_handler(struct hclge_dev *hdev)trace_hclge_pf_mbx_get (hdev, req); +/* clear the resp_msg before processing every mailbox message */ +memset (&resp_msg,0 ,sizeof (resp_msg)); +switch (req->msg.code) {case HCLGE_MBX_MAP_RING_TO_VECTOR : ret = hclge_map_unmap_ring_to_vf_vector(vport, true,
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +7 -9
@@ -467,12 +467,16 @@ static int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid,return err; } -static s32 ixgbe_set_vf_lpe (struct ixgbe_adapter *adapter,u32 *msgbuf,u32 vf) +static int ixgbe_set_vf_lpe (struct ixgbe_adapter *adapter,u32 max_frame,u32 vf) {struct ixgbe_hw *hw = &adapter->hw; -int max_frame = msgbuf[1 ];u32 max_frs; +if (max_frame <ETH_MIN_MTU || max_frame >IXGBE_MAX_JUMBO_FRAME_SIZE ) { +e_err (drv,"VF max_frame %d out of range\n" , max_frame); +return -EINVAL ; + } +/* * For 82599EB we have to keep all PFs and VFs operating with * the same max_frame value in order to avoid sending an oversize
@@ -533,12 +537,6 @@ static s32 ixgbe_set_vf_lpe(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) } } -/* MTU < 68 is an error and causes problems on some kernels */ -if (max_frame >IXGBE_MAX_JUMBO_FRAME_SIZE ) { -e_err (drv,"VF max_frame %d out of range\n" , max_frame); -return -EINVAL ; - } -/* pull current max frame size from hardware */ max_frs =IXGBE_READ_REG (hw,IXGBE_MAXFRS ); max_frs &=IXGBE_MHADD_MFS_MASK ;
@@ -1249,7 +1247,7 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf) retval =ixgbe_set_vf_vlan_msg (adapter, msgbuf, vf);break ;case IXGBE_VF_SET_LPE : - retval =ixgbe_set_vf_lpe (adapter, msgbuf, vf); + retval =ixgbe_set_vf_lpe (adapter, msgbuf[1 ], vf);break ;case IXGBE_VF_SET_MACVLAN : retval =ixgbe_set_vf_macvlan_msg (adapter, msgbuf, vf);
drivers/net/ethernet/lantiq_xrx200.c +9 -5
@@ -154,6 +154,7 @@ static int xrx200_close(struct net_device *net_dev)static int xrx200_alloc_skb (struct xrx200_chan *ch) { +dma_addr_t mapping;int ret =0 ; ch->skb[ch->dma.desc] = netdev_alloc_skb_ip_align(ch->priv->net_dev,
@@ -163,16 +164,17 @@ static int xrx200_alloc_skb(struct xrx200_chan *ch) goto skip; } - ch->dma.desc_base[ch->dma.desc].addr =dma_map_single (ch->priv->dev, - ch->skb[ch->dma.desc]->data,XRX200_DMA_DATA_LEN , -DMA_FROM_DEVICE ); -if (unlikely (dma_mapping_error (ch->priv->dev, - ch->dma.desc_base[ch->dma.desc].addr))) { + mapping =dma_map_single (ch->priv->dev, ch->skb[ch->dma.desc]->data, +XRX200_DMA_DATA_LEN ,DMA_FROM_DEVICE ); +if (unlikely (dma_mapping_error (ch->priv->dev, mapping))) {dev_kfree_skb_any (ch->skb[ch->dma.desc]); ret = -ENOMEM ; goto skip; } + ch->dma.desc_base[ch->dma.desc].addr = mapping; +/* Make sure the address is written before we give it to HW */ +wmb (); skip: ch->dma.desc_base[ch->dma.desc].ctl = LTQ_DMA_OWN | LTQ_DMA_RX_OFFSET(NET_IP_ALIGN) |
@@ -196,6 +198,8 @@ static int xrx200_hw_receive(struct xrx200_chan *ch) ch->dma.desc %=LTQ_DESC_NUM ;if (ret) { + ch->skb[ch->dma.desc] = skb; + net_dev->stats.rx_dropped++;netdev_err (net_dev,"failed to allocate new rx buffer\n" );return ret; }
drivers/net/ethernet/marvell/mvpp2/mvpp2.h +22 -0
@@ -909,6 +909,14 @@ enum mvpp22_ptp_packet_format {#define MVPP2_DESC_DMA_MASK DMA_BIT_MASK(40) +/* Buffer header info bits */ +#define MVPP2_B_HDR_INFO_MC_ID_MASK 0xfff +#define MVPP2_B_HDR_INFO_MC_ID (info) ((info) & MVPP2_B_HDR_INFO_MC_ID_MASK) +#define MVPP2_B_HDR_INFO_LAST_OFFS 12 +#define MVPP2_B_HDR_INFO_LAST_MASK BIT(12) +#define MVPP2_B_HDR_INFO_IS_LAST (info) \ + (((info) & MVPP2_B_HDR_INFO_LAST_MASK) >> MVPP2_B_HDR_INFO_LAST_OFFS) +struct mvpp2_tai ;/* Definitions */
@@ -918,6 +926,20 @@ struct mvpp2_rss_table {u32 indir[MVPP22_RSS_TABLE_ENTRIES ]; }; +struct mvpp2_buff_hdr { +__le32 next_phys_addr; +__le32 next_dma_addr; +__le16 byte_count; +__le16 info; +__le16 reserved1;/* bm_qset (for future use, BM) */ +u8 next_phys_addr_high; +u8 next_dma_addr_high; +__le16 reserved2; +__le16 reserved3; +__le16 reserved4; +__le16 reserved5; +}; +/* Shared Packet Processor resources */ struct mvpp2 {/* Shared registers' base addresses */
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +45 -9
78 lines not on this page · raw message
drivers/net/ethernet/mediatek/mtk_eth_soc.c +44 -23
76 lines not on this page · raw message
drivers/net/ethernet/mediatek/mtk_eth_soc.h +22 -2
@@ -266,8 +266,21 @@/* QDMA FQ Free Page Buffer Length Register */ #define MTK_QDMA_FQ_BLEN 0x1B2C -/* GMA1 Received Good Byte Count Register */ -#define MTK_GDM1_TX_GBCNT 0x2400 +/* GMA1 counter / statics register */ +#define MTK_GDM1_RX_GBCNT_L 0x2400 +#define MTK_GDM1_RX_GBCNT_H 0x2404 +#define MTK_GDM1_RX_GPCNT 0x2408 +#define MTK_GDM1_RX_OERCNT 0x2410 +#define MTK_GDM1_RX_FERCNT 0x2414 +#define MTK_GDM1_RX_SERCNT 0x2418 +#define MTK_GDM1_RX_LENCNT 0x241c +#define MTK_GDM1_RX_CERCNT 0x2420 +#define MTK_GDM1_RX_FCCNT 0x2424 +#define MTK_GDM1_TX_SKIPCNT 0x2428 +#define MTK_GDM1_TX_COLCNT 0x242c +#define MTK_GDM1_TX_GBCNT_L 0x2430 +#define MTK_GDM1_TX_GBCNT_H 0x2434 +#define MTK_GDM1_TX_GPCNT 0x2438#define MTK_STAT_OFFSET 0x40/* QDMA descriptor txd4 */
@@ -478,6 +491,13 @@#define MT7628_SDM_MAC_ADRL (MT7628_SDM_OFFSET + 0x0c)#define MT7628_SDM_MAC_ADRH (MT7628_SDM_OFFSET + 0x10) +/* Counter / stat register */ +#define MT7628_SDM_TPCNT (MT7628_SDM_OFFSET + 0x100) +#define MT7628_SDM_TBCNT (MT7628_SDM_OFFSET + 0x104) +#define MT7628_SDM_RPCNT (MT7628_SDM_OFFSET + 0x108) +#define MT7628_SDM_RBCNT (MT7628_SDM_OFFSET + 0x10c) +#define MT7628_SDM_CS_ERR (MT7628_SDM_OFFSET + 0x110) +struct mtk_rx_dma {unsigned int rxd1;unsigned int rxd2;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -3
@@ -2027,8 +2027,6 @@ static int mlx4_en_set_tunable(struct net_device *dev,return ret; } -#define MLX4_EEPROM_PAGE_LEN 256 -static int mlx4_en_get_module_info (struct net_device *dev,struct ethtool_modinfo *modinfo) {
@@ -2063,7 +2061,7 @@ static int mlx4_en_get_module_info(struct net_device *dev,break ;case MLX4_MODULE_ID_SFP : modinfo->type =ETH_MODULE_SFF_8472 ; - modinfo->eeprom_len =MLX4_EEPROM_PAGE_LEN ; + modinfo->eeprom_len =ETH_MODULE_SFF_8472_LEN ;break ;default :return -EINVAL ;
drivers/net/ethernet/mellanox/mlx4/port.c +103 -4
138 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c +2 -0
@@ -223,6 +223,8 @@ static void mlx5e_rep_changelowerstate_event(struct net_device *netdev, void *pt rpriv = priv->ppriv; fwd_vport_num = rpriv->rep->vport; lag_dev =netdev_master_upper_dev_get (netdev); +if (!lag_dev) +return ;netdev_dbg (netdev,"lag_dev(%s)'s slave vport(%d) is txable(%d)\n" , lag_dev->name, fwd_vport_num,net_lag_port_dev_txable (netdev));
drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +1 -1
@@ -643,7 +643,7 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe, }if (chain) { - tc_skb_ext =skb_ext_add (skb,TC_SKB_EXT ); + tc_skb_ext =tc_skb_ext_alloc (skb);if (!tc_skb_ext) {WARN_ON (1 );return false;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +1 -0
@@ -35,6 +35,7 @@#include <linux/ipv6.h> #include <linux/tcp.h> #include <linux/mlx5/fs.h> +#include <linux/mlx5/mpfs.h> #include "en.h" #include "lib/mpfs.h"
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +8 -1
@@ -2920,7 +2920,7 @@ static int mlx5e_update_netdev_queues(struct mlx5e_priv *priv)int err; old_num_txqs = netdev->real_num_tx_queues; - old_ntc = netdev->num_tc; + old_ntc = netdev->num_tc ? :1 ; nch = priv->channels.params.num_channels; ntc = priv->channels.params.num_tc;
@@ -5385,6 +5385,11 @@ struct net_device *mlx5e_create_netdev(struct mlx5_core_dev *mdev,return NULL ; } +static void mlx5e_reset_channels (struct net_device *netdev) +{ +netdev_reset_tc (netdev); +} +int mlx5e_attach_netdev (struct mlx5e_priv *priv) {const bool take_rtnl = priv->netdev->reg_state ==NETREG_REGISTERED ;
@@ -5438,6 +5443,7 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv) profile->cleanup_tx (priv); out: +mlx5e_reset_channels (priv->netdev);set_bit (MLX5E_STATE_DESTROYING , &priv->state);cancel_work_sync (&priv->update_stats_work);return err;
@@ -5455,6 +5461,7 @@ void mlx5e_detach_netdev(struct mlx5e_priv *priv) profile->cleanup_rx (priv); profile->cleanup_tx (priv); +mlx5e_reset_channels (priv->netdev);cancel_work_sync (&priv->update_stats_work); }
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +7 -3
@@ -4025,8 +4025,12 @@ static int add_vlan_push_action(struct mlx5e_priv *priv,if (err)return err; - *out_dev =dev_get_by_index_rcu (dev_net (vlan_dev), -dev_get_iflink (vlan_dev)); +rcu_read_lock (); + *out_dev =dev_get_by_index_rcu (dev_net (vlan_dev),dev_get_iflink (vlan_dev)); +rcu_read_unlock (); +if (!*out_dev) +return -ENODEV ; +if (is_vlan_dev (*out_dev)) err =add_vlan_push_action (priv, attr, out_dev, action);
@@ -5490,7 +5494,7 @@ bool mlx5e_tc_update_skb(struct mlx5_cqe64 *cqe, }if (chain) { - tc_skb_ext =skb_ext_add (skb,TC_SKB_EXT ); + tc_skb_ext =tc_skb_ext_alloc (skb);if (WARN_ON (!tc_skb_ext))return false;
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +1 -0
@@ -35,6 +35,7 @@#include <linux/mlx5/mlx5_ifc.h> #include <linux/mlx5/vport.h> #include <linux/mlx5/fs.h> +#include <linux/mlx5/mpfs.h> #include "esw/acl/lgcy.h" #include "mlx5_core.h" #include "lib/eq.h"
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c +15 -23
@@ -76,10 +76,11 @@ mlx5_eswitch_termtbl_create(struct mlx5_core_dev *dev,/* As this is the terminating action then the termination table is the * same prio as the slow path */ - ft_attr.flags =MLX5_FLOW_TABLE_TERMINATION | + ft_attr.flags =MLX5_FLOW_TABLE_TERMINATION |MLX5_FLOW_TABLE_UNMANAGED |MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT ; - ft_attr.prio =FDB_SLOW_PATH ; + ft_attr.prio =FDB_TC_OFFLOAD ; ft_attr.max_fte =1 ; + ft_attr.level =1 ; ft_attr.autogroup.max_num_groups =1 ; tt->termtbl =mlx5_create_auto_grouped_flow_table (root_ns, &ft_attr);if (IS_ERR (tt->termtbl)) {
@@ -171,19 +172,6 @@ mlx5_eswitch_termtbl_put(struct mlx5_eswitch *esw, } } -static bool mlx5_eswitch_termtbl_is_encap_reformat (struct mlx5_pkt_reformat *rt) -{ -switch (rt->reformat_type) { -case MLX5_REFORMAT_TYPE_L2_TO_VXLAN : -case MLX5_REFORMAT_TYPE_L2_TO_NVGRE : -case MLX5_REFORMAT_TYPE_L2_TO_L2_TUNNEL : -case MLX5_REFORMAT_TYPE_L2_TO_L3_TUNNEL : -return true; -default : -return false; - } -} -static void mlx5_eswitch_termtbl_actions_move (struct mlx5_flow_act *src,struct mlx5_flow_act *dst)
@@ -201,14 +189,6 @@ mlx5_eswitch_termtbl_actions_move(struct mlx5_flow_act *src,memset (&src->vlan[1 ],0 ,sizeof (src->vlan[1 ])); } } - -if (src->action &MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT && -mlx5_eswitch_termtbl_is_encap_reformat (src->pkt_reformat)) { - src->action &= ~MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ; - dst->action |=MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ; - dst->pkt_reformat = src->pkt_reformat; - src->pkt_reformat =NULL ; - } } static bool mlx5_eswitch_offload_is_uplink_port(const struct mlx5_eswitch *esw,
@@ -237,6 +217,7 @@ mlx5_eswitch_termtbl_required(struct mlx5_eswitch *esw,int i;if (!MLX5_CAP_ESW_FLOWTABLE_FDB (esw->dev, termination_table) || + !MLX5_CAP_ESW_FLOWTABLE_FDB (esw->dev, ignore_flow_level) || attr->flags &MLX5_ESW_ATTR_FLAG_SLOW_PATH || !mlx5_eswitch_offload_is_uplink_port (esw, spec))return false;
@@ -278,6 +259,14 @@ mlx5_eswitch_add_termtbl_rule(struct mlx5_eswitch *esw,if (dest[i].type !=MLX5_FLOW_DESTINATION_TYPE_VPORT )continue ; +if (attr->dests[num_vport_dests].flags &MLX5_ESW_DEST_ENCAP ) { + term_tbl_act.action |=MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ; + term_tbl_act.pkt_reformat = attr->dests[num_vport_dests].pkt_reformat; + }else { + term_tbl_act.action &= ~MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ; + term_tbl_act.pkt_reformat =NULL ; + } +/* get the terminating table for the action list */ tt =mlx5_eswitch_termtbl_get_create (esw, &term_tbl_act, &dest[i], attr);
@@ -299,6 +288,9 @@ mlx5_eswitch_add_termtbl_rule(struct mlx5_eswitch *esw, goto revert_changes;/* create the FTE */ + flow_act->action &= ~MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ; + flow_act->pkt_reformat =NULL ; + flow_act->flags |=FLOW_ACT_IGNORE_FLOW_LEVEL ; rule =mlx5_add_flow_rules (fdb, spec, flow_act, dest, num_dest);if (IS_ERR (rule)) goto revert_changes;
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +6 -0
@@ -307,6 +307,11 @@ int mlx5_lag_mp_init(struct mlx5_lag *ldev)struct lag_mp *mp = &ldev->lag_mp;int err; +/* always clear mfi, as it might become stale when a route delete event +* has been missed +*/ + mp->mfi =NULL ; +if (mp->fib_nb.notifier_call)return 0 ;
@@ -335,4 +340,5 @@ void mlx5_lag_mp_cleanup(struct mlx5_lag *ldev)unregister_fib_notifier (&init_net, &mp->fib_nb);destroy_workqueue (mp->wq); mp->fib_nb.notifier_call =NULL ; + mp->mfi =NULL ; }
drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c +3 -0
@@ -33,6 +33,7 @@#include <linux/etherdevice.h> #include <linux/mlx5/driver.h> #include <linux/mlx5/mlx5_ifc.h> +#include <linux/mlx5/mpfs.h> #include <linux/mlx5/eswitch.h> #include "mlx5_core.h" #include "lib/mpfs.h"
@@ -175,6 +176,7 @@ int mlx5_mpfs_add_mac(struct mlx5_core_dev *dev, u8 *mac)mutex_unlock (&mpfs->lock);return err; } +EXPORT_SYMBOL (mlx5_mpfs_add_mac);int mlx5_mpfs_del_mac (struct mlx5_core_dev *dev,u8 *mac) {
@@ -206,3 +208,4 @@ int mlx5_mpfs_del_mac(struct mlx5_core_dev *dev, u8 *mac)mutex_unlock (&mpfs->lock);return err; } +EXPORT_SYMBOL (mlx5_mpfs_del_mac);
drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.h +1 -4
@@ -84,12 +84,9 @@ struct l2addr_node {#ifdef CONFIG_MLX5_MPFS int mlx5_mpfs_init (struct mlx5_core_dev *dev);void mlx5_mpfs_cleanup (struct mlx5_core_dev *dev); -int mlx5_mpfs_add_mac (struct mlx5_core_dev *dev,u8 *mac); -int mlx5_mpfs_del_mac (struct mlx5_core_dev *dev,u8 *mac);#else /* #ifndef CONFIG_MLX5_MPFS */ static inline int mlx5_mpfs_init (struct mlx5_core_dev *dev) {return 0 ; }static inline void mlx5_mpfs_cleanup (struct mlx5_core_dev *dev) {} -static inline int mlx5_mpfs_add_mac (struct mlx5_core_dev *dev,u8 *mac) {return 0 ; } -static inline int mlx5_mpfs_del_mac (struct mlx5_core_dev *dev,u8 *mac) {return 0 ; }#endif +#endif
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +6 -3
@@ -1052,7 +1052,6 @@ static void stmmac_check_pcs_mode(struct stmmac_priv *priv)*/ static int stmmac_init_phy (struct net_device *dev) { -struct ethtool_wolinfo wol = { .cmd =ETHTOOL_GWOL };struct stmmac_priv *priv =netdev_priv (dev);struct device_node *node;int ret;
@@ -1078,8 +1077,12 @@ static int stmmac_init_phy(struct net_device *dev) ret =phylink_connect_phy (priv->phylink, phydev); } -phylink_ethtool_get_wol (priv->phylink, &wol); -device_set_wakeup_capable (priv->device, !!wol.supported); +if (!priv->plat->pmt) { +struct ethtool_wolinfo wol = { .cmd =ETHTOOL_GWOL }; + +phylink_ethtool_get_wol (priv->phylink, &wol); +device_set_wakeup_capable (priv->device, !!wol.supported); + }return ret; }
drivers/net/ethernet/ti/netcp_core.c +2 -2
@@ -1350,8 +1350,8 @@ int netcp_txpipe_open(struct netcp_tx_pipe *tx_pipe) tx_pipe->dma_queue =knav_queue_open (name, tx_pipe->dma_queue_id,KNAV_QUEUE_SHARED );if (IS_ERR (tx_pipe->dma_queue)) { -dev_err (dev,"Could not open DMA queue for channel \"%s\": %d\n" , - name, ret); +dev_err (dev,"Could not open DMA queue for channel \"%s\": %pe\n" , + name, tx_pipe->dma_queue); ret =PTR_ERR (tx_pipe->dma_queue); goto err; }
drivers/net/ipa/ipa.h +2 -0
@@ -56,6 +56,7 @@ enum ipa_flag {* @mem_virt: Virtual address of IPA-local memory space * @mem_offset: Offset from @mem_virt used for access to IPA memory * @mem_size: Total size (bytes) of memory at @mem_virt +* @mem_count: Number of entries in the mem array * @mem: Array of IPA-local memory region descriptors * @imem_iova: I/O virtual address of IPA region in IMEM * @imem_size; Size of IMEM region
@@ -102,6 +103,7 @@ struct ipa {void *mem_virt;u32 mem_offset;u32 mem_size; +u32 mem_count;const struct ipa_mem *mem;unsigned long imem_iova;
drivers/net/ipa/ipa_mem.c +2 -1
@@ -181,7 +181,7 @@ int ipa_mem_config(struct ipa *ipa)* for the region, write "canary" values in the space prior to * the region's base address. */ -for (mem_id =0 ; mem_id <IPA_MEM_COUNT ; mem_id++) { +for (mem_id =0 ; mem_id < ipa->mem_count; mem_id++) {const struct ipa_mem *mem = &ipa->mem[mem_id];u16 canary_count;__le32 *canary;
@@ -488,6 +488,7 @@ int ipa_mem_init(struct ipa *ipa, const struct ipa_mem_data *mem_data) ipa->mem_size =resource_size (res);/* The ipa->mem[] array is indexed by enum ipa_mem_id values */ + ipa->mem_count = mem_data->local_count; ipa->mem = mem_data->local; ret =ipa_imem_init (ipa, mem_data->imem_addr, mem_data->imem_size);
drivers/net/mdio/mdio-octeon.c +0 -2
@@ -71,7 +71,6 @@ static int octeon_mdiobus_probe(struct platform_device *pdev)return 0 ; fail_register: -mdiobus_free (bus->mii_bus); smi_en.u64 =0 ;oct_mdio_writeq (smi_en.u64, bus->register_base +SMI_EN );return err;
@@ -85,7 +84,6 @@ static int octeon_mdiobus_remove(struct platform_device *pdev) bus =platform_get_drvdata (pdev);mdiobus_unregister (bus->mii_bus); -mdiobus_free (bus->mii_bus); smi_en.u64 =0 ;oct_mdio_writeq (smi_en.u64, bus->register_base +SMI_EN );return 0 ;
drivers/net/mdio/mdio-thunder.c +0 -1
@@ -126,7 +126,6 @@ static void thunder_mdiobus_pci_remove(struct pci_dev *pdev)continue ;mdiobus_unregister (bus->mii_bus); -mdiobus_free (bus->mii_bus);oct_mdio_writeq (0 , bus->register_base +SMI_EN ); }pci_release_regions (pdev);
drivers/net/usb/hso.c +22 -23
68 lines not on this page · raw message
drivers/net/usb/smsc75xx.c +6 -2
@@ -1483,7 +1483,7 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) ret =smsc75xx_wait_ready (dev,0 );if (ret <0 ) {netdev_warn (dev->net,"device not ready in smsc75xx_bind\n" ); -return ret; + goto err; }smsc75xx_init_mac_address (dev);
@@ -1492,7 +1492,7 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) ret =smsc75xx_reset (dev);if (ret <0 ) {netdev_warn (dev->net,"smsc75xx_reset error %d\n" , ret); -return ret; + goto err; } dev->net->netdev_ops = &smsc75xx_netdev_ops;
@@ -1502,6 +1502,10 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; dev->net->max_mtu =MAX_SINGLE_PACKET_SIZE ;return 0 ; + +err: +kfree (pdata); +return ret; }static void smsc75xx_unbind (struct usbnet *dev,struct usb_interface *intf)
drivers/net/wireless/ath/ath10k/htt.h +1 -0
@@ -845,6 +845,7 @@ enum htt_security_types {#define ATH10K_HTT_TXRX_PEER_SECURITY_MAX 2#define ATH10K_TXRX_NUM_EXT_TIDS 19 +#define ATH10K_TXRX_NON_QOS_TID 16enum htt_security_flags {#define HTT_SECURITY_TYPE_MASK 0x7F
drivers/net/wireless/ath/ath10k/htt_rx.c +191 -10
245 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/rx_desc.h +13 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/dp_rx.c +18 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/dp_rx.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath6kl/debug.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +2 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +17 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +18 -24
42 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +2 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.h +0 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +2 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas/mesh.c +4 -29
Lines of this file are not shown. View the raw message.
drivers/platform/x86/touchscreen_dmi.c +43 -0
43 lines not on this page · raw message
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/x86_pkg_temp_thermal.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/tty/serial/8250/8250_aspeed_vuart.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/tty/serial/8250/8250_pci.c +35 -12
47 lines not on this page · raw message
drivers/tty/serial/rp2.c +17 -35
52 lines not on this page · raw message
net/mac80211/rx.c +117 -33
150 lines not on this page · raw message
net/sched/sch_generic.c +48 -2
50 lines not on this page · raw message
scripts/clang-tools/gen_compile_commands.py +1 -1
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +45 -1
46 lines not on this page · raw message
sound/usb/mixer_scarlett_gen2.c +51 -30
81 lines not on this page · raw message
tools/bpf/bpftool/Documentation/bpftool-cgroup.rst +3 -1
Lines of this file are not shown. View the raw message.
tools/bpf/bpftool/Documentation/bpftool-prog.rst +1 -1
Lines of this file are not shown. View the raw message.
tools/bpf/bpftool/bash-completion/bpftool +3 -3
Lines of this file are not shown. View the raw message.
tools/perf/scripts/python/exported-sql-viewer.py +9 -3
Lines of this file are not shown. View the raw message.
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +5 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/gpio/Makefile +13 -11
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json +4 -4
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Samuel Zou
Tested-by Hulk RobotQuoted 4 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.10.42 kernel.
All users of the 5.10 kernel series must upgrade.
Quoted 9 lines
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-5.10.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=summarythanks,
greg k-h
Tested on arm64 and x86 for 5.10.42,
Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-5.10.y
Version: 5.10.42
Commit: 65859eca4dff1af0db5e36d1cfbac15b834c6a65
Compiler: gcc version 7.3.0 (GCC)
arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8900
passed: 8900
failed: 0
timeout: 0
--------------------------------------------------------------------
x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8900
passed: 8900
failed: 0
timeout: 0
--------------------------------------------------------------------