Skip to contentSkip to conversation

Linux 5.4.119

DISCUSSION Greg Kroah-Hartman 2 participants 3 messages May 14, 2021 – May 16, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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_abs

Colin 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

author maintainer
#1 lore raw
Makefile +1 -1
index 05a19383b396..9b7780de5f6b 100644
@@ -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
index 83be3a797411..fedb21377c66 100644
@@ -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
index ea55f377d17c..424d12ecc901 100644
@@ -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
index 6dc96948a9cc..70a2b6e2ad3f 100644
@@ -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
index c952a615148e..737f0e20a452 100644
@@ -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
index 4eddbb8d7fca..60a588ce45e1 100644
@@ -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
index 8f23fcadecb8..9573da378826 100644
@@ -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
index e81cd83b138b..4b9d4f1bbe01 100644
@@ -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
index b658f2b641e2..3348a32f7d0b 100644
@@ -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
index d6f6cee4d549..6537c69de3dd 100644
@@ -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
index 257b29184af9..e28eb1c0e0bf 100644
@@ -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
index 545a1fe0e119..245376630c3d 100644
@@ -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
index 9bc2da69f80c..2f2c2d172b24 100644
@@ -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
index 69cbef472377..d4b2b430dad0 100644
@@ -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
index beec24145af7..30fdd38aef6d 100644
@@ -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
index f21176cac038..89a3107cad28 100644
@@ -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
index 8ae6981735b8..e48946a51242 100644
@@ -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
index 449c167dd892..b84a3bfe8c51 100644
@@ -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
index 39052de915f3..3a909194284a 100644
@@ -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
index d36061603752..e032932348d6 100644
@@ -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
index c9f4d4ba058a..2ceda2a040ed 100644
@@ -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
index c4cbb65e742f..757175ccf53c 100644
@@ -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
index b915fe658979..2ca9114fcf00 100644
@@ -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
index a1c60d5b50af..5131ed787409 100644
@@ -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
index 9b522152d8f0..0455dc1b2797 100644
@@ -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
index e13e96e665e0..537142b877b8 100644
@@ -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
index dd9b19b1f459..6938b793a015 100644
@@ -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
index 770542ccdb46..bdcb07a98cd3 100644
@@ -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();
+	asm volatile("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();
+	asm volatile("ptesync": : :"memory");
 	return 0;
 }
 
arch/powerpc/perf/isa207-common.c +2 -2
index 0b5c8f4fbdbf..944180f55a3c 100644
@@ -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
index 3a9969c429b3..054f927bfef9 100644
@@ -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
index 561917fa54a8..afca4b737e80 100644
@@ -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
index 16df9cc8f360..2d4c09a77910 100644
@@ -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
index 61c02a162d37..3588f4c65a4d 100644
@@ -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
index 6fb17b550a80..d08e13c6dc98 100644
@@ -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
index 8ef85139553f..36a28b9e46cb 100644
@@ -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
index be50ef8572cc..6a98a7651621 100644
@@ -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
index cb0fdcaf1415..4a4198b806b4 100644
@@ -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, &microcode_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, &microcode_pdev->dev, true);
+	if (tmp_ret != UCODE_NEW)
+		goto put;
+
 	mutex_lock(&microcode_mutex);
 	ret = microcode_reload_late();
 	mutex_unlock(&microcode_mutex);
