Linux 5.4.119
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.119 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/exynos4412-midas.dtsi | 6 arch/arm/boot/dts/exynos4412-odroid-common.dtsi | 2 arch/arm/boot/dts/exynos5250-smdk5250.dts | 2 arch/arm/boot/dts/exynos5250-snow-common.dtsi | 2 arch/arm/boot/dts/uniphier-pxs2.dtsi | 2 arch/arm64/boot/dts/qcom/sm8150.dtsi | 2 arch/arm64/boot/dts/renesas/r8a77980.dtsi | 16 arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi | 2 arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi | 4 arch/m68k/include/asm/mvme147hw.h | 3 arch/m68k/mvme147/config.c | 14 arch/m68k/mvme16x/config.c | 14 arch/mips/boot/dts/brcm/bcm3368.dtsi | 2 arch/mips/boot/dts/brcm/bcm63268.dtsi | 2 arch/mips/boot/dts/brcm/bcm6358.dtsi | 2 arch/mips/boot/dts/brcm/bcm6362.dtsi | 2 arch/mips/boot/dts/brcm/bcm6368.dtsi | 2 arch/mips/pci/pci-legacy.c | 9 arch/mips/pci/pci-mt7620.c | 5 arch/mips/pci/pci-rt2880.c | 37 arch/powerpc/Kconfig | 2 arch/powerpc/Kconfig.debug | 1 arch/powerpc/include/asm/book3s/64/radix.h | 6 arch/powerpc/kernel/fadump.c | 2 arch/powerpc/kernel/prom.c | 2 arch/powerpc/kvm/book3s_hv.c | 3 arch/powerpc/mm/book3s64/radix_pgtable.c | 4 arch/powerpc/perf/isa207-common.c | 4 arch/powerpc/platforms/52xx/lite5200_sleep.S | 2 arch/powerpc/platforms/pseries/pci_dlpar.c | 4 arch/powerpc/sysdev/xive/common.c | 14 arch/s390/kernel/setup.c | 4 arch/s390/kvm/gaccess.h | 54 - arch/s390/kvm/kvm-s390.c | 4 arch/x86/Kconfig | 1 arch/x86/events/amd/iommu.c | 6 arch/x86/kernel/cpu/microcode/core.c | 8 arch/x86/kernel/kprobes/core.c | 17 arch/x86/kvm/vmx/nested.c | 2 drivers/acpi/cppc_acpi.c | 14 drivers/ata/libahci_platform.c | 4 drivers/ata/pata_arasan_cf.c | 15 drivers/ata/pata_ixp4xx_cf.c | 6 drivers/ata/sata_mv.c | 4 drivers/base/node.c | 26 drivers/base/regmap/regmap-debugfs.c | 1 drivers/block/null_blk_zoned.c | 1 drivers/block/xen-blkback/common.h | 1 drivers/block/xen-blkback/xenbus.c | 38 drivers/bus/qcom-ebi2.c | 4 drivers/char/ttyprintk.c | 11 drivers/clk/clk-ast2600.c | 4 drivers/clk/mvebu/armada-37xx-periph.c | 83 - drivers/clk/qcom/a53-pll.c | 1 drivers/clk/uniphier/clk-uniphier-mux.c | 4 drivers/clk/zynqmp/pll.c | 12 drivers/cpufreq/armada-37xx-cpufreq.c | 76 + drivers/crypto/qat/qat_c3xxxvf/adf_drv.c | 4 drivers/crypto/qat/qat_c62xvf/adf_drv.c | 4 drivers/crypto/qat/qat_common/adf_isr.c | 29 drivers/crypto/qat/qat_common/adf_transport.c | 1 drivers/crypto/qat/qat_common/adf_vf_isr.c | 17 drivers/crypto/qat/qat_dh895xccvf/adf_drv.c | 4 drivers/devfreq/devfreq.c | 2 drivers/firmware/Kconfig | 1 drivers/gpu/drm/amd/amdkfd/kfd_iommu.c | 6 drivers/gpu/drm/amd/amdkfd/kfd_iommu.h | 9 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 17 drivers/gpu/drm/i915/gvt/gvt.c | 8 drivers/gpu/drm/panfrost/panfrost_mmu.c | 13 drivers/gpu/drm/radeon/radeon_kms.c | 1 drivers/hid/hid-ids.h | 1 drivers/hid/hid-plantronics.c | 60 + drivers/hsi/hsi_core.c | 3 drivers/hv/channel_mgmt.c | 30 drivers/i2c/busses/i2c-cadence.c | 5 drivers/i2c/busses/i2c-emev2.c | 5 drivers/i2c/busses/i2c-img-scb.c | 4 drivers/i2c/busses/i2c-imx-lpi2c.c | 2 drivers/i2c/busses/i2c-jz4780.c | 5 drivers/i2c/busses/i2c-omap.c | 8 drivers/i2c/busses/i2c-sh7760.c | 5 drivers/i2c/busses/i2c-sprd.c | 4 drivers/i3c/master.c | 5 drivers/iio/accel/adis16201.c | 2 drivers/infiniband/hw/bnxt_re/qplib_res.c | 1 drivers/infiniband/hw/cxgb4/resource.c | 2 drivers/infiniband/hw/hfi1/firmware.c | 1 drivers/infiniband/hw/i40iw/i40iw_pble.c | 6 drivers/infiniband/hw/qedr/qedr_iw_cm.c | 4 drivers/infiniband/sw/siw/siw_mem.c | 4 drivers/infiniband/ulp/srpt/ib_srpt.c | 1 drivers/irqchip/irq-gic-v3-mbi.c | 2 drivers/md/md-bitmap.c | 2 drivers/md/md.c | 73 - drivers/media/platform/aspeed-video.c | 9 drivers/media/platform/sunxi/sun6i-csi/sun6i_video.c | 4 drivers/media/platform/vivid/vivid-vid-out.c | 2 drivers/media/tuners/m88rs6000t.c | 6 drivers/media/v4l2-core/v4l2-ctrls.c | 17 drivers/memory/omap-gpmc.c | 7 drivers/memory/pl353-smc.c | 2 drivers/mfd/stm32-timers.c | 7 drivers/misc/lis3lv02d/lis3lv02d.c | 21 drivers/misc/vmw_vmci/vmci_doorbell.c | 2 drivers/misc/vmw_vmci/vmci_guest.c | 2 drivers/mtd/mtdchar.c | 8 drivers/mtd/mtdcore.c | 3 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 6 drivers/mtd/nand/raw/fsmc_nand.c | 2 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 2 drivers/mtd/nand/raw/qcom_nandc.c | 7 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 10 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h | 2 drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 22 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 4 drivers/net/ethernet/renesas/ravb_main.c | 35 drivers/net/ethernet/ti/davinci_emac.c | 4 drivers/net/fddi/defxx.c | 47 drivers/net/geneve.c | 4 drivers/net/phy/intel-xway.c | 21 drivers/net/wan/lapbether.c | 32 drivers/net/wireless/ath/ath10k/wmi-tlv.c | 3 drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 drivers/net/wireless/ath/ath9k/hw.c | 2 drivers/net/wireless/intel/ipw2x00/libipw_wx.c | 6 drivers/net/wireless/marvell/mwl8k.c | 1 drivers/net/wireless/mediatek/mt7601u/eeprom.c | 2 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/table.c | 500 +++++++--- drivers/net/wireless/realtek/rtw88/phy.c | 5 drivers/nfc/pn533/pn533.c | 3 drivers/nvme/host/multipath.c | 4 drivers/nvme/host/pci.c | 2 drivers/nvme/host/tcp.c | 4 drivers/nvme/target/tcp.c | 4 drivers/of/fdt.c | 12 drivers/pci/vpd.c | 1 drivers/phy/marvell/Kconfig | 4 drivers/platform/x86/pmc_atom.c | 28 drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 6 drivers/scsi/ibmvscsi/ibmvfc.c | 57 - drivers/scsi/jazz_esp.c | 4 drivers/scsi/sni_53c710.c | 5 drivers/scsi/sun3x_esp.c | 4 drivers/soc/aspeed/aspeed-lpc-snoop.c | 4 drivers/soc/qcom/mdt_loader.c | 17 drivers/soundwire/bus.c | 3 drivers/soundwire/stream.c | 10 drivers/spi/spi-fsl-lpspi.c | 2 drivers/spi/spi-stm32.c | 3 drivers/spi/spi.c | 9 drivers/staging/fwserial/fwserial.c | 10 drivers/staging/greybus/uart.c | 13 drivers/staging/media/omap4iss/iss.c | 4 drivers/staging/rtl8192u/r8192U_core.c | 2 drivers/tty/amiserial.c | 1 drivers/tty/moxa.c | 18 drivers/tty/serial/serial_core.c | 6 drivers/tty/serial/stm32-usart.c | 17 drivers/tty/serial/stm32-usart.h | 3 drivers/tty/tty_io.c | 8 drivers/usb/class/cdc-acm.c | 16 drivers/usb/dwc2/core_intr.c | 154 +-- drivers/usb/dwc2/hcd.c | 10 drivers/usb/gadget/udc/aspeed-vhub/core.c | 3 drivers/usb/gadget/udc/aspeed-vhub/epn.c | 2 drivers/usb/gadget/udc/fotg210-udc.c | 26 drivers/usb/gadget/udc/pch_udc.c | 49 drivers/usb/gadget/udc/r8a66597-udc.c | 2 drivers/usb/gadget/udc/snps_udc_plat.c | 4 drivers/usb/host/xhci-mtk-sch.c | 80 + drivers/usb/host/xhci-mtk.h | 6 drivers/usb/serial/ti_usb_3410_5052.c | 9 drivers/usb/serial/usb_wwan.c | 9 drivers/usb/typec/tcpm/tcpci.c | 21 drivers/usb/typec/tcpm/tcpm.c | 105 +- drivers/usb/usbip/vudc_sysfs.c | 2 drivers/vfio/mdev/mdev_sysfs.c | 2 fs/overlayfs/copy_up.c | 3 include/linux/hid.h | 2 include/linux/kvm_host.h | 4 include/linux/smp.h | 2 include/linux/spi/spi.h | 3 include/linux/tty_driver.h | 2 include/net/addrconf.h | 1 include/net/bluetooth/hci_core.h | 1 include/uapi/linux/tty_flags.h | 4 kernel/sched/debug.c | 42 kernel/smp.c | 10 kernel/up.c | 2 lib/bug.c | 33 mm/memory-failure.c | 2 mm/sparse.c | 1 net/bluetooth/hci_event.c | 3 net/bluetooth/hci_request.c | 12 net/bridge/br_multicast.c | 33 net/core/dev.c | 8 net/hsr/hsr_framereg.c | 3 net/ipv4/route.c | 42 net/ipv4/tcp_cong.c | 4 net/ipv6/mcast_snoop.c | 12 net/mac80211/main.c | 7 net/nfc/digital_dep.c | 2 net/nfc/llcp_sock.c | 4 net/sctp/socket.c | 38 net/vmw_vsock/vmci_transport.c | 3 net/wireless/scan.c | 2 samples/kfifo/bytestream-example.c | 8 samples/kfifo/inttype-example.c | 8 samples/kfifo/record-example.c | 8 sound/core/init.c | 2 sound/pci/hda/patch_realtek.c | 127 +- sound/soc/codecs/ak5558.c | 4 sound/soc/generic/audio-graph-card.c | 2 sound/soc/generic/simple-card.c | 2 sound/soc/intel/boards/kbl_da7219_max98927.c | 38 sound/soc/samsung/tm2_wm5110.c | 2 sound/usb/card.c | 14 sound/usb/midi.c | 2 sound/usb/quirks.c | 16 sound/usb/usbaudio.h | 2 tools/perf/trace/beauty/fsconfig.sh | 7 tools/perf/util/symbol_fprintf.c | 2 tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh | 2 virt/kvm/coalesced_mmio.c | 19 virt/kvm/kvm_main.c | 10 229 files changed, 2005 insertions(+), 1065 deletions(-)
Alexander Lobakin (1):
gro: fix napi_gro_frags() Fast GRO breakage due to IP alignment check
Andrew Scull (1):
bug: Remove redundant condition check in report_bug
Andy Shevchenko (4):
usb: gadget: pch_udc: Revert d3cb25a12138 completely
usb: gadget: pch_udc: Replace cpu_to_le32() by lower_32_bits()
usb: gadget: pch_udc: Check if driver is present before calling ->setup()
usb: gadget: pch_udc: Check for DMA mapping error
Antonio Borneo (1):
spi: stm32: drop devres version of spi_register_master
Archie Pusaka (1):
Bluetooth: verify AMP hci_chan before amp_destroy
Arnaldo Carvalho de Melo (1):
perf symbols: Fix dso__fprintf_symbols_by_name() to return the number of printed chars
Arnd Bergmann (2):
irqchip/gic-v3: Fix OF_BAD_ADDR error handling
smp: Fix smp_call_function_single_async prototype
Artur Petrosyan (2):
usb: dwc2: Fix host mode hibernation exit with remote wakeup flow.
usb: dwc2: Fix hibernation between host and device modes.
Arun Easi (1):
PCI: Allow VPD access for QLogic ISP2722
Athira Rajeev (1):
powerpc/perf: Fix PMU constraint check for EBB events
Badhri Jagan Sridharan (4):
usb: typec: tcpm: Address incorrect values of tcpm psy for fixed supply
usb: typec: tcpm: Address incorrect values of tcpm psy for pps supply
usb: typec: tcpm: update power supply once partner accepts
usb: typec: tcpci: Check ROLE_CONTROL while interpreting CC_STATUS
Bjorn Andersson (2):
soc: qcom: mdt_loader: Validate that p_filesz < p_memsz
soc: qcom: mdt_loader: Detect truncated read of segments
Boris Brezillon (2):
drm/panfrost: Clear MMU irqs before handling the fault drm/panfrost: Don't try to map pages that are already mapped
Brian King (1):
scsi: ibmvfc: Fix invalid state machine BUG_ON()
Chen Huang (1):
powerpc: Fix HAVE_HARDLOCKUP_DETECTOR_ARCH build configuration
Chen Hui (1):
clk: qcom: a53-pll: Add missing MODULE_DEVICE_TABLE
Christoph Hellwig (2):
md: split mddev_find
md: factor out a mddev_find_locked helper from mddev_find
Christophe Leroy (1):
powerpc/52xx: Fix an invalid ASM expression ('addi' used instead of 'add')
Chunfeng Yun (2):
usb: xhci-mtk: remove or operator for setting schedule parameters
usb: xhci-mtk: improve bandwidth scheduling with TT
Claudio Imbrenda (2):
KVM: s390: split kvm_s390_logical_to_effective
KVM: s390: split kvm_s390_real_to_absColin Ian King (13):
drm/radeon: fix copy of uninitialized variable back to userspace
memory: gpmc: fix out of bounds read and dereference on gpmc_cs[]
staging: rtl8192u: Fix potential infinite loop
usb: gadget: r8a66597: Add missing null check on return from platform_get_resource
media: vivid: fix assignment of dev->fbuf_out_flags
media: m88rs6000t: avoid potential out-of-bounds reads on arrays
clk: uniphier: Fix potential infinite loop
liquidio: Fix unintented sign extension of a left shift of a u16
mt7601u: fix always true expression
cxgb4: Fix unintentional sign extension issues
net: thunderx: Fix unintentional sign extension issue
ALSA: usb: midi: don't return -ENOMEM when usb_urb_ep_type_check fails
net: davinci_emac: Fix incorrect masking of tx and rx error channel
Cédric Le Goater (1):
powerpc/xive: Fix xmon command "dxi"
Dan Carpenter (10):
ipw2x00: potential buffer overflow in libipw_wx_set_encodeext()
ovl: fix missing revert_creds() on error path
mtd: rawnand: fsmc: Fix error code in fsmc_nand_probe()
node: fix device cleanups in error handling code
soc: aspeed: fix a ternary sign expansion bug
HSI: core: fix resource leaks in hsi_add_client_from_dt()
nfc: pn533: prevent potential memory corruption drm/i915/gvt: Fix error code in intel_gvt_init_device()
bnxt_en: fix ternary sign extension bug in bnxt_show_temp()
kfifo: fix ternary sign extension bugs
David Hildenbrand (1):
s390: fix detection of vector enhancements facility 1 vs. vector packed decimal facility
Dong Aisheng (1):
PM / devfreq: Use more accurate returned new_freq as resume_freq
Eric Dumazet (1):
inet: use bigger hash table for IP ID generation
Erwan Le Ray (2):
serial: stm32: fix incorrect characters on console
serial: stm32: fix tx_empty condition
Fabian Vogt (6):
fotg210-udc: Fix DMA on EP0 for length > max packet size
fotg210-udc: Fix EP0 IN requests bigger than two packets
fotg210-udc: Remove a dubious condition leading to fotg210_done
fotg210-udc: Mask GRP2 interrupts we don't handle
fotg210-udc: Don't DMA more than the buffer can take
fotg210-udc: Complete OUT requests on short packets
Fabrice Gasnier (1):
mfd: stm32-timers: Avoid clearing auto reload register
Felix Kuehling (1):
drm/amdkfd: fix build error with AMD_IOMMU_V2=m
Finn Thain (1):
m68k: mvme147,mvme16x: Don't wipe PCC timer config bits
Geert Uytterhoeven (1):
phy: marvell: ARMADA375_USBCLUSTER_PHY should not default to y, unconditionally
Giovanni Cabiddu (1):
crypto: qat - fix error path in adf_isr_resource_alloc()
Greg Kroah-Hartman (1):
Linux 5.4.119
Hannes Reinecke (1):
nvme: retrigger ANA log update if group descriptor isn't found
Hans Verkuil (1):
media: v4l2-ctrls.c: fix race condition in hdl->requests list
Hans de Goede (1):
misc: lis3lv02d: Fix false-positive WARN on various HP models
Harry Wentland (1):
drm/amd/display: Reject non-zero src_y and src_x for video planes
He Ying (1):
firmware: qcom-scm: Fix QCOM_SCM configuration
Heiko Carstens (1):
KVM: s390: fix guarded storage control register handling
Heming Zhao (1):
md-cluster: fix use-after-free issue when removing rdev
Ilya Lipnitskiy (3):
MIPS: pci-mt7620: fix PLL lock check
MIPS: pci-rt2880: fix slot 0 configuration
MIPS: pci-legacy: stop using of_pci_range_to_resource
Ingo Molnar (1):
x86/platform/uv: Fix !KEXEC build failure
Jae Hyun Yoo (2):
Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register"
media: aspeed: fix clock handling logic
Jan Glauber (1):
md: Fix missing unused status line of /proc/mdstat
Jane Chu (1):
mm/memory-failure: unnecessary amount of unmapping
Jason Gunthorpe (1):
vfio/mdev: Do not allow a mdev_type to have a NULL parent pointer
Jia Zhou (1):
ALSA: core: remove redundant spin_lock pair in snd_card_disconnect
Jia-Ju Bai (1):
media: platform: sunxi: sun6i-csi: fix error return code of sun6i_video_start_streaming()
Johan Hovold (15):
Revert "USB: cdc-acm: fix rounding error in TIOCSSERIAL"
tty: moxa: fix TIOCSSERIAL jiffies conversions
tty: amiserial: fix TIOCSSERIAL permission check
USB: serial: usb_wwan: fix TIOCSSERIAL jiffies conversions
staging: greybus: uart: fix TIOCSSERIAL jiffies conversions
USB: serial: ti_usb_3410_5052: fix TIOCSSERIAL permission check
staging: fwserial: fix TIOCSSERIAL jiffies conversions
tty: moxa: fix TIOCSSERIAL permission check
staging: fwserial: fix TIOCSSERIAL permission check
staging: greybus: uart: fix unprivileged TIOCCSERIAL
USB: cdc-acm: fix unprivileged TIOCCSERIAL
USB: cdc-acm: fix TIOCGSERIAL implementation
tty: actually undefine superseded ASYNC flags
tty: fix return value for unsupported ioctls
serial: core: return early on unsupported ioctls
Johannes Berg (2):
cfg80211: scan: drop entry from hidden_list on overflow
mac80211: bail out if cipher schemes are invalid
Jonathan Cameron (1):
iio:accel:adis16201: Fix wrong axis assignment that prevents loading
Jonathon Reinhart (1):
net: Only allow init netns to set default tcp cong to a restricted algo
Jordan Niethe (1):
powerpc/64s: Fix pte update for kernel memory on radix
Krzysztof Kozlowski (7):
ARM: dts: exynos: correct fuel gauge interrupt trigger level on Midas family
ARM: dts: exynos: correct MUIC interrupt trigger level on Midas family
ARM: dts: exynos: correct PMIC interrupt trigger level on Midas family
ARM: dts: exynos: correct PMIC interrupt trigger level on Odroid X/U3 family
ARM: dts: exynos: correct PMIC interrupt trigger level on SMDK5250
ARM: dts: exynos: correct PMIC interrupt trigger level on Snow
ASoC: simple-card: fix possible uninitialized single_cpu local variable
Kunihiko Hayashi (2):
ARM: dts: uniphier: Change phy-mode to RGMII-ID to enable delay pins for RTL8211E
arm64: dts: uniphier: Change phy-mode to RGMII-ID to enable delay pins for RTL8211E
Lin Ma (1):
bluetooth: eliminate the potential race condition when removing the HCI controller
Linus Lüssing (1):
net: bridge: mcast: fix broken length + header check for MRDv6 Adv.
Lukasz Majczak (1):
ASoC: Intel: kbl_da7219_max98927: Fix kabylake_ssp_fixup function
Lv Yunlong (8):
mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init
crypto: qat - Fix a double free in adf_create_ring drivers/block/null_blk/main: Fix a double free in null_init.
mwl8k: Fix a double Free in mwl8k_probe_hw net:emac/emac-mac: Fix a use after free in emac_mac_tx_buf_send RDMA/siw: Fix a use after free in siw_alloc_mr RDMA/bnxt_re: Fix a double free in bnxt_qplib_alloc_res net:nfc:digital: Fix a double free in digital_tg_recv_dep_req
Maciej W. Rozycki (1):
FDDI: defxx: Bail out gracefully with unassigned PCI resource for CSR
Manivannan Sadhasivam (2):
mtd: Handle possible -EPROBE_DEFER from parse_mtd_partitions()
mtd: rawnand: qcom: Return actual error code instead of -ENODEV
Marek Behún (2):
cpufreq: armada-37xx: Fix setting TBG parent for load levels
clk: mvebu: armada-37xx-periph: remove .set_parent method for CPU PM clock
Martin Schiller (1):
net: phy: intel-xway: enable integrated led functions
Masami Hiramatsu (1):
x86/kprobes: Fix to check non boostable prefixes correctly
Maxim Mikityanskiy (1):
HID: plantronics: Workaround for double volume key presses
Meng Li (1):
regmap: set debugfs_name to NULL after it is freed
Michael Chan (1):
bnxt_en: Fix RX consumer index logic in the error path.
Michael Kelley (1):
Drivers: hv: vmbus: Increase wait time for VMbus unload
Michael Walle (1):
mtd: require write permissions for locking and badblock ioctls
Nathan Chancellor (4):
ACPI: CPPC: Replace cppc_attr with kobj_attribute x86/events/amd/iommu: Fix sysfs type mismatch powerpc/fadump: Mark fadump_calculate_reserve_size as __init powerpc/prom: Mark identical_pvr_fixup as __init
Nicholas Piggin (1):
KVM: PPC: Book3S HV P9: Restore host CTRL SPR after guest exit
Niklas Cassel (1):
nvme-pci: don't simple map sgl when sgls are disabled
Or Cohen (1):
net/nfc: fix use-after-free llcp_sock_bind/connect
Otavio Pontes (1):
x86/microcode: Check for offline CPUs before requesting new microcode
Pali Rohár (5):
cpufreq: armada-37xx: Fix the AVS value for load L1
clk: mvebu: armada-37xx-periph: Fix switching CPU freq from 250 Mhz to 1 GHz
clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1 to L0
cpufreq: armada-37xx: Fix driver cleanup when registration failed
cpufreq: armada-37xx: Fix determining base CPU frequency
Pan Bian (1):
bus: qcom: Put child node before return
Paul Durrant (1):
xen-blkback: fix compatibility bug with single page rings
Petr Machata (1):
selftests: net: mirror_gre_vlan_bridge_1q: Make an FDB entry static
Phillip Potter (1):
net: geneve: modify IP header check in geneve6_xmit_skb and geneve_xmit_skb
Pierre-Louis Bossart (1):
ASoC: samsung: tm2_wm5110: check of of_parse return value
Ping-Ke Shih (2):
rtw88: Fix array overrun in rtw_get_tx_power_params()
rtlwifi: 8821ae: upgrade PHY and RF parameters
Potnuri Bharat Teja (1):
RDMA/cxgb4: add missing qpid increment
Qinglang Miao (4):
i2c: img-scb: fix reference leak when pm_runtime_get_sync fails
i2c: imx-lpi2c: fix reference leak when pm_runtime_get_sync fails
i2c: omap: fix reference leak when pm_runtime_get_sync fails
i2c: sprd: fix reference leak when pm_runtime_get_sync fails
Quanyang Wang (1):
clk: zynqmp: move zynqmp_pll_set_mode out of round_rate callback
Quentin Perret (2):
Revert "of/fdt: Make sure no-map does not remove already reserved regions" Revert "fdt: Properly handle "no-map" field in the memory region"
Rander Wang (1):
soundwire: stream: fix memory leak in stream config error path
Randy Dunlap (1):
powerpc: iommu: fix build when neither PCI or IBMVIO is set
Sagi Grimberg (2):
nvme-tcp: block BH in sk state_change sk callback
nvmet-tcp: fix incorrect locking in state_change sk callback
Salil Mehta (1):
net: hns3: Limiting the scope of vector_ring_chain variable
Sami Loone (1):
ALSA: hda/realtek: ALC285 Thinkpad jack pin quirk is unreachable
Sean Christopherson (2):
KVM: nVMX: Truncate bits 63:32 of VMCS field on nested check in !64-bit
KVM: Stop looking for coalesced MMIO zones if the bus is destroyed
Sergey Shtylyov (13):
pata_arasan_cf: fix IRQ check
pata_ipx4xx_cf: fix IRQ check
sata_mv: add IRQ checks
ata: libahci_platform: fix IRQ check
scsi: hisi_sas: Fix IRQ checks
scsi: jazz_esp: Add IRQ check
scsi: sun3x_esp: Add IRQ check
scsi: sni_53c710: Add IRQ check
i2c: cadence: add IRQ check
i2c: emev2: add IRQ check
i2c: jz4780: add IRQ check
i2c: sh7760: add IRQ check
i2c: sh7760: fix IRQ error path
Shawn Guo (1):
arm64: dts: qcom: sm8150: fix number of pins in 'gpio-ranges'
Shengjiu Wang (1):
ASoC: ak5558: correct reset polarity
Shuah Khan (1):
ath10k: Fix ath10k_wmi_tlv_op_pull_peer_stats_info() unlock without lock
Sindhu Devale (1):
RDMA/i40iw: Fix error unwinding when i40iw_hmc_sd_one fails
Srinivas Kandagatla (1):
soundwire: bus: Fix device found flag correctly
Stefano Garzarella (1):
vsock/vmci: log once the failed queue pair allocation
Steffen Dirkwinkel (1):
platform/x86: pmc_atom: Match all Beckhoff Automation baytrail boards with critclk_systems DMI table
Sudhakar Panneerselvam (1):
md/bitmap: wait for external bitmap writes to complete during tear down
Taehee Yoo (1):
hsr: use netdev_err() instead of WARN_ONCE()
Takashi Iwai (13):
ALSA: hda/realtek: Re-order ALC882 Acer quirk table entries
ALSA: hda/realtek: Re-order ALC882 Sony quirk table entries
ALSA: hda/realtek: Re-order ALC882 Clevo quirk table entries
ALSA: hda/realtek: Re-order ALC269 HP quirk table entries
ALSA: hda/realtek: Re-order ALC269 Acer quirk table entries
ALSA: hda/realtek: Re-order ALC269 Dell quirk table entries
ALSA: hda/realtek: Re-order ALC269 ASUS quirk table entries
ALSA: hda/realtek: Re-order ALC269 Sony quirk table entries
ALSA: hda/realtek: Re-order ALC269 Lenovo quirk table entries
ALSA: hda/realtek: Re-order remaining ALC269 quirk table entries
ALSA: hda/realtek: Re-order ALC662 quirk table entries
ALSA: hda/realtek: Remove redundant entry for ALC861 Haier/Uniwill devices
ALSA: usb-audio: Add error checks for usb_driver_claim_interface() calls
Tao Ren (1):
usb: gadget: aspeed: fix dma map failure
Tetsuo Handa (3):
misc: vmw_vmci: explicitly initialize vmci_notify_bm_set_msg struct
misc: vmw_vmci: explicitly initialize vmci_datagram payload
ttyprintk: Add TTY hangup callback.
Toke Høiland-Jørgensen (1):
ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices
Tong Zhang (2):
crypto: qat - don't release uninitialized resources
crypto: qat - ADF_STATUS_PF_RUNNING should be set after adf_dev_init
Tyrel Datwyler (1):
powerpc/pseries: extract host bridge from pci_bus prior to bus removal
Vitaly Chikunov (1):
perf beauty: Fix fsconfig generator
Vladimir Barinov (1):
arm64: dts: renesas: r8a77980: Fix vin4-7 endpoint binding
Waiman Long (1):
sched/debug: Fix cgroup_path[] serialization
Wang Li (1):
spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware()
Wang Wensheng (4):
RDMA/qedr: Fix error return code in qedr_iw_connect() IB/hfi1: Fix error return code in parse_platform_config() RDMA/srpt: Fix error return code in srpt_cm_req_recv() mm/sparse: add the missing sparse_buffer_fini() in error branch
William A. Kennington III (1):
spi: Fix use-after-free with devm_spi_alloc_*
Xie He (1):
net: lapbether: Prevent racing when checking whether the netif is running
Xin Long (2):
Revert "net/sctp: fix race condition in sctp_destroy_sock"
sctp: delay auto_asconf init until binding the first addr
Yang Yingliang (2):
USB: gadget: udc: fix wrong pointer passed to IS_ERR() and PTR_ERR()
media: omap4iss: return error code when omap4iss_get() failed
Ye Bin (1):
usbip: vudc: fix missing unlock on error in usbip_sockfd_store()
Yoshihiro Shimoda (1):
net: renesas: ravb: Fix a stuck issue when a lot of frames are received
Zhao Heming (1):
md: md_open returns -EBUSY when entering racing area
gexueyuan (1):
memory: pl353: fix mask of ECC page_size config register
Álvaro Fernández Rojas (2):
mtd: rawnand: brcmnand: fix OOB R/W with Hamming ECC
mips: bmips: fix syscon-reboot nodes
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 118 +SUBLEVEL = 119 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/exynos4412-midas.dtsi +3 -3
@@ -139,7 +139,7 @@ max77693@66 { compatible = "maxim,max77693"; interrupt-parent = <&gpx1>; - interrupts = <5 IRQ_TYPE_EDGE_FALLING>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77693_irq>; reg = <0x66>;
@@ -187,7 +187,7 @@ max77693-fuel-gauge@36 { compatible = "maxim,max17047"; interrupt-parent = <&gpx2>; - interrupts = <3 IRQ_TYPE_EDGE_FALLING>; + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77693_fuel_irq>; reg = <0x36>;
@@ -588,7 +588,7 @@ max77686: max77686_pmic@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&max77686_irq>; pinctrl-names = "default"; reg = <0x09>;
arch/arm/boot/dts/exynos4412-odroid-common.dtsi +1 -1
@@ -274,7 +274,7 @@ max77686: pmic@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; reg = <0x09>;
arch/arm/boot/dts/exynos5250-smdk5250.dts +1 -1
@@ -133,7 +133,7 @@ compatible = "maxim,max77686"; reg = <0x09>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; wakeup-source;
arch/arm/boot/dts/exynos5250-snow-common.dtsi +1 -1
@@ -292,7 +292,7 @@ max77686: max77686@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; wakeup-source;
arch/arm/boot/dts/uniphier-pxs2.dtsi +1 -1
@@ -571,7 +571,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>;
arch/arm64/boot/dts/qcom/sm8150.dtsi +1 -1
@@ -336,7 +336,7 @@ <0x0 0x03D00000 0x0 0x300000>; reg-names = "west", "east", "north", "south"; interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; - gpio-ranges = <&tlmm 0 0 175>; + gpio-ranges = <&tlmm 0 0 176>; gpio-controller; #gpio-cells = <2>; interrupt-controller;
arch/arm64/boot/dts/renesas/r8a77980.dtsi +8 -8
@@ -990,8 +990,8 @@ reg = <1>; - vin4csi41: endpoint@2 { - reg = <2>; + vin4csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin4>; }; };
@@ -1018,8 +1018,8 @@ reg = <1>; - vin5csi41: endpoint@2 { - reg = <2>; + vin5csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin5>; }; };
@@ -1046,8 +1046,8 @@ reg = <1>; - vin6csi41: endpoint@2 { - reg = <2>; + vin6csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin6>; }; };
@@ -1074,8 +1074,8 @@ reg = <1>; - vin7csi41: endpoint@2 { - reg = <2>; + vin7csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin7>; }; };
arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi +1 -1
@@ -718,7 +718,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>;
arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi +2 -2
@@ -509,7 +509,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>;
@@ -530,7 +530,7 @@ clocks = <&sys_clk 7>; reset-names = "ether"; resets = <&sys_rst 7>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 1>;
arch/m68k/include/asm/mvme147hw.h +3 -0
@@ -66,6 +66,9 @@ struct pcc_regs {#define PCC_INT_ENAB 0x08#define PCC_TIMER_INT_CLR 0x80 + +#define PCC_TIMER_TIC_EN 0x01 +#define PCC_TIMER_COC_EN 0x02#define PCC_TIMER_CLR_OVF 0x04#define PCC_LEVEL_ABORT 0x07
arch/m68k/mvme147/config.c +8 -6
@@ -117,8 +117,10 @@ static irqreturn_t mvme147_timer_int (int irq, void *dev_id)unsigned long flags;local_irq_save (flags); - m147_pcc->t1_int_cntrl =PCC_TIMER_INT_CLR ; - m147_pcc->t1_cntrl =PCC_TIMER_CLR_OVF ; + m147_pcc->t1_cntrl =PCC_TIMER_CLR_OVF |PCC_TIMER_COC_EN | +PCC_TIMER_TIC_EN ; + m147_pcc->t1_int_cntrl =PCC_INT_ENAB |PCC_TIMER_INT_CLR | +PCC_LEVEL_TIMER1 ; clk_total +=PCC_TIMER_CYCLES ;timer_routine (0 ,NULL );local_irq_restore (flags);
@@ -136,10 +138,10 @@ void mvme147_sched_init (irq_handler_t timer_routine)/* Init the clock with a value */ /* The clock counter increments until 0xFFFF then reloads */ m147_pcc->t1_preload =PCC_TIMER_PRELOAD ; - m147_pcc->t1_cntrl =0x0 ;/* clear timer */ - m147_pcc->t1_cntrl =0x3 ;/* start timer */ - m147_pcc->t1_int_cntrl =PCC_TIMER_INT_CLR ;/* clear pending ints */ - m147_pcc->t1_int_cntrl =PCC_INT_ENAB |PCC_LEVEL_TIMER1 ; + m147_pcc->t1_cntrl =PCC_TIMER_CLR_OVF |PCC_TIMER_COC_EN | +PCC_TIMER_TIC_EN ; + m147_pcc->t1_int_cntrl =PCC_INT_ENAB |PCC_TIMER_INT_CLR | +PCC_LEVEL_TIMER1 ;clocksource_register_hz (&mvme147_clk,PCC_TIMER_CLOCK_FREQ ); }
arch/m68k/mvme16x/config.c +8 -6
@@ -368,6 +368,7 @@ static u32 clk_total;#define PCCTOVR1_COC_EN 0x02#define PCCTOVR1_OVR_CLR 0x04 +#define PCCTIC1_INT_LEVEL 6#define PCCTIC1_INT_CLR 0x08#define PCCTIC1_INT_EN 0x10
@@ -377,8 +378,8 @@ static irqreturn_t mvme16x_timer_int (int irq, void *dev_id)unsigned long flags;local_irq_save (flags); -out_8 (PCCTIC1 ,in_8 (PCCTIC1 ) |PCCTIC1_INT_CLR ); -out_8 (PCCTOVR1 ,PCCTOVR1_OVR_CLR ); +out_8 (PCCTOVR1 ,PCCTOVR1_OVR_CLR |PCCTOVR1_TIC_EN |PCCTOVR1_COC_EN ); +out_8 (PCCTIC1 ,PCCTIC1_INT_EN |PCCTIC1_INT_CLR |PCCTIC1_INT_LEVEL ); clk_total +=PCC_TIMER_CYCLES ;timer_routine (0 ,NULL );local_irq_restore (flags);
@@ -392,14 +393,15 @@ void mvme16x_sched_init (irq_handler_t timer_routine)int irq;/* Using PCCchip2 or MC2 chip tick timer 1 */ -out_be32 (PCCTCNT1 ,0 ); -out_be32 (PCCTCMP1 ,PCC_TIMER_CYCLES ); -out_8 (PCCTOVR1 ,in_8 (PCCTOVR1 ) |PCCTOVR1_TIC_EN |PCCTOVR1_COC_EN ); -out_8 (PCCTIC1 ,PCCTIC1_INT_EN |6 );if (request_irq (MVME16x_IRQ_TIMER, mvme16x_timer_int,IRQF_TIMER ,"timer" , timer_routine))panic ("Couldn't register timer int" ); +out_be32 (PCCTCNT1 ,0 ); +out_be32 (PCCTCMP1 ,PCC_TIMER_CYCLES ); +out_8 (PCCTOVR1 ,PCCTOVR1_OVR_CLR |PCCTOVR1_TIC_EN |PCCTOVR1_COC_EN ); +out_8 (PCCTIC1 ,PCCTIC1_INT_EN |PCCTIC1_INT_CLR |PCCTIC1_INT_LEVEL ); +clocksource_register_hz (&mvme16x_clk,PCC_TIMER_CLOCK_FREQ );if (brdno ==0x0162 || brdno ==0x172 )
arch/mips/boot/dts/brcm/bcm3368.dtsi +1 -1
@@ -59,7 +59,7 @@ periph_cntl: syscon@fff8c008 { compatible = "syscon"; - reg = <0xfff8c000 0x4>; + reg = <0xfff8c008 0x4>; native-endian; };
arch/mips/boot/dts/brcm/bcm63268.dtsi +1 -1
@@ -59,7 +59,7 @@ periph_cntl: syscon@10000008 { compatible = "syscon"; - reg = <0x10000000 0xc>; + reg = <0x10000008 0x4>; native-endian; };
arch/mips/boot/dts/brcm/bcm6358.dtsi +1 -1
@@ -59,7 +59,7 @@ periph_cntl: syscon@fffe0008 { compatible = "syscon"; - reg = <0xfffe0000 0x4>; + reg = <0xfffe0008 0x4>; native-endian; };
arch/mips/boot/dts/brcm/bcm6362.dtsi +1 -1
@@ -59,7 +59,7 @@ periph_cntl: syscon@10000008 { compatible = "syscon"; - reg = <0x10000000 0xc>; + reg = <0x10000008 0x4>; native-endian; };
arch/mips/boot/dts/brcm/bcm6368.dtsi +1 -1
@@ -59,7 +59,7 @@ periph_cntl: syscon@100000008 { compatible = "syscon"; - reg = <0x10000000 0xc>; + reg = <0x10000008 0x4>; native-endian; };
arch/mips/pci/pci-legacy.c +7 -2
@@ -166,8 +166,13 @@ void pci_load_of_ranges(struct pci_controller *hose, struct device_node *node) res = hose->mem_resource;break ; } -if (res !=NULL ) -of_pci_range_to_resource (&range, node, res); +if (res !=NULL ) { + res->name = node->full_name; + res->flags = range.flags; + res->start = range.cpu_addr; + res->end = range.cpu_addr + range.size -1 ; + res->parent = res->child = res->sibling =NULL ; + } } }
arch/mips/pci/pci-mt7620.c +3 -2
@@ -30,6 +30,7 @@#define RALINK_GPIOMODE 0x60#define PPLL_CFG1 0x9c +#define PPLL_LD BIT(23)#define PPLL_DRV 0xa0#define PDRV_SW_SET BIT(31)
@@ -239,8 +240,8 @@ static int mt7620_pci_hw_init(struct platform_device *pdev)rt_sysc_m32 (0 ,RALINK_PCIE0_CLK_EN ,RALINK_CLKCFG1 );mdelay (100 ); -if (!(rt_sysc_r32 (PPLL_CFG1 ) &PDRV_SW_SET )) { -dev_err (&pdev->dev,"MT7620 PPLL unlock\n" ); +if (!(rt_sysc_r32 (PPLL_CFG1 ) &PPLL_LD )) { +dev_err (&pdev->dev,"pcie PLL not locked, aborting init\n" );reset_control_assert (rstpcie0);rt_sysc_m32 (RALINK_PCIE0_CLK_EN ,0 ,RALINK_CLKCFG1 );return -1 ;
arch/mips/pci/pci-rt2880.c +24 -13
@@ -180,7 +180,6 @@ static inline void rt2880_pci_write_u32(unsigned long reg, u32 val)int pcibios_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) { -u16 cmd;int irq =-1 ;if (dev->bus->number !=0 )
@@ -188,8 +187,6 @@ int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)switch (PCI_SLOT (dev->devfn)) {case 0x00 : -rt2880_pci_write_u32 (PCI_BASE_ADDRESS_0 ,0x08000000 ); - (void )rt2880_pci_read_u32 (PCI_BASE_ADDRESS_0 );break ;case 0x11 : irq =RT288X_CPU_IRQ_PCI ;
@@ -201,16 +198,6 @@ int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)break ; } -pci_write_config_byte ((struct pci_dev *) dev, -PCI_CACHE_LINE_SIZE ,0x14 ); -pci_write_config_byte ((struct pci_dev *) dev,PCI_LATENCY_TIMER ,0xFF ); -pci_read_config_word ((struct pci_dev *) dev,PCI_COMMAND , &cmd); - cmd |=PCI_COMMAND_MASTER |PCI_COMMAND_IO |PCI_COMMAND_MEMORY | -PCI_COMMAND_INVALIDATE |PCI_COMMAND_FAST_BACK | -PCI_COMMAND_SERR |PCI_COMMAND_WAIT |PCI_COMMAND_PARITY ; -pci_write_config_word ((struct pci_dev *) dev,PCI_COMMAND , cmd); -pci_write_config_byte ((struct pci_dev *) dev,PCI_INTERRUPT_LINE , - dev->irq);return irq; }
@@ -251,6 +238,30 @@ static int rt288x_pci_probe(struct platform_device *pdev)int pcibios_plat_dev_init (struct pci_dev *dev) { +static bool slot0_init; + +/* +* Nobody seems to initialize slot 0, but this platform requires it, so +* do it once when some other slot is being enabled. The PCI subsystem +* should configure other slots properly, so no need to do anything +* special for those. +*/ +if (!slot0_init && dev->bus->number ==0 ) { +u16 cmd; +u32 bar0; + + slot0_init = true; + +pci_bus_write_config_dword (dev->bus,0 ,PCI_BASE_ADDRESS_0 , +0x08000000 ); +pci_bus_read_config_dword (dev->bus,0 ,PCI_BASE_ADDRESS_0 , + &bar0); + +pci_bus_read_config_word (dev->bus,0 ,PCI_COMMAND , &cmd); + cmd |=PCI_COMMAND_MASTER |PCI_COMMAND_IO |PCI_COMMAND_MEMORY ; +pci_bus_write_config_word (dev->bus,0 ,PCI_COMMAND , cmd); + } +return 0 ; }
arch/powerpc/Kconfig +1 -1
@@ -214,7 +214,7 @@ config PPC select HAVE_MEMBLOCK_NODE_MAP select HAVE_MOD_ARCH_SPECIFIC select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S) - select HAVE_HARDLOCKUP_DETECTOR_ARCH if (PPC64 && PPC_BOOK3S) + select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP select HAVE_OPROFILE select HAVE_OPTPROBES if PPC64 select HAVE_PERF_EVENTS
arch/powerpc/Kconfig.debug +1 -0
@@ -352,6 +352,7 @@ config PPC_EARLY_DEBUG_CPM_ADDR config FAIL_IOMMU bool "Fault-injection capability for IOMMU" depends on FAULT_INJECTION + depends on PCI || IBMVIO help Provide fault-injection capability for IOMMU. Each device can be selectively enabled via the fail_iommu property.
arch/powerpc/include/asm/book3s/64/radix.h +4 -2
@@ -206,8 +206,10 @@ static inline void radix__set_pte_at(struct mm_struct *mm, unsigned long addr,* from ptesync, it should probably go into update_mmu_cache, rather * than set_pte_at (which is used to set ptes unrelated to faults). * -* Spurious faults to vmalloc region are not tolerated, so there is -* a ptesync in flush_cache_vmap. +* Spurious faults from the kernel memory are not tolerated, so there +* is a ptesync in flush_cache_vmap, and __map_kernel_page() follows +* the pte update sequence from ISA Book III 6.10 Translation Table +* Update Synchronization Requirements. */ }
arch/powerpc/kernel/fadump.c +1 -1
@@ -279,7 +279,7 @@ static void fadump_show_config(void)* that is required for a kernel to boot successfully. * */ -static inline u64 fadump_calculate_reserve_size (void ) +static __init u64 fadump_calculate_reserve_size (void ) {u64 base, size, bootmem_min;int ret;
arch/powerpc/kernel/prom.c +1 -1
@@ -266,7 +266,7 @@ static struct feature_property { };#if defined(CONFIG_44x) && defined(CONFIG_PPC_FPU ) -static inline void identical_pvr_fixup (unsigned long node) +static __init void identical_pvr_fixup (unsigned long node) {unsigned int pvr;const char *model =of_get_flat_dt_prop (node,"model" ,NULL );
arch/powerpc/kvm/book3s_hv.c +3 -0
@@ -3638,7 +3638,10 @@ int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, vcpu->arch.dec_expires = dec + tb; vcpu->cpu =-1 ; vcpu->arch.thread_cpu =-1 ; +/* Save guest CTRL register, set runlatch to 1 */ vcpu->arch.ctrl =mfspr (SPRN_CTRLF ); +if (!(vcpu->arch.ctrl &1 )) +mtspr (SPRN_CTRLT , vcpu->arch.ctrl |1 ); vcpu->arch.iamr =mfspr (SPRN_IAMR ); vcpu->arch.pspb =mfspr (SPRN_PSPB );
arch/powerpc/mm/book3s64/radix_pgtable.c +2 -2
@@ -97,7 +97,7 @@ static int early_map_kernel_page(unsigned long ea, unsigned long pa, set_the_pte:set_pte_at (&init_mm, ea, ptep,pfn_pte (pfn, flags)); -smp_wmb (); + asmvolatile ("ptesync" : : :"memory" );return 0 ; }
@@ -155,7 +155,7 @@ static int __map_kernel_page(unsigned long ea, unsigned long pa, set_the_pte:set_pte_at (&init_mm, ea, ptep,pfn_pte (pfn, flags)); -smp_wmb (); + asmvolatile ("ptesync" : : :"memory" );return 0 ; }
arch/powerpc/perf/isa207-common.c +2 -2
@@ -363,8 +363,8 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp)* EBB events are pinned & exclusive, so this should never actually * hit, but we leave it as a fallback in case. */ - mask |=CNST_EBB_VAL (ebb); - value |=CNST_EBB_MASK ; + mask |=CNST_EBB_MASK ; + value |=CNST_EBB_VAL (ebb); *maskp = mask; *valp = value;
arch/powerpc/platforms/52xx/lite5200_sleep.S +1 -1
@@ -181,7 +181,7 @@ sram_code: udelay: /* r11 - tb_ticks_per_usec, r12 - usecs, overwrites r13 */ mullw r12, r12, r11 mftb r13 /* start */ - addi r12, r13, r12 /* end */ + add r12, r13, r12 /* end */ 1: mftb r13 /* current */ cmp cr0, r13, r12
arch/powerpc/platforms/pseries/pci_dlpar.c +3 -1
@@ -66,6 +66,7 @@ EXPORT_SYMBOL_GPL(init_phb_dynamic);int remove_phb_dynamic (struct pci_controller *phb) {struct pci_bus *b = phb->bus; +struct pci_host_bridge *host_bridge =to_pci_host_bridge (b->bridge);struct resource *res;int rc, i;
@@ -92,7 +93,8 @@ int remove_phb_dynamic(struct pci_controller *phb)/* Remove the PCI bus and unregister the bridge device from sysfs */ phb->bus =NULL ;pci_remove_bus (b); -device_unregister (b->bridge); + host_bridge->bus =NULL ; +device_unregister (&host_bridge->dev);/* Now release the IO resource */ if (res->flags &IORESOURCE_IO )
arch/powerpc/sysdev/xive/common.c +10 -4
@@ -257,17 +257,20 @@ notrace void xmon_xive_do_dump(int cpu)xmon_printf ("\n" ); } +static struct irq_data *xive_get_irq_data (u32 hw_irq) +{ +unsigned int irq =irq_find_mapping (xive_irq_domain, hw_irq); + +return irq ?irq_get_irq_data (irq) :NULL ; +} +int xmon_xive_get_irq_config (u32 hw_irq,struct irq_data *d) { -struct irq_chip *chip =irq_data_get_irq_chip (d);int rc;u32 target;u8 prio;u32 lirq; -if (!is_xive_irq (chip)) -return -EINVAL ; - rc = xive_ops->get_irq_config (hw_irq, &target, &prio, &lirq);if (rc) {xmon_printf ("IRQ 0x%08x : no config rc=%d\n" , hw_irq, rc);
@@ -277,6 +280,9 @@ int xmon_xive_get_irq_config(u32 hw_irq, struct irq_data *d)xmon_printf ("IRQ 0x%08x : target=0x%x prio=%02x lirq=0x%x " , hw_irq, target, prio, lirq); +if (!d) + d =xive_get_irq_data (hw_irq); +if (d) {struct xive_irq_data *xd =irq_data_get_irq_handler_data (d);u64 val =xive_esb_read (xd,XIVE_ESB_GET );
arch/s390/kernel/setup.c +2 -2
@@ -922,9 +922,9 @@ static int __init setup_hwcaps(void)if (MACHINE_HAS_VX ) { elf_hwcap |=HWCAP_S390_VXRS ;if (test_facility (134 )) - elf_hwcap |=HWCAP_S390_VXRS_EXT ; -if (test_facility (135 )) elf_hwcap |=HWCAP_S390_VXRS_BCD ; +if (test_facility (135 )) + elf_hwcap |=HWCAP_S390_VXRS_EXT ;if (test_facility (148 )) elf_hwcap |=HWCAP_S390_VXRS_EXT2 ;if (test_facility (152 ))
arch/s390/kvm/gaccess.h +41 -13
77 lines not on this page · raw message
arch/s390/kvm/kvm-s390.c +2 -2
@@ -3980,16 +3980,16 @@ static void store_regs(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) current->thread.fpu.fpc = vcpu->arch.host_fpregs.fpc; current->thread.fpu.regs = vcpu->arch.host_fpregs.regs;if (MACHINE_HAS_GS ) { +preempt_disable ();__ctl_set_bit (2 ,4 );if (vcpu->arch.gs_enabled)save_gs_cb (current->thread.gs_cb); -preempt_disable (); current->thread.gs_cb = vcpu->arch.host_gscb;restore_gs_cb (vcpu->arch.host_gscb); -preempt_enable ();if (!vcpu->arch.host_gscb)__ctl_clear_bit (2 ,4 ); vcpu->arch.host_gscb =NULL ; +preempt_enable (); }/* SIE will save etoken directly into SDNX and therefore kvm_run */ }
arch/x86/Kconfig +1 -0
@@ -550,6 +550,7 @@ config X86_UV depends on X86_EXTENDED_PLATFORM depends on NUMA depends on EFI + depends on KEXEC_CORE depends on X86_X2APIC depends on PCI ---help---
arch/x86/events/amd/iommu.c +3 -3
@@ -81,12 +81,12 @@ static struct attribute_group amd_iommu_events_group = { };struct amd_iommu_event_desc { -struct kobj_attribute attr; +struct device_attribute attr;const char *event; }; -static ssize_t _iommu_event_show (struct kobject *kobj, -struct kobj_attribute *attr,char *buf) +static ssize_t _iommu_event_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct amd_iommu_event_desc *event = container_of(attr, struct amd_iommu_event_desc, attr);
arch/x86/kernel/cpu/microcode/core.c +4 -4
@@ -626,16 +626,16 @@ static ssize_t reload_store(struct device *dev,if (val !=1 )return size; - tmp_ret = microcode_ops->request_microcode_fw (bsp, µcode_pdev->dev, true); -if (tmp_ret !=UCODE_NEW ) -return size; -get_online_cpus (); ret =check_online_cpus ();if (ret) goto put; + tmp_ret = microcode_ops->request_microcode_fw (bsp, µcode_pdev->dev, true); +if (tmp_ret !=UCODE_NEW ) + goto put; +mutex_lock (µcode_mutex); ret =microcode_reload_late ();mutex_unlock (µcode_mutex);
arch/x86/kernel/kprobes/core.c +12 -5
@@ -157,6 +157,8 @@ NOKPROBE_SYMBOL(skip_prefixes);int can_boost (struct insn *insn,void *addr) {kprobe_opcode_t opcode; +insn_byte_t prefix; +int i;if (search_exception_tables ((unsigned long )addr))return 0 ;/* Page fault may occur on this address. */
@@ -169,9 +171,14 @@ int can_boost(struct insn *insn, void *addr)if (insn->opcode.nbytes !=1 )return 0 ; -/* Can't boost Address-size override prefix */ -if (unlikely (inat_is_address_size_prefix (insn->attr))) -return 0 ; +for_each_insn_prefix (insn, i, prefix) { +insn_attr_t attr; + + attr =inat_get_opcode_attribute (prefix); +/* Can't boost Address-size override prefix and CS override prefix */ +if (prefix ==0x2e ||inat_is_address_size_prefix (attr)) +return 0 ; + } opcode = insn->opcode.bytes[0 ];
@@ -196,8 +203,8 @@ int can_boost(struct insn *insn, void *addr)/* clear and set flags are boostable */ return (opcode ==0xf5 || (0xf7 < opcode && opcode <0xfe ));default : -/* CS override prefix and call are not boostable */ -return (opcode !=0x2e && opcode !=0x9a ); +/* call is not boostable */ +return opcode !=0x9a ; } }
arch/x86/kvm/vmx/nested.c +1 -1
@@ -5308,7 +5308,7 @@ static bool nested_vmx_exit_handled_vmcs_access(struct kvm_vcpu *vcpu,/* Decode instruction info and find the field to access */ vmx_instruction_info =vmcs_read32 (VMX_INSTRUCTION_INFO ); - field =kvm_register_read (vcpu, (((vmx_instruction_info) >>28 ) &0xf )); + field =kvm_register_readl (vcpu, (((vmx_instruction_info) >>28 ) &0xf ));/* Out-of-range fields always cause a VM exit from L2 to L1 */ if (field >>15 )
drivers/acpi/cppc_acpi.c +3 -11
@@ -118,23 +118,15 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);*/ #define NUM_RETRIES 500ULL -struct cppc_attr { -struct attribute attr; -ssize_t (*show)(struct kobject *kobj, -struct attribute *attr,char *buf); -ssize_t (*store)(struct kobject *kobj, -struct attribute *attr,const char *c,ssize_t count); -}; -#define define_one_cppc_ro (_name) \ -static struct cppc_attr _name = \ +static struct kobj_attribute _name = \ __ATTR(_name, 0444, show_##_name, NULL)#define to_cpc_desc (a) container_of(a, struct cpc_desc, kobj)#define show_cppc_data (access_fn, struct_name, member_name) \ static ssize_t show_##member_name(struct kobject *kobj, \ - struct attribute *attr, char *buf) \ + struct kobj_attribute *attr, char *buf) \ { \ struct cpc_desc *cpc_ptr = to_cpc_desc(kobj); \ struct struct_name st_name = {0}; \
@@ -160,7 +152,7 @@ show_cppc_data(cppc_get_perf_ctrs, cppc_perf_fb_ctrs, reference_perf);show_cppc_data (cppc_get_perf_ctrs, cppc_perf_fb_ctrs, wraparound_time);static ssize_t show_feedback_ctrs (struct kobject *kobj, -struct attribute *attr,char *buf) +struct kobj_attribute *attr,char *buf) {struct cpc_desc *cpc_ptr =to_cpc_desc (kobj);struct cppc_perf_fb_ctrs fb_ctrs = {0 };
drivers/ata/libahci_platform.c +3 -1
@@ -582,11 +582,13 @@ int ahci_platform_init_host(struct platform_device *pdev,int i, irq, n_ports, rc; irq =platform_get_irq (pdev,0 ); -if (irq <=0 ) { +if (irq <0 ) {if (irq != -EPROBE_DEFER )dev_err (dev,"no irq\n" );return irq; } +if (!irq) +return -EINVAL ; hpriv->irq = irq;
drivers/ata/pata_arasan_cf.c +11 -4
@@ -817,12 +817,19 @@ static int arasan_cf_probe(struct platform_device *pdev)else quirk =CF_BROKEN_UDMA ;/* as it is on spear1340 */ -/* if irq is 0, support only PIO */ - acdev->irq =platform_get_irq (pdev,0 ); -if (acdev->irq) +/* +* If there's an error getting IRQ (or we do get IRQ0), +* support only PIO +*/ + ret =platform_get_irq (pdev,0 ); +if (ret >0 ) { + acdev->irq = ret; irq_handler = arasan_cf_interrupt; -else + }else if (ret == -EPROBE_DEFER ) { +return ret; + }else { quirk |=CF_BROKEN_MWDMA |CF_BROKEN_UDMA ; + } acdev->pbase = res->start; acdev->vbase = devm_ioremap_nocache(&pdev->dev, res->start,
drivers/ata/pata_ixp4xx_cf.c +5 -1
@@ -165,8 +165,12 @@ static int ixp4xx_pata_probe(struct platform_device *pdev)return -ENOMEM ; irq =platform_get_irq (pdev,0 ); -if (irq) +if (irq >0 )irq_set_irq_type (irq,IRQ_TYPE_EDGE_RISING ); +else if (irq <0 ) +return irq; +else +return -EINVAL ;/* Setup expansion bus chip selects */ *data->cs0_cfg = data->cs0_bits;
drivers/ata/sata_mv.c +4 -0
@@ -4097,6 +4097,10 @@ static int mv_platform_probe(struct platform_device *pdev) n_ports = mv_platform_data->n_ports; irq =platform_get_irq (pdev,0 ); } +if (irq <0 ) +return irq; +if (!irq) +return -EINVAL ; host =ata_host_alloc_pinfo (&pdev->dev, ppi, n_ports); hpriv =devm_kzalloc (&pdev->dev,sizeof (*hpriv),GFP_KERNEL );
drivers/base/node.c +12 -14
@@ -262,21 +262,20 @@ static void node_init_cache_dev(struct node *node)if (!dev)return ; +device_initialize (dev); dev->parent = &node->dev; dev->release = node_cache_release;if (dev_set_name (dev,"memory_side_cache" )) - goto free_dev; + goto put_device; -if (device_register (dev)) - goto free_name; +if (device_add (dev)) + goto put_device;pm_runtime_no_callbacks (dev); node->cache_dev = dev;return ; -free_name: -kfree_const (dev->kobj.name); -free_dev: -kfree (dev); +put_device: +put_device (dev); }/**
@@ -313,25 +312,24 @@ void node_add_cache(unsigned int nid, struct node_cache_attrs *cache_attrs)return ; dev = &info->dev; +device_initialize (dev); dev->parent = node->cache_dev; dev->release = node_cacheinfo_release; dev->groups = cache_groups;if (dev_set_name (dev,"index%d" , cache_attrs->level)) - goto free_cache; + goto put_device; info->cache_attrs = *cache_attrs; -if (device_register (dev)) { +if (device_add (dev)) {dev_warn (&node->dev,"failed to add cache level:%d\n" , cache_attrs->level); - goto free_name; + goto put_device; }pm_runtime_no_callbacks (dev);list_add_tail (&info->node, &node->cache_attrs);return ; -free_name: -kfree_const (dev->kobj.name); -free_cache: -kfree (info); +put_device: +put_device (dev); }static void node_remove_caches (struct node *node)
drivers/base/regmap/regmap-debugfs.c +1 -0
@@ -661,6 +661,7 @@ void regmap_debugfs_exit(struct regmap *map)regmap_debugfs_free_dump_cache (map);mutex_unlock (&map->cache_lock);kfree (map->debugfs_name); + map->debugfs_name =NULL ; }else {struct regmap_debugfs_node *node, *tmp;
drivers/block/null_blk_zoned.c +1 -0
@@ -73,6 +73,7 @@ int null_zone_init(struct nullb_device *dev)void null_zone_exit (struct nullb_device *dev) {kvfree (dev->zones); + dev->zones =NULL ; } int null_zone_report(struct gendisk *disk, sector_t sector,
drivers/block/xen-blkback/common.h +1 -0
@@ -316,6 +316,7 @@ struct xen_blkif {struct work_struct free_work;unsigned int nr_ring_pages; +bool multi_ref;/* All rings for this device. */ struct xen_blkif_ring *rings;unsigned int nr_rings;
drivers/block/xen-blkback/xenbus.c +16 -22
@@ -949,14 +949,17 @@ static int read_per_ring_refs(struct xen_blkif_ring *ring, const char *dir)for (i =0 ; i < nr_grefs; i++) {char ring_ref_name[RINGREF_NAME_LEN ]; -snprintf (ring_ref_name,RINGREF_NAME_LEN ,"ring-ref%u" , i); +if (blkif->multi_ref) +snprintf (ring_ref_name,RINGREF_NAME_LEN ,"ring-ref%u" , i); +else { +WARN_ON (i !=0 ); +snprintf (ring_ref_name,RINGREF_NAME_LEN ,"ring-ref" ); + } + err =xenbus_scanf (XBT_NIL , dir, ring_ref_name,"%u" , &ring_ref[i]);if (err !=1 ) { -if (nr_grefs ==1 ) -break ; - err = -EINVAL ;xenbus_dev_fatal (dev, err,"reading %s/%s" , dir, ring_ref_name);
@@ -964,18 +967,6 @@ static int read_per_ring_refs(struct xen_blkif_ring *ring, const char *dir) } } -if (err !=1 ) { -WARN_ON (nr_grefs !=1 ); - - err =xenbus_scanf (XBT_NIL , dir,"ring-ref" ,"%u" , - &ring_ref[0 ]); -if (err !=1 ) { - err = -EINVAL ; -xenbus_dev_fatal (dev, err,"reading %s/ring-ref" , dir); -return err; - } - } - err = -ENOMEM ;for (i =0 ; i < nr_grefs *XEN_BLKIF_REQS_PER_PAGE ; i++) { req =kzalloc (sizeof (*req),GFP_KERNEL );
@@ -1079,10 +1070,15 @@ static int connect_ring(struct backend_info *be) blkif->nr_rings, blkif->blk_protocol, protocol, pers_grants ? "persistent grants" : ""); - ring_page_order =xenbus_read_unsigned (dev->otherend, -"ring-page-order" ,0 ); - -if (ring_page_order > xen_blkif_max_ring_order) { + err =xenbus_scanf (XBT_NIL , dev->otherend,"ring-page-order" ,"%u" , + &ring_page_order); +if (err !=1 ) { + blkif->nr_ring_pages =1 ; + blkif->multi_ref = false; + }else if (ring_page_order <= xen_blkif_max_ring_order) { + blkif->nr_ring_pages =1 << ring_page_order; + blkif->multi_ref = true; + }else { err = -EINVAL ; xenbus_dev_fatal(dev, err, "requested ring page order %d exceed max:%d",
@@ -1091,8 +1087,6 @@ static int connect_ring(struct backend_info *be)return err; } - blkif->nr_ring_pages =1 << ring_page_order; -if (blkif->nr_rings ==1 )return read_per_ring_refs (&blkif->rings[0 ], dev->otherend);else {
drivers/bus/qcom-ebi2.c +3 -1
@@ -353,8 +353,10 @@ static int qcom_ebi2_probe(struct platform_device *pdev)/* Figure out the chipselect */ ret =of_property_read_u32 (child,"reg" , &csindex); -if (ret) +if (ret) { +of_node_put (child);return ret; + }if (csindex >5 ) { dev_err(dev,
drivers/char/ttyprintk.c +11 -0
@@ -158,12 +158,23 @@ static int tpk_ioctl(struct tty_struct *tty,return 0 ; } +/* +* TTY operations hangup function. +*/ +static void tpk_hangup (struct tty_struct *tty) +{ +struct ttyprintk_port *tpkp = tty->driver_data; + +tty_port_hangup (&tpkp->port); +} +static const struct tty_operations ttyprintk_ops = { .open = tpk_open, .close = tpk_close, .write = tpk_write, .write_room = tpk_write_room, .ioctl = tpk_ioctl, + .hangup = tpk_hangup, };static const struct tty_port_operations null_ops = { };
drivers/clk/clk-ast2600.c +2 -2
@@ -58,10 +58,10 @@ static void __iomem *scu_g6_base;static const struct aspeed_gate_data aspeed_g6_gates[] = {/* clk rst name parent flags */ [ASPEED_CLK_GATE_MCLK ] = {0 ,-1 ,"mclk-gate" ,"mpll" ,CLK_IS_CRITICAL },/* SDRAM */ - [ASPEED_CLK_GATE_ECLK ] = {1 ,-1 ,"eclk-gate" ,"eclk" ,0 },/* Video Engine */ + [ASPEED_CLK_GATE_ECLK ] = {1 ,6 ,"eclk-gate" ,"eclk" ,0 },/* Video Engine */ [ASPEED_CLK_GATE_GCLK ] = {2 ,7 ,"gclk-gate" ,NULL ,0 },/* 2D engine */ /* vclk parent - dclk/d1clk/hclk/mclk */ - [ASPEED_CLK_GATE_VCLK ] = {3 ,6 ,"vclk-gate" ,NULL ,0 },/* Video Capture */ + [ASPEED_CLK_GATE_VCLK ] = {3 ,-1 ,"vclk-gate" ,NULL ,0 },/* Video Capture */ [ASPEED_CLK_GATE_BCLK ] = {4 ,8 ,"bclk-gate" ,"bclk" ,0 },/* PCIe/PCI */ /* From dpll */ [ASPEED_CLK_GATE_DCLK ] = {5 ,-1 ,"dclk-gate" ,NULL ,CLK_IS_CRITICAL },/* DAC */
drivers/clk/mvebu/armada-37xx-periph.c +45 -38
132 lines not on this page · raw message
drivers/clk/qcom/a53-pll.c +1 -0
@@ -93,6 +93,7 @@ static const struct of_device_id qcom_a53pll_match_table[] = { { .compatible = "qcom,msm8916-a53pll" }, { } }; +MODULE_DEVICE_TABLE (of, qcom_a53pll_match_table);static struct platform_driver qcom_a53pll_driver = { .probe = qcom_a53pll_probe,
drivers/clk/uniphier/clk-uniphier-mux.c +2 -2
@@ -31,10 +31,10 @@ static int uniphier_clk_mux_set_parent(struct clk_hw *hw, u8 index)static u8 uniphier_clk_mux_get_parent (struct clk_hw *hw) {struct uniphier_clk_mux *mux =to_uniphier_clk_mux (hw); -int num_parents =clk_hw_get_num_parents (hw); +unsigned int num_parents =clk_hw_get_num_parents (hw);int ret;unsigned int val; -u8 i; +unsigned int i; ret =regmap_read (mux->regmap, mux->reg, &val);if (ret)
drivers/clk/zynqmp/pll.c +6 -6
@@ -103,9 +103,7 @@ static long zynqmp_pll_round_rate(struct clk_hw *hw, unsigned long rate,/* Enable the fractional mode if needed */ rate_div = (rate *FRAC_DIV ) / *prate; f = rate_div %FRAC_DIV ; -zynqmp_pll_set_mode (hw, !!f); - -if (zynqmp_pll_get_mode (hw) ==PLL_MODE_FRAC ) { +if (f) {if (rate >PS_PLL_VCO_MAX ) { fbdiv = rate /PS_PLL_VCO_MAX ; rate = rate / (fbdiv +1 );
@@ -179,10 +177,12 @@ static int zynqmp_pll_set_rate(struct clk_hw *hw, unsigned long rate,int ret;const struct zynqmp_eemi_ops *eemi_ops =zynqmp_pm_get_eemi_ops (); -if (zynqmp_pll_get_mode (hw) ==PLL_MODE_FRAC ) { - rate_div = (rate *FRAC_DIV ) / parent_rate; + rate_div = (rate *FRAC_DIV ) / parent_rate; + f = rate_div %FRAC_DIV ; +zynqmp_pll_set_mode (hw, !!f); + +if (f) { m = rate_div /FRAC_DIV ; - f = rate_div %FRAC_DIV ; m =clamp_t (u32, m, (PLL_FBDIV_MIN ), (PLL_FBDIV_MAX )); rate = parent_rate * m; frac = (parent_rate * f) /FRAC_DIV ;
drivers/cpufreq/armada-37xx-cpufreq.c +62 -14
154 lines not on this page · raw message
drivers/crypto/qat/qat_c3xxxvf/adf_drv.c +2 -2
@@ -233,12 +233,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/crypto/qat/qat_c62xvf/adf_drv.c +2 -2
@@ -233,12 +233,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/crypto/qat/qat_common/adf_isr.c +21 -8
@@ -330,19 +330,32 @@ int adf_isr_resource_alloc(struct adf_accel_dev *accel_dev) ret =adf_isr_alloc_msix_entry_table (accel_dev);if (ret) -return ret; -if (adf_enable_msix (accel_dev)) goto err_out; -if (adf_setup_bh (accel_dev)) - goto err_out; + ret =adf_enable_msix (accel_dev); +if (ret) + goto err_free_msix_table; -if (adf_request_irqs (accel_dev)) - goto err_out; + ret =adf_setup_bh (accel_dev); +if (ret) + goto err_disable_msix; + + ret =adf_request_irqs (accel_dev); +if (ret) + goto err_cleanup_bh;return 0 ; + +err_cleanup_bh: +adf_cleanup_bh (accel_dev); + +err_disable_msix: +adf_disable_msix (&accel_dev->accel_pci_dev); + +err_free_msix_table: +adf_isr_free_msix_entry_table (accel_dev); + err_out: -adf_isr_resource_free (accel_dev); -return -EFAULT ; +return ret; }EXPORT_SYMBOL_GPL (adf_isr_resource_alloc);
drivers/crypto/qat/qat_common/adf_transport.c +1 -0
@@ -197,6 +197,7 @@ static int adf_init_ring(struct adf_etr_ring_data *ring)dev_err (&GET_DEV (accel_dev),"Ring address not aligned\n" );dma_free_coherent (&GET_DEV (accel_dev), ring_size_bytes, ring->base_addr, ring->dma_addr); + ring->base_addr =NULL ;return -EFAULT ; }
drivers/crypto/qat/qat_common/adf_vf_isr.c +13 -4
@@ -304,17 +304,26 @@ int adf_vf_isr_resource_alloc(struct adf_accel_dev *accel_dev) goto err_out;if (adf_setup_pf2vf_bh (accel_dev)) - goto err_out; + goto err_disable_msi;if (adf_setup_bh (accel_dev)) - goto err_out; + goto err_cleanup_pf2vf_bh;if (adf_request_msi_irq (accel_dev)) - goto err_out; + goto err_cleanup_bh;return 0 ; + +err_cleanup_bh: +adf_cleanup_bh (accel_dev); + +err_cleanup_pf2vf_bh: +adf_cleanup_pf2vf_bh (accel_dev); + +err_disable_msi: +adf_disable_msi (accel_dev); + err_out: -adf_vf_isr_resource_free (accel_dev);return -EFAULT ; }EXPORT_SYMBOL_GPL (adf_vf_isr_resource_alloc);
drivers/crypto/qat/qat_dh895xccvf/adf_drv.c +2 -2
@@ -233,12 +233,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/devfreq/devfreq.c +1 -1
@@ -319,7 +319,7 @@ static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq, devfreq->previous_freq = new_freq;if (devfreq->suspend_freq) - devfreq->resume_freq = cur_freq; + devfreq->resume_freq = new_freq;return err; }
drivers/firmware/Kconfig +1 -0
@@ -237,6 +237,7 @@ config INTEL_STRATIX10_RSU config QCOM_SCM bool depends on ARM || ARM64 + depends on HAVE_ARM_SMCCC select RESET_CONTROLLER config QCOM_SCM_32
drivers/gpu/drm/amd/amdkfd/kfd_iommu.c +6 -0
@@ -20,6 +20,10 @@* OTHER DEALINGS IN THE SOFTWARE. */ +#include <linux/kconfig.h> + +#if IS_REACHABLE (CONFIG_AMD_IOMMU_V2 ) +#include <linux/printk.h> #include <linux/device.h> #include <linux/slab.h>
@@ -358,3 +362,5 @@ int kfd_iommu_add_perf_counters(struct kfd_topology_device *kdev) return 0; } + +#endif
drivers/gpu/drm/amd/amdkfd/kfd_iommu.h +7 -2
@@ -23,7 +23,9 @@#ifndef __KFD_IOMMU_H__#define __KFD_IOMMU_H__ -#if defined(CONFIG_AMD_IOMMU_V2_MODULE ) || defined(CONFIG_AMD_IOMMU_V2 ) +#include <linux/kconfig.h> + +#if IS_REACHABLE (CONFIG_AMD_IOMMU_V2 )#define KFD_SUPPORT_IOMMU_V2
@@ -46,6 +48,9 @@ static inline int kfd_iommu_check_device(struct kfd_dev *kfd) }static inline int kfd_iommu_device_init (struct kfd_dev *kfd) { +#if IS_MODULE (CONFIG_AMD_IOMMU_V2 ) +WARN_ONCE (1 ,"iommu_v2 module is not usable by built-in KFD" ); +#endif return 0 ; }
@@ -73,6 +78,6 @@ static inline int kfd_iommu_add_perf_counters(struct kfd_topology_device *kdev)return 0 ; } -#endif /* defined(CONFIG_AMD_IOMMU_V2) */ +#endif /* IS_REACHABLE(CONFIG_AMD_IOMMU_V2) */ #endif /* __KFD_IOMMU_H__ */
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +17 -0
@@ -2632,6 +2632,23 @@ static int fill_dc_scaling_info(const struct drm_plane_state *state, scaling_info->src_rect.x = state->src_x >>16 ; scaling_info->src_rect.y = state->src_y >>16 ; +/* +* For reasons we don't (yet) fully understand a non-zero +* src_y coordinate into an NV12 buffer can cause a +* system hang. To avoid hangs (and maybe be overly cautious) +* let's reject both non-zero src_x and src_y. +* +* We currently know of only one use-case to reproduce a +* scenario with non-zero src_x and src_y for NV12, which +* is to gesture the YouTube Android app into full screen +* on ChromeOS. +*/ +if (state->fb && + state->fb->format->format ==DRM_FORMAT_NV12 && + (scaling_info->src_rect.x !=0 || + scaling_info->src_rect.y !=0 )) +return -EINVAL ; + scaling_info->src_rect.width = state->src_w >>16 ;if (scaling_info->src_rect.width ==0 )return -EINVAL ;
drivers/gpu/drm/i915/gvt/gvt.c +4 -4
@@ -128,7 +128,7 @@ static bool intel_get_gvt_attrs(struct attribute ***type_attrs,return true; } -static bool intel_gvt_init_vgpu_type_groups (struct intel_gvt *gvt) +static int intel_gvt_init_vgpu_type_groups (struct intel_gvt *gvt) {int i, j;struct intel_vgpu_type *type;
@@ -146,7 +146,7 @@ static bool intel_gvt_init_vgpu_type_groups(struct intel_gvt *gvt) gvt_vgpu_type_groups[i] = group; } -return true; +return 0 ; unwind:for (j =0 ; j < i; j++) {
@@ -154,7 +154,7 @@ static bool intel_gvt_init_vgpu_type_groups(struct intel_gvt *gvt)kfree (group); } -return false; +return -ENOMEM ; }static void intel_gvt_cleanup_vgpu_type_groups (struct intel_gvt *gvt)
@@ -362,7 +362,7 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) goto out_clean_thread; ret =intel_gvt_init_vgpu_type_groups (gvt); -if (ret == false) { +if (ret) {gvt_err ("failed to init vgpu type groups: %d\n" , ret); goto out_clean_types; }
drivers/gpu/drm/panfrost/panfrost_mmu.c +10 -3
@@ -494,8 +494,14 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as, } bo->base.pages = pages; bo->base.pages_use_count =1 ; - }else + }else { pages = bo->base.pages; +if (pages[page_offset]) { +/* Pages are already mapped, bail out. */ +mutex_unlock (&bo->base.pages_lock); + goto out; + } + } mapping = bo->base.base.filp->f_mapping;mapping_set_unevictable (mapping);
@@ -529,6 +535,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,dev_dbg (pfdev->dev,"mapped page fault @ AS%d %llx" , as, addr); +out:panfrost_gem_mapping_put (bomapping);return 0 ;
@@ -600,6 +607,8 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data) access_type = (fault_status >>8 ) &0x3 ; source_id = (fault_status >>16 ); +mmu_write (pfdev,MMU_INT_CLEAR , mask); +/* Page fault only */ ret =-1 ;if ((status & mask) ==BIT (i) && (exception_type &0xF8 ) ==0xC0 )
@@ -623,8 +632,6 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data) access_type,access_type_name (pfdev, fault_status), source_id); -mmu_write (pfdev,MMU_INT_CLEAR , mask); - status &= ~mask; }
drivers/gpu/drm/radeon/radeon_kms.c +1 -0
@@ -512,6 +512,7 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *value = rdev->config.si.backend_enable_mask; }else {DRM_DEBUG_KMS ("BACKEND_ENABLED_MASK is si+ only!\n" ); +return -EINVAL ; }break ;case RADEON_INFO_MAX_SCLK :
drivers/hid/hid-ids.h +1 -0
@@ -932,6 +932,7 @@#define USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S 0x8003#define USB_VENDOR_ID_PLANTRONICS 0x047f +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056#define USB_VENDOR_ID_PANASONIC 0x04da#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
drivers/hid/hid-plantronics.c +58 -2
113 lines not on this page · raw message
drivers/hsi/hsi_core.c +1 -2
@@ -210,8 +210,6 @@ static void hsi_add_client_from_dt(struct hsi_port *port,if (err) goto err; -dev_set_name (&cl->device,"%s" , name); - err =hsi_of_property_parse_mode (client,"hsi-mode" , &mode);if (err) { err = hsi_of_property_parse_mode(client, "hsi-rx-mode",
@@ -293,6 +291,7 @@ static void hsi_add_client_from_dt(struct hsi_port *port, cl->device.release = hsi_client_release; cl->device.of_node = client; +dev_set_name (&cl->device,"%s" , name);if (device_register (&cl->device) <0 ) {pr_err ("hsi: failed to register client: %s\n" , name);put_device (&cl->device);
drivers/hv/channel_mgmt.c +25 -5
@@ -763,6 +763,12 @@ static void init_vp_index(struct vmbus_channel *channel, u16 dev_type)free_cpumask_var (available_mask); } +#define UNLOAD_DELAY_UNIT_MS 10/* 10 milliseconds */ +#define UNLOAD_WAIT_MS (100*1000)/* 100 seconds */ +#define UNLOAD_WAIT_LOOPS (UNLOAD_WAIT_MS/UNLOAD_DELAY_UNIT_MS) +#define UNLOAD_MSG_MS (5*1000)/* Every 5 seconds */ +#define UNLOAD_MSG_LOOPS (UNLOAD_MSG_MS/UNLOAD_DELAY_UNIT_MS) +static void vmbus_wait_for_unload (void ) {int cpu;
@@ -780,12 +786,17 @@ static void vmbus_wait_for_unload(void)* vmbus_connection.unload_event. If not, the last thing we can do is * read message pages for all CPUs directly. * -* Wait no more than 10 seconds so that the panic path can't get -* hung forever in case the response message isn't seen. +* Wait up to 100 seconds since an Azure host must writeback any dirty +* data in its disk cache before the VMbus UNLOAD request will +* complete. This flushing has been empirically observed to take up +* to 50 seconds in cases with a lot of dirty data, so allow additional +* leeway and for inaccuracies in mdelay(). But eventually time out so +* that the panic path can't get hung forever in case the response +* message isn't seen. */ -for (i =0 ; i <1000 ; i++) { +for (i =1 ; i <=UNLOAD_WAIT_LOOPS ; i++) {if (completion_done (&vmbus_connection.unload_event)) -break ; + goto completed;for_each_online_cpu (cpu) {struct hv_per_cpu_context *hv_cpu
@@ -808,9 +819,18 @@ static void vmbus_wait_for_unload(void)vmbus_signal_eom (msg, message_type); } -mdelay (10 ); +/* +* Give a notice periodically so someone watching the +* serial output won't think it is completely hung. +*/ +if (!(i %UNLOAD_MSG_LOOPS )) +pr_notice ("Waiting for VMBus UNLOAD to complete\n" ); + +mdelay (UNLOAD_DELAY_UNIT_MS ); } +pr_err ("Continuing even though VMBus UNLOAD did not complete\n" ); +completed:/* * We're crashing and already got the UNLOAD_RESPONSE, cleanup all * maybe-pending messages on all CPUs to be able to receive new
drivers/i2c/busses/i2c-cadence.c +4 -1
@@ -901,7 +901,10 @@ static int cdns_i2c_probe(struct platform_device *pdev)if (IS_ERR (id->membase))return PTR_ERR (id->membase); - id->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) +return ret; + id->irq = ret; id->adap.owner =THIS_MODULE ; id->adap.dev.of_node = pdev->dev.of_node;
drivers/i2c/busses/i2c-emev2.c +4 -1
@@ -397,7 +397,10 @@ static int em_i2c_probe(struct platform_device *pdev)em_i2c_reset (&priv->adap); - priv->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto err_clk; + priv->irq = ret; ret =devm_request_irq (&pdev->dev, priv->irq, em_i2c_irq_handler,0 ,"em_i2c" , priv);if (ret)
drivers/i2c/busses/i2c-img-scb.c +2 -2
@@ -1057,7 +1057,7 @@ static int img_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, atomic = true; } - ret =pm_runtime_get_sync (adap->dev.parent); + ret =pm_runtime_resume_and_get (adap->dev.parent);if (ret <0 )return ret;
@@ -1158,7 +1158,7 @@ static int img_i2c_init(struct img_i2c *i2c)u32 rev;int ret; - ret =pm_runtime_get_sync (i2c->adap.dev.parent); + ret =pm_runtime_resume_and_get (i2c->adap.dev.parent);if (ret <0 )return ret;
drivers/i2c/busses/i2c-imx-lpi2c.c +1 -1
@@ -265,7 +265,7 @@ static int lpi2c_imx_master_enable(struct lpi2c_imx_struct *lpi2c_imx)unsigned int temp;int ret; - ret =pm_runtime_get_sync (lpi2c_imx->adapter.dev.parent); + ret =pm_runtime_resume_and_get (lpi2c_imx->adapter.dev.parent);if (ret <0 )return ret;
drivers/i2c/busses/i2c-jz4780.c +4 -1
@@ -751,7 +751,10 @@ static int jz4780_i2c_probe(struct platform_device *pdev)jz4780_i2c_writew (i2c,JZ4780_I2C_INTM ,0x0 ); - i2c->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto err; + i2c->irq = ret; ret =devm_request_irq (&pdev->dev, i2c->irq, jz4780_i2c_irq,0 ,dev_name (&pdev->dev), i2c);if (ret)
drivers/i2c/busses/i2c-omap.c +4 -4
@@ -1408,9 +1408,9 @@ omap_i2c_probe(struct platform_device *pdev)pm_runtime_set_autosuspend_delay (omap->dev,OMAP_I2C_PM_TIMEOUT );pm_runtime_use_autosuspend (omap->dev); - r =pm_runtime_get_sync (omap->dev); + r =pm_runtime_resume_and_get (omap->dev);if (r <0 ) - goto err_free_mem; + goto err_disable_pm;/* * Read the Rev hi bit-[15:14] ie scheme this is 1 indicates ver2.
@@ -1518,8 +1518,8 @@ omap_i2c_probe(struct platform_device *pdev)omap_i2c_write_reg (omap,OMAP_I2C_CON_REG ,0 );pm_runtime_dont_use_autosuspend (omap->dev);pm_runtime_put_sync (omap->dev); +err_disable_pm:pm_runtime_disable (&pdev->dev); -err_free_mem:return r; }
@@ -1530,7 +1530,7 @@ static int omap_i2c_remove(struct platform_device *pdev)int ret;i2c_del_adapter (&omap->adapter); - ret =pm_runtime_get_sync (&pdev->dev); + ret =pm_runtime_resume_and_get (&pdev->dev);if (ret <0 )return ret;
drivers/i2c/busses/i2c-sh7760.c +4 -1
@@ -471,7 +471,10 @@ static int sh7760_i2c_probe(struct platform_device *pdev) goto out2; } - id->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto out3; + id->irq = ret; id->adap.nr = pdev->id; id->adap.algo = &sh7760_i2c_algo;
drivers/i2c/busses/i2c-sprd.c +2 -2
@@ -290,7 +290,7 @@ static int sprd_i2c_master_xfer(struct i2c_adapter *i2c_adap,struct sprd_i2c *i2c_dev = i2c_adap->algo_data;int im, ret; - ret =pm_runtime_get_sync (i2c_dev->dev); + ret =pm_runtime_resume_and_get (i2c_dev->dev);if (ret <0 )return ret;
@@ -577,7 +577,7 @@ static int sprd_i2c_remove(struct platform_device *pdev)struct sprd_i2c *i2c_dev =platform_get_drvdata (pdev);int ret; - ret =pm_runtime_get_sync (i2c_dev->dev); + ret =pm_runtime_resume_and_get (i2c_dev->dev);if (ret <0 )return ret;
drivers/i3c/master.c +1 -4
@@ -2492,7 +2492,7 @@ int i3c_master_register(struct i3c_master_controller *master, ret =i3c_master_bus_init (master);if (ret) - goto err_destroy_wq; + goto err_put_dev; ret =device_add (&master->dev);if (ret)
@@ -2523,9 +2523,6 @@ int i3c_master_register(struct i3c_master_controller *master, err_cleanup_bus:i3c_master_bus_cleanup (master); -err_destroy_wq: -destroy_workqueue (master->wq); - err_put_dev:put_device (&master->dev);
drivers/iio/accel/adis16201.c +1 -1
@@ -215,7 +215,7 @@ static const struct iio_chan_spec adis16201_channels[] = {ADIS_AUX_ADC_CHAN (ADIS16201_AUX_ADC_REG ,ADIS16201_SCAN_AUX_ADC ,0 ,12 ),ADIS_INCLI_CHAN (X ,ADIS16201_XINCL_OUT_REG ,ADIS16201_SCAN_INCLI_X ,BIT (IIO_CHAN_INFO_CALIBBIAS ),0 ,14 ), -ADIS_INCLI_CHAN (X ,ADIS16201_YINCL_OUT_REG ,ADIS16201_SCAN_INCLI_Y , +ADIS_INCLI_CHAN (Y ,ADIS16201_YINCL_OUT_REG ,ADIS16201_SCAN_INCLI_Y ,BIT (IIO_CHAN_INFO_CALIBBIAS ),0 ,14 ), IIO_CHAN_SOFT_TIMESTAMP(7) };
drivers/infiniband/hw/bnxt_re/qplib_res.c +1 -0
@@ -736,6 +736,7 @@ static int bnxt_qplib_alloc_dpi_tbl(struct bnxt_qplib_res *res, unmap_io:pci_iounmap (res->pdev, dpit->dbr_bar_reg_iomem); + dpit->dbr_bar_reg_iomem =NULL ;return -ENOMEM ; }
drivers/infiniband/hw/cxgb4/resource.c +1 -1
@@ -216,7 +216,7 @@ u32 c4iw_get_qpid(struct c4iw_rdev *rdev, struct c4iw_dev_ucontext *uctx) goto out; entry->qid = qid;list_add_tail (&entry->entry, &uctx->cqids); -for (i = qid; i & rdev->qpmask; i++) { +for (i = qid +1 ; i & rdev->qpmask; i++) { entry =kmalloc (sizeof (*entry),GFP_KERNEL );if (!entry) goto out;
drivers/infiniband/hw/hfi1/firmware.c +1 -0
@@ -1924,6 +1924,7 @@ int parse_platform_config(struct hfi1_devdata *dd)dd_dev_err (dd,"%s: Failed CRC check at offset %ld\n" , __func__, (ptr - (u32 *)dd->platform_config.data)); + ret = -EINVAL ; goto bail; }/* Jump the CRC DWORD */
drivers/infiniband/hw/i40iw/i40iw_pble.c +2 -4
@@ -392,12 +392,9 @@ static enum i40iw_status_code add_pble_pool(struct i40iw_sc_dev *dev,i40iw_debug (dev,I40IW_DEBUG_PBLE ,"next_fpm_addr = %llx chunk_size[%u] = 0x%x\n" , pble_rsrc->next_fpm_addr, chunk->size, chunk->size); pble_rsrc->unallocated_pble -= (chunk->size >>3 ); -list_add (&chunk->list, &pble_rsrc->pinfo.clist); sd_reg_val = (sd_entry_type ==I40IW_SD_TYPE_PAGED ) ? sd_entry->u.pd_table.pd_page_addr.pa : sd_entry->u.bp.addr.pa; -if (sd_entry->valid) -return 0 ; -if (dev->is_pf) { +if (dev->is_pf && !sd_entry->valid) { ret_code =i40iw_hmc_sd_one (dev, hmc_info->hmc_fn_id, sd_reg_val, idx->sd_idx, sd_entry->entry_type, true);
@@ -408,6 +405,7 @@ static enum i40iw_status_code add_pble_pool(struct i40iw_sc_dev *dev, } sd_entry->valid = true; +list_add (&chunk->list, &pble_rsrc->pinfo.clist);return 0 ; error:kfree (chunk);
drivers/infiniband/hw/qedr/qedr_iw_cm.c +3 -1
@@ -636,8 +636,10 @@ int qedr_iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)memcpy (in_params.local_mac_addr, dev->ndev->dev_addr,ETH_ALEN );if (test_and_set_bit (QEDR_IWARP_CM_WAIT_FOR_CONNECT , - &qp->iwarp_cm_flags)) + &qp->iwarp_cm_flags)) { + rc = -ENODEV ; goto err;/* QP already being destroyed */ + } rc = dev->ops->iwarp_connect (dev->rdma_ctx, &in_params, &out_params);if (rc) {
drivers/infiniband/sw/siw/siw_mem.c +2 -2
@@ -106,8 +106,6 @@ int siw_mr_add_mem(struct siw_mr *mr, struct ib_pd *pd, void *mem_obj, mem->perms = rights &IWARP_ACCESS_MASK ;kref_init (&mem->ref); - mr->mem = mem; -get_random_bytes (&next,4 ); next &=0x00ffffff ;
@@ -116,6 +114,8 @@ int siw_mr_add_mem(struct siw_mr *mr, struct ib_pd *pd, void *mem_obj,kfree (mem);return -ENOMEM ; } + + mr->mem = mem;/* Set the STag index part */ mem->stag = id <<8 ; mr->base_mr.lkey = mr->base_mr.rkey = mem->stag;
drivers/infiniband/ulp/srpt/ib_srpt.c +1 -0
@@ -2373,6 +2373,7 @@ static int srpt_cm_req_recv(struct srpt_device *const sdev,pr_info ("rejected SRP_LOGIN_REQ because target %s_%d is not enabled\n" ,dev_name (&sdev->device->dev), port_num);mutex_unlock (&sport->mutex); + ret = -EINVAL ; goto reject; }
drivers/irqchip/irq-gic-v3-mbi.c +1 -1
@@ -303,7 +303,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) reg =of_get_property (np,"mbi-alias" ,NULL );if (reg) { mbi_phys_base =of_translate_address (np, reg); -if (mbi_phys_base ==OF_BAD_ADDR ) { +if (mbi_phys_base == (phys_addr_t )OF_BAD_ADDR ) { ret = -ENXIO ; goto err_free_mbi; }
drivers/md/md-bitmap.c +2 -0
@@ -1726,6 +1726,8 @@ void md_bitmap_flush(struct mddev *mddev)md_bitmap_daemon_work (mddev); bitmap->daemon_lastrun -= sleep;md_bitmap_daemon_work (mddev); +if (mddev->bitmap_info.external) +md_super_wait (mddev);md_bitmap_update_sb (bitmap); }
drivers/md/md.c +48 -25
138 lines not on this page · raw message
drivers/media/platform/aspeed-video.c +6 -3
@@ -491,8 +491,8 @@ static void aspeed_video_off(struct aspeed_video *video)aspeed_video_write (video,VE_INTERRUPT_STATUS ,0xffffffff );/* Turn off the relevant clocks */ -clk_disable (video->vclk);clk_disable (video->eclk); +clk_disable (video->vclk);clear_bit (VIDEO_CLOCKS_ON , &video->flags); }
@@ -503,8 +503,8 @@ static void aspeed_video_on(struct aspeed_video *video)return ;/* Turn on the relevant clocks */ -clk_enable (video->eclk);clk_enable (video->vclk); +clk_enable (video->eclk);set_bit (VIDEO_CLOCKS_ON , &video->flags); }
@@ -1684,8 +1684,11 @@ static int aspeed_video_probe(struct platform_device *pdev)return rc; rc =aspeed_video_setup_video (video); -if (rc) +if (rc) { +clk_unprepare (video->vclk); +clk_unprepare (video->eclk);return rc; + }return 0 ; }
drivers/media/platform/sunxi/sun6i-csi/sun6i_video.c +3 -1
@@ -151,8 +151,10 @@ static int sun6i_video_start_streaming(struct vb2_queue *vq, unsigned int count) } subdev =sun6i_video_remote_subdev (video,NULL ); -if (!subdev) +if (!subdev) { + ret = -EINVAL ; goto stop_media_pipeline; + } config.pixelformat = video->fmt.fmt.pix.pixelformat; config.code = video->mbus_code;
drivers/media/platform/vivid/vivid-vid-out.c +1 -1
@@ -1025,7 +1025,7 @@ int vivid_vid_out_s_fbuf(struct file *file, void *fh,return -EINVAL ; } dev->fbuf_out_flags &= ~(chroma_flags | alpha_flags); - dev->fbuf_out_flags = a->flags & (chroma_flags | alpha_flags); + dev->fbuf_out_flags |= a->flags & (chroma_flags | alpha_flags);return 0 ; }
drivers/media/tuners/m88rs6000t.c +3 -3
@@ -525,7 +525,7 @@ static int m88rs6000t_get_rf_strength(struct dvb_frontend *fe, u16 *strength) PGA2_cri =PGA2_GC >>2 ; PGA2_crf =PGA2_GC &0x03 ; -for (i =0 ; i <=RF_GC ; i++) +for (i =0 ; i <=RF_GC && i <ARRAY_SIZE (RFGS ); i++)RFG +=RFGS [i];if (RF_GC ==0 )
@@ -537,12 +537,12 @@ static int m88rs6000t_get_rf_strength(struct dvb_frontend *fe, u16 *strength)if (RF_GC ==3 )RFG +=100 ; -for (i =0 ; i <=IF_GC ; i++) +for (i =0 ; i <=IF_GC && i <ARRAY_SIZE (IFGS ); i++)IFG +=IFGS [i];TIAG =TIA_GC *TIA_GS ; -for (i =0 ; i <=BB_GC ; i++) +for (i =0 ; i <=BB_GC && i <ARRAY_SIZE (BBGS ); i++)BBG +=BBGS [i];PGA2G = PGA2_cri * PGA2_cri_GS + PGA2_crf * PGA2_crf_GS;
drivers/media/v4l2-core/v4l2-ctrls.c +14 -3
@@ -2155,7 +2155,15 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl)if (hdl ==NULL || hdl->buckets ==NULL )return ; -if (!hdl->req_obj.req && !list_empty (&hdl->requests)) { +/* +* If the main handler is freed and it is used by handler objects in +* outstanding requests, then unbind and put those objects before +* freeing the main handler. +* +* The main handler can be identified by having a NULL ops pointer in +* the request object. +*/ +if (!hdl->req_obj.ops && !list_empty (&hdl->requests)) {struct v4l2_ctrl_handler *req, *next_req;list_for_each_entry_safe (req, next_req, &hdl->requests, requests) {
@@ -3186,8 +3194,8 @@ static void v4l2_ctrl_request_unbind(struct media_request_object *obj) container_of(obj, struct v4l2_ctrl_handler, req_obj);struct v4l2_ctrl_handler *main_hdl = obj->priv; -list_del_init (&hdl->requests);mutex_lock (main_hdl->lock); +list_del_init (&hdl->requests);if (hdl->request_is_queued) {list_del_init (&hdl->requests_queued); hdl->request_is_queued = false;
@@ -3246,8 +3254,11 @@ static int v4l2_ctrl_request_bind(struct media_request *req,if (!ret) { ret =media_request_object_bind (req, &req_ops, from, false, &hdl->req_obj); -if (!ret) +if (!ret) { +mutex_lock (from->lock);list_add_tail (&hdl->requests, &from->requests); +mutex_unlock (from->lock); + } }return ret; }
drivers/memory/omap-gpmc.c +5 -2
@@ -1026,8 +1026,8 @@ EXPORT_SYMBOL(gpmc_cs_request);void gpmc_cs_free (int cs) { -struct gpmc_cs_data *gpmc = &gpmc_cs[cs]; -struct resource *res = &gpmc->mem; +struct gpmc_cs_data *gpmc; +struct resource *res;spin_lock (&gpmc_mem_lock);if (cs >= gpmc_cs_num || cs <0 || !gpmc_cs_reserved (cs)) {
@@ -1036,6 +1036,9 @@ void gpmc_cs_free(int cs)spin_unlock (&gpmc_mem_lock);return ; } + gpmc = &gpmc_cs[cs]; + res = &gpmc->mem; +gpmc_cs_disable_mem (cs);if (res->flags)release_resource (res);
drivers/memory/pl353-smc.c +1 -1
@@ -63,7 +63,7 @@/* ECC memory config register specific constants */ #define PL353_SMC_ECC_MEMCFG_MODE_MASK 0xC#define PL353_SMC_ECC_MEMCFG_MODE_SHIFT 2 -#define PL353_SMC_ECC_MEMCFG_PGSIZE_MASK 0xC +#define PL353_SMC_ECC_MEMCFG_PGSIZE_MASK 0x3#define PL353_SMC_DC_UPT_NAND_REGS ((4 << 23) |/* CS: NAND chip */ \ (2 << 21)) /* UpdateRegs operation */
drivers/mfd/stm32-timers.c +6 -1
@@ -158,13 +158,18 @@ static const struct regmap_config stm32_timers_regmap_cfg = {static void stm32_timers_get_arr_size (struct stm32_timers *ddata) { +u32 arr; + +/* Backup ARR to restore it after getting the maximum value */ +regmap_read (ddata->regmap,TIM_ARR , &arr); +/* * Only the available bits will be written so when readback * we get the maximum value of auto reload register */ regmap_write (ddata->regmap,TIM_ARR , ~0L );regmap_read (ddata->regmap,TIM_ARR , &ddata->max_arr); -regmap_write (ddata->regmap,TIM_ARR ,0x0 ); +regmap_write (ddata->regmap,TIM_ARR , arr); } static void stm32_timers_dma_probe(struct device *dev,
drivers/misc/lis3lv02d/lis3lv02d.c +16 -5
@@ -208,7 +208,7 @@ static int lis3_3dc_rates[16] = {0, 1, 10, 25, 50, 100, 200, 400, 1600, 5000};static int lis3_3dlh_rates[4 ] = {50 ,100 ,400 ,1000 };/* ODR is Output Data Rate */ -static int lis3lv02d_get_odr (struct lis3lv02d *lis3) +static int lis3lv02d_get_odr_index (struct lis3lv02d *lis3) {u8 ctrl;int shift;
@@ -216,15 +216,23 @@ static int lis3lv02d_get_odr(struct lis3lv02d *lis3) lis3->read (lis3,CTRL_REG1 , &ctrl); ctrl &= lis3->odr_mask; shift =ffs (lis3->odr_mask) -1 ; -return lis3->odrs[(ctrl >> shift)]; +return (ctrl >> shift); }static int lis3lv02d_get_pwron_wait (struct lis3lv02d *lis3) { -int div =lis3lv02d_get_odr (lis3); +int odr_idx =lis3lv02d_get_odr_index (lis3); +int div = lis3->odrs[odr_idx]; -if (WARN_ONCE (div ==0 ,"device returned spurious data" )) +if (div ==0 ) { +if (odr_idx ==0 ) { +/* Power-down mode, not sampling no need to sleep */ +return 0 ; + } + +dev_err (&lis3->pdev->dev,"Error unknown odrs-index: %d\n" , odr_idx);return -ENXIO ; + }/* LIS3 power on delay is quite long */ msleep (lis3->pwron_delay / div);
@@ -807,9 +815,12 @@ static ssize_t lis3lv02d_rate_show(struct device *dev, struct device_attribute *attr, char *buf) { struct lis3lv02d *lis3 = dev_get_drvdata(dev); +int odr_idx;lis3lv02d_sysfs_poweron (lis3); -return sprintf (buf,"%d\n" ,lis3lv02d_get_odr (lis3)); + + odr_idx =lis3lv02d_get_odr_index (lis3); +return sprintf (buf,"%d\n" , lis3->odrs[odr_idx]); } static ssize_t lis3lv02d_rate_set(struct device *dev,
drivers/misc/vmw_vmci/vmci_doorbell.c +1 -1
@@ -326,7 +326,7 @@ int vmci_dbell_host_context_notify(u32 src_cid, struct vmci_handle handle)bool vmci_dbell_register_notification_bitmap (u64 bitmap_ppn) {int result; -struct vmci_notify_bm_set_msg bitmap_set_msg; +struct vmci_notify_bm_set_msg bitmap_set_msg = { }; bitmap_set_msg.hdr.dst =vmci_make_handle (VMCI_HYPERVISOR_CONTEXT_ID ,VMCI_SET_NOTIFY_BITMAP );
drivers/misc/vmw_vmci/vmci_guest.c +1 -1
@@ -168,7 +168,7 @@ static int vmci_check_host_caps(struct pci_dev *pdev) VMCI_UTIL_NUM_RESOURCES * sizeof(u32);struct vmci_datagram *check_msg; - check_msg =kmalloc (msg_size,GFP_KERNEL ); + check_msg =kzalloc (msg_size,GFP_KERNEL );if (!check_msg) {dev_err (&pdev->dev,"%s: Insufficient memory\n" , __func__);return -ENOMEM ;
drivers/mtd/mtdchar.c +4 -4
@@ -649,16 +649,12 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)case MEMGETINFO :case MEMREADOOB :case MEMREADOOB64 : -case MEMLOCK : -case MEMUNLOCK :case MEMISLOCKED :case MEMGETOOBSEL :case MEMGETBADBLOCK : -case MEMSETBADBLOCK :case OTPSELECT :case OTPGETREGIONCOUNT :case OTPGETREGIONINFO : -case OTPLOCK :case ECCGETLAYOUT :case ECCGETSTATS :case MTDFILEMODE :
@@ -669,9 +665,13 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)/* "dangerous" commands */ case MEMERASE :case MEMERASE64 : +case MEMLOCK : +case MEMUNLOCK : +case MEMSETBADBLOCK :case MEMWRITEOOB :case MEMWRITEOOB64 :case MEMWRITE : +case OTPLOCK :if (!(file->f_mode &FMODE_WRITE ))return -EPERM ;break ;
drivers/mtd/mtdcore.c +3 -0
@@ -825,6 +825,9 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types,/* Prefer parsed partitions over driver-provided fallback */ ret =parse_mtd_partitions (mtd, types, parser_data); +if (ret == -EPROBE_DEFER ) + goto out; +if (ret >0 ) ret =0 ;else if (nr_parts)
drivers/mtd/nand/raw/brcmnand/brcmnand.c +6 -0
@@ -2364,6 +2364,12 @@ static int brcmnand_attach_chip(struct nand_chip *chip) ret =brcmstb_choose_ecc_layout (host); +/* If OOB is written with ECC enabled it will cause ECC errors */ +if (is_hamming_ecc (host->ctrl, &host->hwcfg)) { + chip->ecc.write_oob = brcmnand_write_oob_raw; + chip->ecc.read_oob = brcmnand_read_oob_raw; + } +return ret; }
drivers/mtd/nand/raw/fsmc_nand.c +2 -0
@@ -1066,11 +1066,13 @@ static int __init fsmc_nand_probe(struct platform_device *pdev) host->read_dma_chan =dma_request_channel (mask, filter,NULL );if (!host->read_dma_chan) {dev_err (&pdev->dev,"Unable to get read dma channel\n" ); + ret = -ENODEV ; goto disable_clk; } host->write_dma_chan =dma_request_channel (mask, filter,NULL );if (!host->write_dma_chan) {dev_err (&pdev->dev,"Unable to get write dma channel\n" ); + ret = -ENODEV ; goto release_dma_read_chan; } }
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +1 -1
@@ -2598,7 +2598,7 @@ static int gpmi_nand_init(struct gpmi_nand_data *this) this->bch_geometry.auxiliary_size =128 ; ret =gpmi_alloc_dma_buffer (this);if (ret) - goto err_out; +return ret;nand_controller_init (&this->base); this->base.ops = &gpmi_nand_controller_ops;
drivers/mtd/nand/raw/qcom_nandc.c +2 -5
@@ -2850,7 +2850,7 @@ static int qcom_probe_nand_devices(struct qcom_nand_controller *nandc)struct device *dev = nandc->dev;struct device_node *dn = dev->of_node, *child;struct qcom_nand_host *host; -int ret; +int ret = -ENODEV ;for_each_available_child_of_node (dn, child) { host =devm_kzalloc (dev,sizeof (*host),GFP_KERNEL );
@@ -2868,10 +2868,7 @@ static int qcom_probe_nand_devices(struct qcom_nand_controller *nandc)list_add_tail (&host->node, &nandc->host_list); } -if (list_empty (&nandc->host_list)) -return -ENODEV ; - -return 0 ; +return ret; }/* parse custom DT properties here */
drivers/net/ethernet/broadcom/bnxt/bnxt.c +7 -3
@@ -1728,12 +1728,14 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, cons = rxcmp->rx_cmp_opaque;if (unlikely (cons != rxr->rx_next_cons)) { -int rc1 =bnxt_discard_rx (bp, cpr, raw_cons, rxcmp); +int rc1 =bnxt_discard_rx (bp, cpr, &tmp_raw_cons, rxcmp);netdev_warn (bp->dev,"RX cons %x != expected cons %x\n" , cons, rxr->rx_next_cons);bnxt_sched_reset (bp, rxr); -return rc1; +if (rc1) +return rc1; + goto next_rx_no_prod_no_len; } rx_buf = &rxr->rx_buf_ring[cons]; data = rx_buf->data;
@@ -8954,7 +8956,9 @@ static ssize_t bnxt_show_temp(struct device *dev,if (!rc) len =sprintf (buf,"%u\n" , resp->temp *1000 );/* display millidegree */ mutex_unlock (&bp->hwrm_cmd_lock); -return rc ?: len; +if (rc) +return rc; +return len; } static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0);
drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h +1 -1
@@ -521,7 +521,7 @@#define CN23XX_BAR1_INDEX_OFFSET 3#define CN23XX_PEM_BAR1_INDEX_REG (port, idx) \ - (CN23XX_PEM_BAR1_INDEX_START + ((port) << CN23XX_PEM_OFFSET) + \ + (CN23XX_PEM_BAR1_INDEX_START + (((u64)port) << CN23XX_PEM_OFFSET) + \ ((idx) << CN23XX_BAR1_INDEX_OFFSET))/*############################ DPI #########################*/
drivers/net/ethernet/cavium/thunder/nicvf_queues.c +1 -1
@@ -776,7 +776,7 @@ static void nicvf_rcv_queue_config(struct nicvf *nic, struct queue_set *qs, mbx.rq.msg =NIC_MBOX_MSG_RQ_CFG ; mbx.rq.qs_num = qs->vnic_id; mbx.rq.rq_num = qidx; - mbx.rq.cfg = (rq->caching <<26 ) | (rq->cq_qs <<19 ) | + mbx.rq.cfg = ((u64 )rq->caching <<26 ) | (rq->cq_qs <<19 ) | (rq->cq_idx <<16 ) | (rq->cont_rbdr_qs <<9 ) | (rq->cont_qs_rbdr_idx <<8 ) | (rq->start_rbdr_qs <<1 ) | (rq->start_qs_rbdr_idx);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +11 -11
@@ -174,31 +174,31 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f,WORD_MASK , f->fs.nat_lip[15 ] | f->fs.nat_lip[14 ] <<8 | f->fs.nat_lip[13 ] <<16 | - f->fs.nat_lip[12] << 24, 1); + (u64)f->fs.nat_lip[12] << 24, 1);set_tcb_field (adap, f, tid,TCB_SND_UNA_RAW_W +1 ,WORD_MASK , f->fs.nat_lip[11 ] | f->fs.nat_lip[10 ] <<8 | f->fs.nat_lip[9 ] <<16 | - f->fs.nat_lip[8 ] <<24 ,1 ); + (u64 )f->fs.nat_lip[8 ] <<24 ,1 );set_tcb_field (adap, f, tid,TCB_SND_UNA_RAW_W +2 ,WORD_MASK , f->fs.nat_lip[7 ] | f->fs.nat_lip[6 ] <<8 | f->fs.nat_lip[5 ] <<16 | - f->fs.nat_lip[4 ] <<24 ,1 ); + (u64 )f->fs.nat_lip[4 ] <<24 ,1 );set_tcb_field (adap, f, tid,TCB_SND_UNA_RAW_W +3 ,WORD_MASK , f->fs.nat_lip[3 ] | f->fs.nat_lip[2 ] <<8 | f->fs.nat_lip[1 ] <<16 | - f->fs.nat_lip[0 ] <<24 ,1 ); + (u64 )f->fs.nat_lip[0 ] <<24 ,1 ); }else {set_tcb_field (adap, f, tid,TCB_RX_FRAG3_LEN_RAW_W ,WORD_MASK , f->fs.nat_lip[3 ] | f->fs.nat_lip[2 ] <<8 | f->fs.nat_lip[1 ] <<16 | - f->fs.nat_lip[0 ] <<24 ,1 ); + (u64 )f->fs.nat_lip[0 ] <<25 ,1 ); } }
@@ -208,25 +208,25 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f,WORD_MASK , f->fs.nat_fip[15 ] | f->fs.nat_fip[14 ] <<8 | f->fs.nat_fip[13 ] <<16 | - f->fs.nat_fip[12] << 24, 1); + (u64)f->fs.nat_fip[12] << 24, 1);set_tcb_field (adap, f, tid,TCB_RX_FRAG2_PTR_RAW_W +1 ,WORD_MASK , f->fs.nat_fip[11 ] | f->fs.nat_fip[10 ] <<8 | f->fs.nat_fip[9 ] <<16 | - f->fs.nat_fip[8 ] <<24 ,1 ); + (u64 )f->fs.nat_fip[8 ] <<24 ,1 );set_tcb_field (adap, f, tid,TCB_RX_FRAG2_PTR_RAW_W +2 ,WORD_MASK , f->fs.nat_fip[7 ] | f->fs.nat_fip[6 ] <<8 | f->fs.nat_fip[5 ] <<16 | - f->fs.nat_fip[4 ] <<24 ,1 ); + (u64 )f->fs.nat_fip[4 ] <<24 ,1 );set_tcb_field (adap, f, tid,TCB_RX_FRAG2_PTR_RAW_W +3 ,WORD_MASK , f->fs.nat_fip[3 ] | f->fs.nat_fip[2 ] <<8 | f->fs.nat_fip[1 ] <<16 | - f->fs.nat_fip[0 ] <<24 ,1 ); + (u64 )f->fs.nat_fip[0 ] <<24 ,1 ); }else { set_tcb_field(adap, f, tid,
@@ -234,13 +234,13 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f,WORD_MASK , f->fs.nat_fip[3 ] | f->fs.nat_fip[2 ] <<8 | f->fs.nat_fip[1 ] <<16 | - f->fs.nat_fip[0] << 24, 1); + (u64)f->fs.nat_fip[0] << 24, 1); } }set_tcb_field (adap, f, tid,TCB_PDU_HDR_LEN_W ,WORD_MASK , (dp ? (nat_lp[1 ] | nat_lp[0 ] <<8 ) :0 ) | - (sp ? (nat_fp[1 ] <<16 | nat_fp[0 ] <<24 ) :0 ), + (sp ? (nat_fp[1 ] <<16 | (u64 )nat_fp[0 ] <<24 ) :0 ),1 ); }
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +2 -1
@@ -3322,7 +3322,6 @@ static void hns3_nic_set_cpumask(struct hns3_nic_priv *priv)static int hns3_nic_init_vector_data (struct hns3_nic_priv *priv) { -struct hnae3_ring_chain_node vector_ring_chain;struct hnae3_handle *h = priv->ae_handle;struct hns3_enet_tqp_vector *tqp_vector;int ret =0 ;
@@ -3354,6 +3353,8 @@ static int hns3_nic_init_vector_data(struct hns3_nic_priv *priv) }for (i =0 ; i < priv->vector_num; i++) { +struct hnae3_ring_chain_node vector_ring_chain; + tqp_vector = &priv->tqp_vector[i]; tqp_vector->rx_group.total_bytes =0 ;
drivers/net/ethernet/qualcomm/emac/emac-mac.c +3 -1
@@ -1439,6 +1439,7 @@ int emac_mac_tx_buf_send(struct emac_adapter *adpt, struct emac_tx_queue *tx_q, {struct emac_tpd tpd;u32 prod_idx; +int len;memset (&tpd,0 ,sizeof (tpd));
@@ -1458,9 +1459,10 @@ int emac_mac_tx_buf_send(struct emac_adapter *adpt, struct emac_tx_queue *tx_q,if (skb_network_offset (skb) !=ETH_HLEN )TPD_TYP_SET (&tpd,1 ); + len = skb->len;emac_tx_fill_tpd (adpt, tx_q, skb, &tpd); -netdev_sent_queue (adpt->netdev, skb->len); +netdev_sent_queue (adpt->netdev, len);/* Make sure the are enough free descriptors to hold one * maximum-sized SKB. We need one desc for each fragment,
drivers/net/ethernet/renesas/ravb_main.c +12 -23
@@ -911,31 +911,20 @@ static int ravb_poll(struct napi_struct *napi, int budget)int q = napi - priv->napi;int mask =BIT (q);int quota = budget; -u32 ris0, tis; -for (;;) { - tis =ravb_read (ndev,TIS ); - ris0 =ravb_read (ndev,RIS0 ); -if (!((ris0 & mask) || (tis & mask))) -break ; +/* Processing RX Descriptor Ring */ +/* Clear RX interrupt */ +ravb_write (ndev, ~(mask |RIS0_RESERVED ),RIS0 ); +if (ravb_rx (ndev, "a, q)) + goto out; -/* Processing RX Descriptor Ring */ -if (ris0 & mask) { -/* Clear RX interrupt */ -ravb_write (ndev, ~(mask |RIS0_RESERVED ),RIS0 ); -if (ravb_rx (ndev, "a, q)) - goto out; - } -/* Processing TX Descriptor Ring */ -if (tis & mask) { -spin_lock_irqsave (&priv->lock, flags); -/* Clear TX interrupt */ -ravb_write (ndev, ~(mask |TIS_RESERVED ),TIS ); -ravb_tx_free (ndev, q, true); -netif_wake_subqueue (ndev, q); -spin_unlock_irqrestore (&priv->lock, flags); - } - } +/* Processing RX Descriptor Ring */ +spin_lock_irqsave (&priv->lock, flags); +/* Clear TX interrupt */ +ravb_write (ndev, ~(mask |TIS_RESERVED ),TIS ); +ravb_tx_free (ndev, q, true); +netif_wake_subqueue (ndev, q); +spin_unlock_irqrestore (&priv->lock, flags);napi_complete (napi);
drivers/net/ethernet/ti/davinci_emac.c +2 -2
@@ -169,11 +169,11 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";/* EMAC mac_status register */ #define EMAC_MACSTATUS_TXERRCODE_MASK (0xF00000)#define EMAC_MACSTATUS_TXERRCODE_SHIFT (20) -#define EMAC_MACSTATUS_TXERRCH_MASK (0x7) +#define EMAC_MACSTATUS_TXERRCH_MASK (0x70000)#define EMAC_MACSTATUS_TXERRCH_SHIFT (16)#define EMAC_MACSTATUS_RXERRCODE_MASK (0xF000)#define EMAC_MACSTATUS_RXERRCODE_SHIFT (12) -#define EMAC_MACSTATUS_RXERRCH_MASK (0x7) +#define EMAC_MACSTATUS_RXERRCH_MASK (0x700)#define EMAC_MACSTATUS_RXERRCH_SHIFT (8)/* EMAC RX register masks */
drivers/net/fddi/defxx.c +30 -17
78 lines not on this page · raw message
drivers/net/geneve.c +2 -2
@@ -891,7 +891,7 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,__be16 sport;int err; -if (!pskb_network_may_pull (skb,sizeof (struct iphdr ))) +if (!pskb_inet_may_pull (skb))return -EINVAL ; sport =udp_flow_src_port (geneve->net, skb,1 ,USHRT_MAX , true);
@@ -957,7 +957,7 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,__be16 sport;int err; -if (!pskb_network_may_pull (skb,sizeof (struct ipv6hdr ))) +if (!pskb_inet_may_pull (skb))return -EINVAL ; sport =udp_flow_src_port (geneve->net, skb,1 ,USHRT_MAX , true);
drivers/net/phy/intel-xway.c +21 -0
@@ -11,6 +11,18 @@#define XWAY_MDIO_IMASK 0x19/* interrupt mask */ #define XWAY_MDIO_ISTAT 0x1A/* interrupt status */ +#define XWAY_MDIO_LED 0x1B/* led control */ + +/* bit 15:12 are reserved */ +#define XWAY_MDIO_LED_LED3_EN BIT(11)/* Enable the integrated function of LED3 */ +#define XWAY_MDIO_LED_LED2_EN BIT(10)/* Enable the integrated function of LED2 */ +#define XWAY_MDIO_LED_LED1_EN BIT(9)/* Enable the integrated function of LED1 */ +#define XWAY_MDIO_LED_LED0_EN BIT(8)/* Enable the integrated function of LED0 */ +/* bit 7:4 are reserved */ +#define XWAY_MDIO_LED_LED3_DA BIT(3)/* Direct Access to LED3 */ +#define XWAY_MDIO_LED_LED2_DA BIT(2)/* Direct Access to LED2 */ +#define XWAY_MDIO_LED_LED1_DA BIT(1)/* Direct Access to LED1 */ +#define XWAY_MDIO_LED_LED0_DA BIT(0)/* Direct Access to LED0 */ #define XWAY_MDIO_INIT_WOL BIT(15)/* Wake-On-LAN */ #define XWAY_MDIO_INIT_MSRE BIT(14)
@@ -159,6 +171,15 @@ static int xway_gphy_config_init(struct phy_device *phydev)/* Clear all pending interrupts */ phy_read (phydev,XWAY_MDIO_ISTAT ); +/* Ensure that integrated led function is enabled for all leds */ + err =phy_write (phydev,XWAY_MDIO_LED , +XWAY_MDIO_LED_LED0_EN | +XWAY_MDIO_LED_LED1_EN | +XWAY_MDIO_LED_LED2_EN | +XWAY_MDIO_LED_LED3_EN ); +if (err) +return err; + phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCH, XWAY_MMD_LEDCH_NACS_NONE | XWAY_MMD_LEDCH_SBF_F02HZ |
drivers/net/wan/lapbether.c +25 -7
@@ -51,6 +51,8 @@ struct lapbethdev {struct list_head node;struct net_device *ethdev;/* link to ethernet device */ struct net_device *axdev;/* lapbeth device (lapb#) */ +bool up; +spinlock_t up_lock;/* Protects "up" */ };static LIST_HEAD (lapbeth_devices);
@@ -98,8 +100,9 @@ static int lapbeth_rcv(struct sk_buff *skb, struct net_device *dev, struct packercu_read_lock (); lapbeth =lapbeth_get_x25_dev (dev);if (!lapbeth) - goto drop_unlock; -if (!netif_running (lapbeth->axdev)) + goto drop_unlock_rcu; +spin_lock_bh (&lapbeth->up_lock); +if (!lapbeth->up) goto drop_unlock; len = skb->data[0 ] + skb->data[1 ] *256 ;
@@ -114,11 +117,14 @@ static int lapbeth_rcv(struct sk_buff *skb, struct net_device *dev, struct packe goto drop_unlock; } out: +spin_unlock_bh (&lapbeth->up_lock);rcu_read_unlock ();return 0 ; drop_unlock:kfree_skb (skb); goto out; +drop_unlock_rcu: +rcu_read_unlock (); drop:kfree_skb (skb);return 0 ;
@@ -148,13 +154,11 @@ static int lapbeth_data_indication(struct net_device *dev, struct sk_buff *skb)static netdev_tx_t lapbeth_xmit (struct sk_buff *skb,struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err; -/* -* Just to be *really* sure not to send anything if the interface -* is down, the ethernet device may have gone. -*/ -if (!netif_running (dev)) +spin_lock_bh (&lapbeth->up_lock); +if (!lapbeth->up) goto drop;/* There should be a pseudo header of 1 byte added by upper layers.
@@ -185,6 +189,7 @@ static netdev_tx_t lapbeth_xmit(struct sk_buff *skb, goto drop; } out: +spin_unlock_bh (&lapbeth->up_lock);return NETDEV_TX_OK ; drop:kfree_skb (skb);
@@ -276,6 +281,7 @@ static const struct lapb_register_struct lapbeth_callbacks = {*/ static int lapbeth_open (struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err;if ((err =lapb_register (dev, &lapbeth_callbacks)) !=LAPB_OK ) {
@@ -283,13 +289,22 @@ static int lapbeth_open(struct net_device *dev)return -ENODEV ; } +spin_lock_bh (&lapbeth->up_lock); + lapbeth->up = true; +spin_unlock_bh (&lapbeth->up_lock); +return 0 ; }static int lapbeth_close (struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err; +spin_lock_bh (&lapbeth->up_lock); + lapbeth->up = false; +spin_unlock_bh (&lapbeth->up_lock); +if ((err =lapb_unregister (dev)) !=LAPB_OK )pr_err ("lapb_unregister error: %d\n" , err);
@@ -347,6 +362,9 @@ static int lapbeth_new_device(struct net_device *dev)dev_hold (dev); lapbeth->ethdev = dev; + lapbeth->up = false; +spin_lock_init (&lapbeth->up_lock); + rc = -EIO ;if (register_netdevice (ndev)) goto fail;
drivers/net/wireless/ath/ath10k/wmi-tlv.c +3 -0
@@ -461,6 +461,9 @@ static void ath10k_wmi_event_tdls_peer(struct ath10k *ar, struct sk_buff *skb)GFP_ATOMIC );break ; +default : +kfree (tb); +return ; } exit:
drivers/net/wireless/ath/ath9k/htc_drv_init.c +1 -1
@@ -246,7 +246,7 @@ static unsigned int ath9k_regread(void *hw_priv, u32 reg_offset)if (unlikely (r)) {ath_dbg (common,WMI ,"REGISTER READ FAILED: (0x%04x, %d)\n" , reg_offset, r); -return -EIO ; +return -1 ; }return be32_to_cpu (val);
drivers/net/wireless/ath/ath9k/hw.c +1 -1
@@ -287,7 +287,7 @@ static bool ath9k_hw_read_revisions(struct ath_hw *ah) srev =REG_READ (ah,AR_SREV ); -if (srev == -EIO ) { +if (srev ==-1 ) {ath_err (ath9k_hw_common (ah),"Failed to read SREV register" );return false;
drivers/net/wireless/intel/ipw2x00/libipw_wx.c +4 -2
@@ -633,8 +633,10 @@ int libipw_wx_set_encodeext(struct libipw_device *ieee, }if (ext->alg !=IW_ENCODE_ALG_NONE ) { -memcpy (sec.keys[idx], ext->key, ext->key_len); - sec.key_sizes[idx] = ext->key_len; +int key_len =clamp_val (ext->key_len,0 ,SCM_KEY_LEN ); + +memcpy (sec.keys[idx], ext->key, key_len); + sec.key_sizes[idx] = key_len; sec.flags |= (1 << idx);if (ext->alg ==IW_ENCODE_ALG_WEP ) { sec.encode_alg[idx] =SEC_ALG_WEP ;
drivers/net/wireless/marvell/mwl8k.c +1 -0
@@ -1469,6 +1469,7 @@ static int mwl8k_txq_init(struct ieee80211_hw *hw, int index) txq->skb =kcalloc (MWL8K_TX_DESCS ,sizeof (*txq->skb),GFP_KERNEL );if (txq->skb ==NULL ) {pci_free_consistent (priv->pdev, size, txq->txd, txq->txd_dma); + txq->txd =NULL ;return -ENOMEM ; }
drivers/net/wireless/mediatek/mt7601u/eeprom.c +1 -1
@@ -99,7 +99,7 @@ mt7601u_has_tssi(struct mt7601u_dev *dev, u8 *eeprom) {u16 nic_conf1 =get_unaligned_le16 (eeprom +MT_EE_NIC_CONF_1 ); -return ~nic_conf1 && (nic_conf1 &MT_EE_NIC_CONF_1_TX_ALC_EN ); +return (u16 )~nic_conf1 && (nic_conf1 &MT_EE_NIC_CONF_1_TX_ALC_EN ); } static void
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/table.c +370 -130
99 lines not on this page · raw message
drivers/net/wireless/realtek/rtw88/phy.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/ibmvscsi/ibmvfc.c +38 -19
57 lines not on this page · raw message
drivers/usb/dwc2/core_intr.c +83 -71
154 lines not on this page · raw message
drivers/usb/gadget/udc/aspeed-vhub/core.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/epn.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/pch_udc.c +33 -16
49 lines not on this page · raw message
drivers/usb/host/xhci-mtk-sch.c +63 -17
80 lines not on this page · raw message
drivers/usb/typec/tcpm/tcpm.c +62 -43
105 lines not on this page · raw message
kernel/sched/debug.c +29 -13
42 lines not on this page · raw message
net/ipv4/route.c +28 -14
42 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +65 -62
127 lines not on this page · raw message
sound/soc/intel/boards/kbl_da7219_max98927.c +30 -8
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh +1 -1
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.4.119 kernel.
All users of the 5.4 kernel series must upgrade.
Quoted 9 lines
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-5.4.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.4.119,
Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-5.4.y
Version: 5.4.119
Commit: b82e5721a17325739adef83a029340a63b53d4ad
Compiler: gcc version 7.3.0 (GCC)
arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8476
passed: 8476
failed: 0
timeout: 0
--------------------------------------------------------------------
x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8476
passed: 8476
failed: 0
timeout: 0
--------------------------------------------------------------------