arch/x86/kernel/kprobes/core.c +12 -5
index 5294018535d0..c205d77d57da 100644
@@ -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
index e32e8bcf9455..3f63bd7421ac 100644
@@ -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
index f9b1a2abdbe2..2826bd45c61a 100644
@@ -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
index a1cbb894e5f0..416cfbf2f1c2 100644
@@ -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
index ebecab8c3f36..7c1c399450f3 100644
@@ -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
index d1644a8ef9fa..abc0e87ca1a8 100644
@@ -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
index d7228f8e9297..d1ed9679c717 100644
@@ -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
index 9c6e6a7b9354..c9976dc4aa65 100644
@@ -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
index 398991381e9a..4f2ff1b2b450 100644
@@ -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
index 5f1376578ea3..90dcf4a915f4 100644
@@ -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
index 1d3002d773f7..20cb0c23a22c 100644
@@ -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
index 040d7bb21397..dca91d641f1d 100644
@@ -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
index 03ddcf426887..0b8f53a688b8 100644
@@ -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
index 56db949a7b70..e6258b4485dc 100644
@@ -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
index 84ca38450d02..af957179b135 100644
@@ -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
index 45cfc57bff92..af6ac17c7dae 100644
@@ -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
index c0f4631601e2..babca032352a 100644
@@ -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
index a541397a172c..18fee827602a 100644
@@ -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
index 1dc5ac859f7b..bdd4e36763f1 100644
@@ -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
index a68358b31292..538d9592c951 100644
@@ -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
index cd1cdf5305bc..4898ef41fd9f 100644
@@ -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
index 2136cbe4bf6c..f65ebc4117d1 100644
@@ -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
index 4a73fc70f7a9..df9a1f35b832 100644
@@ -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
index 1b762eefc6c1..5e0568c0113e 100644
@@ -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
index dce45f7a497d..c79652ee94be 100644
@@ -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
index e40a77bfe821..7dfbd0f6b76b 100644
@@ -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
index 5f35df23fb18..9266c8e76be7 100644
@@ -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
index dd23d9fdf6a8..afd420b01a0c 100644
@@ -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
index 1aec841fda35..82f1d5434b82 100644
@@ -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
index 8f37eefa0a02..a738c7e456dd 100644
@@ -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
index 3dc9b30a64b0..bfd503d22088 100644
@@ -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
index 709c4ef5e7d5..03d3550ecc7c 100644
@@ -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
index d9e8105045a6..1bfa690143d7 100644
@@ -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
index 47f0208aa7c3..a5f92e2889cb 100644
@@ -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
index 0b55bc146b29..9260ad47350f 100644
@@ -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
index a51d3b795770..17f0dd1f891e 100644
@@ -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
index 959d4912ec0d..0230a13a6ab7 100644
@@ -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
index 20a4fbc53007..a1f8a9a91213 100644
@@ -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
index c92b56485fa6..a0d045c1bc9e 100644
@@ -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
index 8f0e1f802f2d..a5e960cd8245 100644
@@ -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
index 2dfea357b131..c36522849325 100644
@@ -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
index c2005c789d2b..319d1fa617c8 100644
@@ -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
index b2dc80286464..92ba0183fd8a 100644
@@ -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
index 19337aed9f23..6cc71c90f85e 100644
@@ -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
index c4810c73b2a2..2de45587569a 100644
@@ -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
index bdbde8e22420..4041b35ea3da 100644
@@ -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
index 5c95c789f302..e800e8e8bed5 100644
@@ -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
index 2b57ba70ddd6..c09080712485 100644
@@ -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
index 540aab5e502d..3fafc5424e76 100644
@@ -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
index 653ddf30973e..b9b46a0c4803 100644
@@ -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
index e99983f07663..8bffa6e013fc 100644
@@ -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
index 02b92e3cd9a8..2822ca5e8277 100644
@@ -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
index 563a9b366294..e81e89a81cb5 100644
@@ -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
index 0a6c200e3dcb..d7eef5292ae2 100644
@@ -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
index e0299a789923..6dde49d9aa4c 100644
@@ -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
index f0dfe68486d1..c43a35df25de 100644
@@ -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
index a0364ac497f9..54bb3a59bf17 100644
@@ -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
index b3505f402476..8647c50b66e5 100644
@@ -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
index 3fe99519fedf..7ac7a5063fb2 100644
@@ -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
index 27bc417029e1..332ffd7cf8b0 100644
@@ -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
index 73bd3023202f..b42804b1801e 100644
@@ -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
index efcd4b980c94..1adba6a46dcb 100644
@@ -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
index 057d7bbde402..d98174eced5a 100644
@@ -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
index 345addd9306d..fa8a7fce4481 100644
@@ -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
index 7a84a48c75da..543768551866 100644
@@ -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
index 48832f9b215c..ee437af41f11 100644
@@ -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
index 036b9452b19f..32a76b8feaa5 100644
@@ -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
index e9ad8bb82f44..0f3c09fb9c34 100644
@@ -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
index a6964feeec77..81e4b0f46662 100644
@@ -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
index 2390ed077a2f..60f146920b9f 100644
@@ -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
index 963ebcdfcbce..c10995ca624a 100644
@@ -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
index 5a7831a97a13..588389697cf9 100644
@@ -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
index e6d4ad99cc38..3f1c189646f4 100644
@@ -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
index 4ab57d33a87e..6bd6fb5a3613 100644
@@ -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
index cb50b41cd3df..64a2453e06ba 100644
@@ -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
index 92af7204711c..696f21543aa7 100644
@@ -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
index bebe38d74d66..ab1b4da5d5be 100644
@@ -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
index 551799fb3842..9208a72fe17e 100644
@@ -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, &quota, q))
+		goto out;
 
-		/* Processing RX Descriptor Ring */
-		if (ris0 & mask) {
-			/* Clear RX interrupt */
-			ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0);
-			if (ravb_rx(ndev, &quota, 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
index ae27be85e363..7cc09a6f9f9a 100644
@@ -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
index c33a08d65208..84f5717c01e2 100644
@@ -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
index b7875b36097f..574a8bca1ec4 100644
@@ -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
index 60f357d2f79f..4e42954d8cbf 100644
@@ -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 packe
 	rcu_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
index d38276ac375e..315d20f5c8eb 100644
@@ -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
index 40a065028ebe..11054c17a9b5 100644
@@ -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
index 052deffb4c9d..9fd8e64288ff 100644
@@ -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
index 3d558b47168b..456330296b73 100644
@@ -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
index c4db6417748f..1b76b2419186 100644
@@ -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
index c868582c5d22..aa3b64902cf9 100644
@@ -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
index 47d199d2e7dc..02da69e9dfe7 100644

Lines of this file are not shown. View the raw message.

drivers/nfc/pn533/pn533.c +3 -0
index a172a32aa9d9..3ea38ce86cc9 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/multipath.c +4 -0
index 207a88ea10f3..855edc4e1244 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/pci.c +1 -1
index 3bee3724e9fa..2cb2ead7615b 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/tcp.c +2 -2
index ac3503ea54c4..718152adc625 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/target/tcp.c +2 -2
index 9242224156f5..9bfd92b6677b 100644

Lines of this file are not shown. View the raw message.

drivers/of/fdt.c +2 -10
index fc24102e25ce..223d617ecfe1 100644

Lines of this file are not shown. View the raw message.

drivers/pci/vpd.c +0 -1
index 7915d10f9aa1..bd549070c011 100644

Lines of this file are not shown. View the raw message.

drivers/phy/marvell/Kconfig +2 -2
index 4053ba6cd0fb..6e3e5d67e816 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/pmc_atom.c +2 -26
index 2b1a3a6ee8db..597cfabc0967 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +3 -3
index b861a0f14c9d..3364ae0b9bfe 100644

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/scsi/jazz_esp.c +3 -1
index 7f683e42c798..f55b07aa1cca 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/sni_53c710.c +4 -1
index a85d52b5dc32..0521575c6773 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/sun3x_esp.c +3 -1
index 440a73eae647..f8b1e5748440 100644

Lines of this file are not shown. View the raw message.

drivers/soc/aspeed/aspeed-lpc-snoop.c +3 -1
index dbe5325a324d..538d7aab8db5 100644

Lines of this file are not shown. View the raw message.

drivers/soc/qcom/mdt_loader.c +17 -0
index 24cd193dec55..eba7f76f9d61 100644

Lines of this file are not shown. View the raw message.

drivers/soundwire/bus.c +2 -1
index a90963812357..d90f00d09257 100644

Lines of this file are not shown. View the raw message.

drivers/soundwire/stream.c +9 -1
index de7c57e17710..23accfedbf4d 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-fsl-lpspi.c +1 -1
index ecb4396707cf..58b2da91be1c 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-stm32.c +2 -1
index 9e7a6de3c43d..3af6a5a3a4b2 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi.c +2 -7
index e1205d72be52..7592d4de20c9 100644

Lines of this file are not shown. View the raw message.

drivers/staging/fwserial/fwserial.c +7 -3
index 4df6e3c1ea96..35833753c735 100644

Lines of this file are not shown. View the raw message.

drivers/staging/greybus/uart.c +7 -6
index 4ffb334cd5cd..fc1bd68889c9 100644

Lines of this file are not shown. View the raw message.

drivers/staging/media/omap4iss/iss.c +3 -1
index 1a966cb2f3a6..eed495f7665d 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8192u/r8192U_core.c +1 -1
index ddc09616248a..66cd43f963c9 100644

Lines of this file are not shown. View the raw message.

drivers/tty/amiserial.c +1 -0
index 8330fd809a05..34d6ef75c95c 100644

Lines of this file are not shown. View the raw message.

drivers/tty/moxa.c +12 -6
index 3a1a5e0ee93f..1254b39074ed 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/serial_core.c +3 -3
index ad262349703b..e2ab6524119a 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/stm32-usart.c +15 -2
index bf83e6c212f5..23b7bdae173c 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/stm32-usart.h +0 -3
index a175c1094dc8..a0b816e0e89b 100644

Lines of this file are not shown. View the raw message.

drivers/tty/tty_io.c +4 -4
index 642765bf1023..cee7514c3aaf 100644

Lines of this file are not shown. View the raw message.

drivers/usb/class/cdc-acm.c +3 -13
index 68d57b45273a..1e9aab6118f5 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc2/core_intr.c +83 -71

154 lines not on this page · raw message

drivers/usb/dwc2/hcd.c +9 -1
index 258056c82206..f29fbadb0548 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/aspeed-vhub/core.c +2 -1
index 90b134d5dca9..c1bfbfd9491d 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/aspeed-vhub/epn.c +1 -1
index 66d8884615f0..2cd406e8dd99 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/fotg210-udc.c +18 -8
index 21f3e6c4e4d6..c313d07ec16f 100644

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/gadget/udc/r8a66597-udc.c +2 -0
index 11e25a3f4f1f..a766476fd742 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/snps_udc_plat.c +2 -2
index 32f1d3e90c26..99805d60a7ab 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xhci-mtk-sch.c +63 -17

80 lines not on this page · raw message

drivers/usb/host/xhci-mtk.h +4 -2
index d9f438d078da..985e7a19f6f6 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/ti_usb_3410_5052.c +7 -2
index ef23acc9b9ce..b1449d4914cc 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/usb_wwan.c +5 -4
index 4b9845807bee..b2285d5a869d 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/tcpm/tcpci.c +18 -3
index 753645bb2527..59e304a341f8 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/tcpm/tcpm.c +62 -43

105 lines not on this page · raw message

drivers/usb/usbip/vudc_sysfs.c +2 -0
index f7633ee655a1..d1cf6b51bf85 100644

Lines of this file are not shown. View the raw message.

drivers/vfio/mdev/mdev_sysfs.c +1 -1
index f32c582611eb..ca9476883f15 100644

Lines of this file are not shown. View the raw message.

fs/overlayfs/copy_up.c +2 -1
index 7b758d623b5b..143c52de97ec 100644

Lines of this file are not shown. View the raw message.

include/linux/hid.h +2 -0
index c7044a14200e..ae906deb42e8 100644

Lines of this file are not shown. View the raw message.

include/linux/kvm_host.h +2 -2
index 21aa6d736e99..0ec4ec428b9b 100644

Lines of this file are not shown. View the raw message.

include/linux/smp.h +1 -1
index 6fc856c9eda5..36a9da719110 100644

Lines of this file are not shown. View the raw message.

include/linux/spi/spi.h +3 -0
index acd91300a4ab..7067f85cef0b 100644

Lines of this file are not shown. View the raw message.

include/linux/tty_driver.h +1 -1
index 358446247ccd..7186d77f431e 100644

Lines of this file are not shown. View the raw message.

include/net/addrconf.h +0 -1
index ab8b3eb53d4b..8d90fb9184e8 100644

Lines of this file are not shown. View the raw message.

include/net/bluetooth/hci_core.h +1 -0
index 3cd232cf29c6..325e8efb5b36 100644

Lines of this file are not shown. View the raw message.

include/uapi/linux/tty_flags.h +2 -2
index 900a32e63424..6a3ac496a56c 100644

Lines of this file are not shown. View the raw message.

kernel/sched/debug.c +29 -13

42 lines not on this page · raw message

kernel/smp.c +5 -5
index 7dbcb402c2fc..3a390932f8b2 100644

Lines of this file are not shown. View the raw message.

kernel/up.c +1 -1
index 862b460ab97a..8e8551c8b285 100644

Lines of this file are not shown. View the raw message.

lib/bug.c +15 -18
index 8c98af0bf585..c3aa22cbc876 100644

Lines of this file are not shown. View the raw message.

mm/memory-failure.c +1 -1
index 3151c87dff73..d823ec74f3fc 100644

Lines of this file are not shown. View the raw message.

mm/sparse.c +1 -0
index 78bbecd904c3..191e29cca3fb 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_event.c +2 -1
index 0a88645f103f..bd678ffdaef7 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_request.c +8 -4
index 3d25dbf10b26..7f3f4ea56d44 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_multicast.c +8 -25
index 066cd3c59cfd..6276030f5854 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +4 -4
index 91909e5d6807..a30878346f54 100644

Lines of this file are not shown. View the raw message.

net/hsr/hsr_framereg.c +2 -1
index 002f341f3564..4a9200729a32 100644

Lines of this file are not shown. View the raw message.

net/ipv4/route.c +28 -14

42 lines not on this page · raw message

net/ipv4/tcp_cong.c +4 -0
index 62292eef151c..6d5600889dcf 100644

Lines of this file are not shown. View the raw message.

net/ipv6/mcast_snoop.c +7 -5
index d3d6b6a66e5f..04d5fcdfa6e0 100644

Lines of this file are not shown. View the raw message.

net/mac80211/main.c +5 -2
index 5b3189a37680..f215218a88c9 100644

Lines of this file are not shown. View the raw message.

net/nfc/digital_dep.c +2 -0
index 65aaa9d7c813..bcd4d74e8a82 100644

Lines of this file are not shown. View the raw message.

net/nfc/llcp_sock.c +4 -0
index 170c342b11da..0d4246af6c02 100644

Lines of this file are not shown. View the raw message.

net/sctp/socket.c +22 -16
index 783fd65b1f98..2146372adff4 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/vmci_transport.c +1 -2
index 8c9c4ed90fa7..aaabcd84268a 100644

Lines of this file are not shown. View the raw message.

net/wireless/scan.c +2 -0
index 328402ab64a3..83297832744a 100644

Lines of this file are not shown. View the raw message.

samples/kfifo/bytestream-example.c +6 -2
index 9ca3e4400c98..ecae2139274f 100644

Lines of this file are not shown. View the raw message.

samples/kfifo/inttype-example.c +6 -2
index 6cdeb72f83f1..7b4489e7a9a5 100644

Lines of this file are not shown. View the raw message.

samples/kfifo/record-example.c +6 -2
index 79ae8bb04120..eafe0838997d 100644

Lines of this file are not shown. View the raw message.

sound/core/init.c +0 -2
index db99b7fad6ad..45bbc4884ef0 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +65 -62

127 lines not on this page · raw message

sound/soc/codecs/ak5558.c +2 -2
index 5eb4168bb9d9..e98312a6b840 100644

Lines of this file are not shown. View the raw message.

sound/soc/generic/audio-graph-card.c +1 -1
index 6007e6305735..1bc498124689 100644

Lines of this file are not shown. View the raw message.

sound/soc/generic/simple-card.c +1 -1
index fc9c753db8dd..4484c40c7a39 100644

Lines of this file are not shown. View the raw message.

sound/soc/intel/boards/kbl_da7219_max98927.c +30 -8
index 829f95fc4179..16996f6aa2dc 100644

Lines of this file are not shown. View the raw message.

sound/soc/samsung/tm2_wm5110.c +1 -1
index bb9910d4cbe2..058847071584 100644

Lines of this file are not shown. View the raw message.

sound/usb/card.c +7 -7
index 230d862cfa3a..c2dd18c5cadb 100644

Lines of this file are not shown. View the raw message.

sound/usb/midi.c +1 -1
index 1cc17c449407..c205a26ef509 100644

Lines of this file are not shown. View the raw message.

sound/usb/quirks.c +12 -4
index 3d1585c12b07..186e90e3636c 100644

Lines of this file are not shown. View the raw message.

sound/usb/usbaudio.h +2 -0
index 55a2119c2411..ff97fdcf63bd 100644

Lines of this file are not shown. View the raw message.

tools/perf/trace/beauty/fsconfig.sh +3 -4
index 83fb24df05c9..bc6ef7bb7a5f 100755

Lines of this file are not shown. View the raw message.

tools/perf/util/symbol_fprintf.c +1 -1
index 35c936ce33ef..2664fb65e47a 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh +1 -1
index c02291e9841e..880e3ab9d088 100755

Lines of this file are not shown. View the raw message.

virt/kvm/coalesced_mmio.c +17 -2
index 8ffd07e2a160..6b870e4b9b97 100644

Lines of this file are not shown. View the raw message.

virt/kvm/kvm_main.c +5 -5
index 048b555c5acc..f83fa0aeeb45 100644

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.

Tested-by Hulk Robot
#2 lore raw
In reply to Greg Kroah-Hartman
Quoted 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.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

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
--------------------------------------------------------------------