Skip to contentSkip to conversation

Linux 4.19.312

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 13, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 4.19.312 kernel.

All users of the 4.19 kernel series must upgrade.

The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/admin-guide/hw-vuln/spectre.rst                   |   18 
 Documentation/admin-guide/kernel-parameters.txt                 |    6 
 Makefile                                                        |    2 
 arch/arm/boot/dts/mmp2-brownstone.dts                           |  332 ++++------
 arch/arm64/boot/dts/rockchip/rk3399.dtsi                        |   12 
 arch/parisc/include/asm/checksum.h                              |  107 +--
 arch/powerpc/include/asm/reg_fsl_emb.h                          |   11 
 arch/powerpc/lib/Makefile                                       |    2 
 arch/sparc/kernel/nmi.c                                         |    2 
 arch/sparc/vdso/vma.c                                           |    7 
 arch/x86/include/asm/cpufeatures.h                              |    2 
 arch/x86/include/asm/msr-index.h                                |    2 
 arch/x86/kernel/cpu/amd.c                                       |   10 
 arch/x86/kernel/cpu/bugs.c                                      |  117 +--
 arch/x86/kernel/cpu/common.c                                    |   17 
 arch/x86/mm/ident_map.c                                         |   23 
 arch/x86/mm/pat.c                                               |   50 +
 block/blk-stat.c                                                |    2 
 drivers/ata/ahci.c                                              |    5 
 drivers/ata/sata_mv.c                                           |   63 -
 drivers/ata/sata_sx4.c                                          |    6 
 drivers/base/power/wakeirq.c                                    |    4 
 drivers/block/loop.c                                            |  204 +++---
 drivers/bluetooth/btintel.c                                     |    2 
 drivers/clk/qcom/gcc-ipq8074.c                                  |    2 
 drivers/clk/qcom/mmcc-apq8084.c                                 |    2 
 drivers/clk/qcom/mmcc-msm8974.c                                 |    2 
 drivers/crypto/qat/qat_common/adf_aer.c                         |   23 
 drivers/firmware/efi/vars.c                                     |   17 
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c                        |    4 
 drivers/gpu/drm/amd/display/modules/inc/mod_stats.h             |    4 
 drivers/gpu/drm/imx/parallel-display.c                          |    4 
 drivers/gpu/drm/vc4/vc4_hdmi.c                                  |    2 
 drivers/gpu/drm/vkms/vkms_drv.c                                 |    2 
 drivers/hwmon/amc6821.c                                         |   11 
 drivers/input/rmi4/rmi_driver.c                                 |    6 
 drivers/md/dm-raid.c                                            |    2 
 drivers/md/raid5.c                                              |   12 
 drivers/media/pci/sta2x11/sta2x11_vip.c                         |    9 
 drivers/media/tuners/xc4000.c                                   |    4 
 drivers/misc/vmw_vmci/vmci_datagram.c                           |    6 
 drivers/mmc/core/block.c                                        |   10 
 drivers/mmc/host/tmio_mmc_core.c                                |    2 
 drivers/mtd/ubi/fastmap.c                                       |    7 
 drivers/mtd/ubi/vtbl.c                                          |    6 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c              |   34 -
 drivers/net/ethernet/realtek/r8169_main.c                       |    9 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c               |   40 -
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c             |   40 -
 drivers/net/wireless/ath/ath9k/antenna.c                        |    2 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c     |    4 
 drivers/pci/pci-driver.c                                        |   23 
 drivers/s390/crypto/zcrypt_api.c                                |    2 
 drivers/scsi/lpfc/lpfc_nportdisc.c                              |    6 
 drivers/scsi/lpfc/lpfc_nvmet.c                                  |    2 
 drivers/scsi/qla2xxx/qla_target.c                               |   10 
 drivers/slimbus/core.c                                          |    4 
 drivers/soc/fsl/qbman/qman.c                                    |   98 ++
 drivers/staging/comedi/drivers/comedi_test.c                    |   30 
 drivers/staging/speakup/synth.c                                 |    4 
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c       |   52 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h       |    6 
 drivers/tty/n_gsm.c                                             |    3 
 drivers/tty/serial/fsl_lpuart.c                                 |    7 
 drivers/tty/vt/vt.c                                             |    4 
 drivers/usb/class/cdc-wdm.c                                     |    6 
 drivers/usb/core/port.c                                         |    5 
 drivers/usb/core/sysfs.c                                        |   16 
 drivers/usb/dwc2/core.h                                         |   14 
 drivers/usb/dwc2/core_intr.c                                    |   63 +
 drivers/usb/dwc2/gadget.c                                       |    4 
 drivers/usb/dwc2/hcd.c                                          |   47 +
 drivers/usb/dwc2/hcd_ddma.c                                     |   17 
 drivers/usb/dwc2/hw.h                                           |    2 
 drivers/usb/gadget/function/f_ncm.c                             |    2 
 drivers/usb/gadget/udc/core.c                                   |    4 
 drivers/usb/host/sl811-hcd.c                                    |    2 
 drivers/usb/serial/cp210x.c                                     |    4 
 drivers/usb/serial/ftdi_sio.c                                   |    2 
 drivers/usb/serial/ftdi_sio_ids.h                               |    6 
 drivers/usb/serial/option.c                                     |    6 
 drivers/usb/storage/isd200.c                                    |   23 
 drivers/vfio/platform/vfio_platform_irq.c                       |    5 
 drivers/video/fbdev/core/fbmon.c                                |    7 
 drivers/video/fbdev/via/accel.c                                 |    4 
 drivers/virtio/virtio.c                                         |   10 
 fs/aio.c                                                        |    8 
 fs/btrfs/export.c                                               |    9 
 fs/btrfs/ioctl.c                                                |   25 
 fs/btrfs/send.c                                                 |   10 
 fs/btrfs/volumes.c                                              |   12 
 fs/exec.c                                                       |    1 
 fs/ext4/resize.c                                                |    3 
 fs/fat/nfs.c                                                    |    6 
 fs/fuse/fuse_i.h                                                |    1 
 fs/fuse/inode.c                                                 |    7 
 fs/isofs/inode.c                                                |   18 
 fs/nilfs2/alloc.c                                               |   38 -
 fs/nilfs2/btree.c                                               |   51 -
 fs/nilfs2/cpfile.c                                              |   10 
 fs/nilfs2/dat.c                                                 |   14 
 fs/nilfs2/direct.c                                              |   23 
 fs/nilfs2/gcinode.c                                             |    2 
 fs/nilfs2/ifile.c                                               |    4 
 fs/nilfs2/inode.c                                               |   31 
 fs/nilfs2/ioctl.c                                               |   37 -
 fs/nilfs2/mdt.c                                                 |    2 
 fs/nilfs2/namei.c                                               |    6 
 fs/nilfs2/nilfs.h                                               |    9 
 fs/nilfs2/page.c                                                |   11 
 fs/nilfs2/recovery.c                                            |   32 
 fs/nilfs2/segbuf.c                                              |    2 
 fs/nilfs2/segment.c                                             |   38 -
 fs/nilfs2/sufile.c                                              |   29 
 fs/nilfs2/super.c                                               |   57 -
 fs/nilfs2/sysfs.c                                               |   29 
 fs/nilfs2/the_nilfs.c                                           |   85 +-
 fs/open.c                                                       |   38 -
 fs/sysv/itree.c                                                 |   10 
 fs/ubifs/file.c                                                 |   13 
 include/linux/fs.h                                              |    3 
 include/linux/gfp.h                                             |    9 
 include/linux/sunrpc/sched.h                                    |    2 
 include/linux/timer.h                                           |   18 
 include/net/erspan.h                                            |   19 
 include/net/inet_connection_sock.h                              |    1 
 include/net/sock.h                                              |    9 
 include/soc/fsl/qman.h                                          |    9 
 include/trace/events/timer.h                                    |   17 
 include/uapi/linux/input-event-codes.h                          |    1 
 init/initramfs.c                                                |   77 +-
 kernel/events/core.c                                            |    9 
 kernel/power/suspend.c                                          |    1 
 kernel/printk/printk.c                                          |    6 
 kernel/time/timer.c                                             |  282 ++++++--
 mm/compaction.c                                                 |    7 
 mm/memory-failure.c                                             |    2 
 mm/memory.c                                                     |    4 
 mm/memtest.c                                                    |    4 
 mm/migrate.c                                                    |    6 
 mm/page_alloc.c                                                 |   10 
 mm/vmscan.c                                                     |    5 
 net/bluetooth/hci_debugfs.c                                     |   48 -
 net/bluetooth/hci_event.c                                       |   25 
 net/core/sock.c                                                 |    7 
 net/ipv4/inet_connection_sock.c                                 |   14 
 net/ipv4/ip_gre.c                                               |  104 ++-
 net/ipv4/tcp.c                                                  |    2 
 net/ipv6/ip6_fib.c                                              |   14 
 net/ipv6/ip6_gre.c                                              |    3 
 net/mac80211/cfg.c                                              |    5 
 net/netfilter/nf_tables_api.c                                   |   22 
 net/nfc/nci/core.c                                              |    5 
 net/rds/rdma.c                                                  |    2 
 net/sched/act_skbmod.c                                          |   10 
 net/xfrm/xfrm_user.c                                            |    3 
 scripts/Makefile.extrawarn                                      |    2 
 security/smack/smack_lsm.c                                      |   12 
 sound/pci/hda/patch_realtek.c                                   |    9 
 sound/sh/aica.c                                                 |   17 
 sound/soc/soc-ops.c                                             |    2 
 tools/iio/iio_utils.c                                           |    2 
 tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c |    1 
 tools/testing/ktest/ktest.pl                                    |    1 
 tools/testing/selftests/net/reuseaddr_conflict.c                |    2 
 virt/kvm/async_pf.c                                             |   31 
 166 files changed, 2098 insertions(+), 1189 deletions(-)

Alan Stern (2):
USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command
USB: core: Fix deadlock in usb_deauthorize_interface()

Aleksandr Burakov (1):
fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2

Aleksandr Loktionov (1):
i40e: fix vf may be used uninitialized in this function warning

Alex Henrie (1):
isofs: handle CDs with bad root inode but good Joliet root directory

Alex Williamson (1):
vfio/platform: Disable virqfds on cleanup

Andrey Jr. Melnikov (1):
ahci: asm1064: correct count of reported ports

Anna-Maria Gleixner (3):
timer/trace: Replace deprecated vsprintf pointer extension %pf by %ps timer/trace: Improve timer tracing
timers: Prepare support for PREEMPT_RT

Aric Cyr (1):
drm/amd/display: Fix nanosec stat overflow

Arnd Bergmann (4):
staging: vc04_services: changen strncpy() to strscpy_pad()
ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit
ata: sata_mv: Fix PCI device ID table declaration compilation warning
media: sta2x11: fix irq handler cast

Aurélien Jacobs (1):
USB: serial: option: add MeiG Smart SLM320 product

Bart Van Assche (1):
fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion

Bastien Nocera (1):
Bluetooth: Fix TOCTOU in HCI debugfs implementation

Borislav Petkov (1):

      x86/bugs: Use sysfs_emit()

Borislav Petkov (AMD) (1):
x86/CPU/AMD: Update the Zenbleed microcode revisions

Cameron Williams (1):
USB: serial: add device ID for VeriFone adapter

Christian Häggström (1):

      USB: serial: cp210x: add ID for MGP Instruments PDS100

Christoph Hellwig (4):
initramfs: factor out a helper to populate the initrd image
fs: add a vfs_fchown helper
fs: add a vfs_fchmod helper
initramfs: switch initramfs unpacking to struct file based APIs

Christophe JAILLET (1):
slimbus: core: Remove usage of the deprecated ida_simple_xx() API

Colin Ian King (1):
usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined

Conrad Kostecki (1):
ahci: asm1064: asm1166: don't limit reported ports

Dai Ngo (1):
SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned int

Damian Muszynski (1):
crypto: qat - resolve race condition during AER recovery

Dan Carpenter (1):
staging: vc04_services: fix information leak in create_component()

Daniel Vogelbacher (1):
USB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB

Dave Airlie (1):
amdkfd: use calloc instead of kzalloc to avoid integer overflow

Dave Stevenson (3):
staging: mmal-vchiq: Avoid use of bool in structures
staging: mmal-vchiq: Allocate and free components as required
staging: mmal-vchiq: Fix client_component for 64 bit kernel

David Hildenbrand (2):
virtio: reenable config if freezing device failed x86/mm/pat: fix VM_PAT handling in COW mappings

David Sterba (3):
btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks()
btrfs: export: handle invalid inode or root reference in btrfs_get_parent()
btrfs: send: handle path ref underflow in header iterate_inode_ref()

Dmitry Antipov (1):
wifi: ath9k: fix LNA selection in ath_ant_try_scan()

Dominique Martinet (1):
mmc: core: Fix switch on gp3 partition

Duje Mihanović (1):

      arm: dts: marvell: Fix maxium->maxim typo in brownstone dts

Duoming Zhou (1):
ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs

Edward Adam Davis (1):
Bluetooth: btintel: Fix null ptr deref in btintel_read_version

Eric Dumazet (3):
tcp: properly terminate timers for kernel sockets net/sched: act_skbmod: prevent kernel-infoleak
erspan: make sure erspan_base_hdr is present in skb->head

Felix Fietkau (1):
wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes

Gabor Juhos (3):
clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays
clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays
clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays

Geert Uytterhoeven (1):
initramfs: fix populate_initrd_image() section mismatch

Geliang Tang (1):
mptcp: add sk_stop_timer_sync helper

Genjian Zhang (1):
Revert "loop: Check for overflow while configuring loop"

Gergo Koteles (1):
Input: allocate keycode for Display refresh rate toggle

Goldwyn Rodrigues (1):
btrfs: allocate btrfs_ioctl_defrag_range_args on stack

Greg Kroah-Hartman (1):

      Linux 4.19.312

Guenter Roeck (4):
parisc: Fix ip_fast_csum
parisc: Fix csum_ipv6_magic on 32-bit systems
parisc: Fix csum_ipv6_magic on 64-bit systems
parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds

Gui-Dong Han (1):
media: xc4000: Fix atomicity violation in xc4000_get_frequency

Guo Mengqi (1):
drm/vkms: call drm_atomic_helper_shutdown before drm_dev_put()

Hangbin Liu (1):
ip_gre: do not report erspan version on GRE interface

Harald Freudenberger (1):
s390/zcrypt: fix reference counting on zcrypt card objects

Harshit Mogalapalli (1):
VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host()

Heiner Kallweit (1):
r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d

Helge Deller (1):
parisc: Do not hardcode registers in checksum functions

Holger Hoffstätte (1):
loop: properly observe rotational flag of underlying device

Hui Wang (1):
Bluetooth: hci_event: set the conn encrypted before conn establishes

I Gede Agastya Darma Laksana (1):
ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with microphone

Ian Abbott (1):
comedi: comedi_test: Prevent timers rescheduling during deletion

Ingo Molnar (1):
Revert "x86/mm/ident_map: Use gbpages only where full GB page should be mapped."

Jakub Kicinski (1):
selftests: reuseaddr_conflict: add missing new line at the end of the output

Jan Kara (1):
fat: fix uninitialized field in nostale filehandles

Jani Nikula (2):
drm/imx/ipuv3: do not return negative values from .get_modes() drm/vc4: hdmi: do not return negative values from .get_modes()

Joe Perches (1):
nilfs2: use a more common logging style

Johan Jonker (1):
arm64: dts: rockchip: fix rk3399 hdmi ports node

John Ogness (1):
printk: Update @console_may_schedule in console_trylock_spinning()

John Sperbeck (1):
init: open /initrd.image with O_LARGEFILE

Josua Mayer (1):
hwmon: (amc6821) add of_match table

Justin Tee (1):
scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc()

Kailang Yang (1):
ALSA: hda/realtek - Fix headset Mic no show at resume back for Lenovo ALC897 platform

Kim Phillips (2):
x86/cpu: Support AMD Automatic IBRS
x86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled

Krishna Kurapati (1):
usb: gadget: ncm: Fix handling of zero block length packets

Kuniyuki Iwashima (1):
ipv6: Fix infinite recursion in fib6_dump_done().

Kunwu Chan (1):
Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails

Lin Yujun (1):
Documentation/hw-vuln: Update spectre doc

Liu Shixin (1):
mm/memory-failure: fix an incorrect use of tail pages

Lubomir Rintel (1):
ARM: dts: mmp2-brownstone: Don't redeclare phandle references

Luiz Augusto von Dentz (1):
Bluetooth: btintel: Fixe build regression

Mahmoud Adam (1):
net/rds: fix possible cp null dereference

Martijn Coenen (5):
loop: Call loop_config_discard() only after new config is applied
loop: Remove sector_t truncation checks
loop: Factor out setting loop device size
loop: Refactor loop_set_status() size calculation
loop: Factor out configuring loop from status

Mathias Nyman (1):
usb: port: Don't try to peer unused USB ports based on location

Matthew Wilcox (Oracle) (1):
ubifs: Set page uptodate in the correct place

Maulik Shah (1):
PM: suspend: Set mem_sleep_current during kernel command line setup

Max Filippov (1):
exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack()

Maximilian Heyne (1):
ext4: fix corruption during on-line resize

Michael Ellerman (1):
powerpc/fsl: Fix mfpmr build errors with newer binutils

Miklos Szeredi (1):
fuse: don't unhash root

Minas Harutyunyan (4):
usb: dwc2: host: Fix remote wakeup from hibernation
usb: dwc2: host: Fix hibernation flow
usb: dwc2: host: Fix ISOC flow in DDMA mode
usb: dwc2: gadget: LPM flow fix

Muhammad Usama Anjum (1):
scsi: lpfc: Correct size for wqe for memset()

Nathan Chancellor (3):
kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1
xfrm: Avoid clang fortify warning in copy_to_user_tmpl()
powerpc: xor_vmx: Add '-mhard-float' to CFLAGS

Nicolas Pitre (1):
vt: fix unicode buffer corruption when deleting characters

Oliver Neukum (1):
usb: cdc-wdm: close race between read and workqueue

Pablo Neira Ayuso (3):
netfilter: nf_tables: disallow anonymous set with timeout flag
netfilter: nf_tables: reject constant set with timeout
netfilter: nf_tables: disallow timeout for anonymous sets

Petre Rodan (1):
tools: iio: replace seekdir() in iio_generic_buffer

Piotr Wejman (1):
net: stmmac: fix rx queue priority assignment

Qiang Zhang (1):
memtest: use {READ,WRITE}_ONCE in memory scanning

Qingliang Li (1):
PM: sleep: wakeirq: fix wake irq warning in system suspend

Quinn Tran (1):
scsi: qla2xxx: Fix command flush on cable pull

Rafael J. Wysocki (1):
PCI/PM: Drain runtime-idle callbacks before driver removal

Randy Dunlap (2):
sparc64: NMI watchdog: fix return value of __setup handler
sparc: vDSO: fix return value of __setup handler

Ricardo B. Marliere (1):
ktest: force $buildonly = 1 for 'make_warnings_file' test type

Richard Weinberger (1):
ubi: Check for too small LEB size in VTBL code

Roberto Sassu (2):
smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr()
smack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity()

Roman Smirnov (2):
block: prevent division by zero in blk_rq_stat_sum()
fbmon: prevent division by zero in fb_videomode_from_videomode()

Ryosuke Yasuoka (1):
nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet

Ryusuke Konishi (2):
nilfs2: fix failure to detect DAT corruption in btree and direct mappings
nilfs2: prevent kernel bug at submit_bh_wbc()

Samasth Norway Ananda (1):
tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num()

Samuel Thibault (1):
speakup: Fix 8bit characters from direct synth

Sean Anderson (4):
soc: fsl: qbman: Always disable interrupts when taking cgr_lock
soc: fsl: qbman: Add helper for sanity checking cgr ops
soc: fsl: qbman: Add CGR update function
soc: fsl: qbman: Use raw spinlock for cgr_lock

Sean Christopherson (1):
KVM: Always flush async #PF workqueue when vCPU is being destroyed

Sherry Sun (1):
tty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled

Siddh Raman Pant (1):
loop: Check for overflow while configuring loop

Song Liu (1):
Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d""

Stephen Lee (1):
ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw

Svyatoslav Pankratov (1):
crypto: qat - fix double free during reset

Tetsuo Handa (1):
sysv: don't call sb_bread() with pointers_lock held

Thadeu Lima de Souza Cascardo (1):
tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc

Thomas Gleixner (3):
timers: Update kernel-doc for various functions
timers: Use del_timer_sync() even on UP
timers: Rename del_timer_sync() to timer_delete_sync()

Tim Schumacher (1):
efivarfs: Request at most 512 bytes for variable names

Toru Katagiri (1):

      USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M

Uwe Kleine-König (1):

      PCI: Drop pci_device_remove() test of pci_dev->driver

Vasiliy Kovalev (1):
VMCI: Fix possible memcpy() run-time warning in vmci_datagram_invoke_guest_handler()

Vlastimil Babka (1):
mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL allocations

William Tu (2):
erspan: Add type I version 0 support.
erspan: Check IFLA_GRE_ERSPAN_VER is set.

Wolfram Sang (1):
mmc: tmio: avoid concurrent runs of mmc_request_done()

Yang Jihong (1):
perf/core: Fix reentry problem in perf_output_read_group()

Yangxi Xiang (1):
vt: fix memory overlapping when deleting chars in the buffer

Yu Kuai (1):

      dm-raid: fix lockdep waring in "pers->hot_add_disk"

Zhang Yi (1):
ubi: correct the calculation of fastmap size

Zheng Wang (1):
wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach

Zhong Jinghua (1):
loop: loop_set_status_from_info() check before assignment

Zi Yan (1):
mm/migrate: set swap entry values of THP tail pages properly.

Ziyang Xuan (1):
netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get()

yuan linyu (1):
usb: udc: remove warning when queue disabled ep

author maintainer
#1 lore raw
Documentation/admin-guide/hw-vuln/spectre.rst +11 -7
index 0fba3758d0da..305600351209 100644
@@ -484,11 +484,14 @@ Spectre variant 2
 
    Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
    boot, by setting the IBRS bit, and they're automatically protected against
-   Spectre v2 variant attacks, including cross-thread branch target injections
-   on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
+   Spectre v2 variant attacks.
 
-   Legacy IBRS systems clear the IBRS bit on exit to userspace and
-   therefore explicitly enable STIBP for that
+   On Intel's enhanced IBRS systems, this includes cross-thread branch target
+   injections on SMT systems (STIBP). In other words, Intel eIBRS enables
+   STIBP, too.
+
+   AMD Automatic IBRS does not protect userspace, and Legacy IBRS systems clear
+   the IBRS bit on exit to userspace, therefore both explicitly enable STIBP.
 
    The retpoline mitigation is turned on by default on vulnerable
    CPUs. It can be forced on or off by the administrator
@@ -622,9 +625,10 @@ kernel command line.
                 retpoline,generic       Retpolines
                 retpoline,lfence        LFENCE; indirect branch
                 retpoline,amd           alias for retpoline,lfence
-                eibrs                   enhanced IBRS
-                eibrs,retpoline         enhanced IBRS + Retpolines
-                eibrs,lfence            enhanced IBRS + LFENCE
+                eibrs                   Enhanced/Auto IBRS
+                eibrs,retpoline         Enhanced/Auto IBRS + Retpolines
+                eibrs,lfence            Enhanced/Auto IBRS + LFENCE
+                ibrs                    use IBRS to protect kernel
 
 		Not specifying this option is equivalent to
 		spectre_v2=auto.
Documentation/admin-guide/kernel-parameters.txt +3 -3
index 84c34f7e8984..20553b627020 100644
@@ -4403,9 +4403,9 @@
 			retpoline,generic - Retpolines
 			retpoline,lfence  - LFENCE; indirect branch
 			retpoline,amd     - alias for retpoline,lfence
-			eibrs		  - enhanced IBRS
-			eibrs,retpoline   - enhanced IBRS + Retpolines
-			eibrs,lfence      - enhanced IBRS + LFENCE
+			eibrs		  - Enhanced/Auto IBRS
+			eibrs,retpoline   - Enhanced/Auto IBRS + Retpolines
+			eibrs,lfence      - Enhanced/Auto IBRS + LFENCE
 			ibrs		  - use IBRS to protect kernel
 
 			Not specifying this option is equivalent to
Makefile +1 -1
index 296db299ab39..b0ae93c88a68 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 4
 PATCHLEVEL = 19
-SUBLEVEL = 311
+SUBLEVEL = 312
 EXTRAVERSION =
 NAME = "People's Front"
 
arch/arm/boot/dts/mmp2-brownstone.dts +165 -167

341 lines not on this page · raw message

arch/arm64/boot/dts/rockchip/rk3399.dtsi +10 -2
index 5a60faa8e999..f19d43021a4e 100644
@@ -1683,6 +1683,7 @@
 	hdmi: hdmi@ff940000 {
 		compatible = "rockchip,rk3399-dw-hdmi";
 		reg = <0x0 0xff940000 0x0 0x20000>;
+		reg-io-width = <4>;
 		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
 		clocks = <&cru PCLK_HDMI_CTRL>,
 			 <&cru SCLK_HDMI_SFR>,
@@ -1691,13 +1692,16 @@
 			 <&cru PLL_VPLL>;
 		clock-names = "iahb", "isfr", "cec", "grf", "vpll";
 		power-domains = <&power RK3399_PD_HDCP>;
-		reg-io-width = <4>;
 		rockchip,grf = <&grf>;
 		#sound-dai-cells = <0>;
 		status = "disabled";
 
 		ports {
-			hdmi_in: port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			hdmi_in: port@0 {
+				reg = <0>;
 				#address-cells = <1>;
 				#size-cells = <0>;
 
@@ -1710,6 +1714,10 @@
 					remote-endpoint = <&vopl_out_hdmi>;
 				};
 			};
+
+			hdmi_out: port@1 {
+				reg = <1>;
+			};
 		};
 	};
 
arch/parisc/include/asm/checksum.h +56 -51

143 lines not on this page · raw message

arch/powerpc/include/asm/reg_fsl_emb.h +9 -2
index a21f529c43d9..8359c06d92d9 100644
@@ -12,9 +12,16 @@
 #ifndef __ASSEMBLY__
 /* Performance Monitor Registers */
 #define mfpmr(rn)	({unsigned int rval; \
-			asm volatile("mfpmr %0," __stringify(rn) \
+			asm volatile(".machine push; " \
+				     ".machine e300; " \
+				     "mfpmr %0," __stringify(rn) ";" \
+				     ".machine pop; " \
 				     : "=r" (rval)); rval;})
-#define mtpmr(rn, v)	asm volatile("mtpmr " __stringify(rn) ",%0" : : "r" (v))
+#define mtpmr(rn, v)	asm volatile(".machine push; " \
+				     ".machine e300; " \
+				     "mtpmr " __stringify(rn) ",%0; " \
+				     ".machine pop; " \
+				     : : "r" (v))
 #endif /* __ASSEMBLY__ */
 
 /* Freescale Book E Performance Monitor APU Registers */
arch/powerpc/lib/Makefile +1 -1
index f0aa6fc8c6b2..0dc53f5c656d 100644
@@ -46,6 +46,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
 obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
 
 obj-$(CONFIG_ALTIVEC)	+= xor_vmx.o xor_vmx_glue.o
-CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)
+CFLAGS_xor_vmx.o += -mhard-float -maltivec $(call cc-option,-mabi=altivec)
 
 obj-$(CONFIG_PPC64) += $(obj64-y)
arch/sparc/kernel/nmi.c +1 -1
index 8babbeb30adf..1f356928a06d 100644
@@ -273,7 +273,7 @@ static int __init setup_nmi_watchdog(char *str)
 	if (!strncmp(str, "panic", 5))
 		panic_on_timeout = 1;
 
-	return 0;
+	return 1;
 }
 __setup("nmi_watchdog=", setup_nmi_watchdog);
 
arch/sparc/vdso/vma.c +3 -4
index 5eaff3c1aa0c..1869e4b36db2 100644
@@ -262,9 +262,8 @@ static __init int vdso_setup(char *s)
 	unsigned long val;
 
 	err = kstrtoul(s, 10, &val);
-	if (err)
-		return err;
-	vdso_enabled = val;
-	return 0;
+	if (!err)
+		vdso_enabled = val;
+	return 1;
 }
 __setup("vdso=", vdso_setup);
arch/x86/include/asm/cpufeatures.h +2 -0
index 5cf8dca571cf..464b2b5d87bd 100644
@@ -369,6 +369,8 @@
 #define X86_FEATURE_ARCH_CAPABILITIES	(18*32+29) /* IA32_ARCH_CAPABILITIES MSR (Intel) */
 #define X86_FEATURE_SPEC_CTRL_SSBD	(18*32+31) /* "" Speculative Store Bypass Disable */
 
+#define X86_FEATURE_AUTOIBRS		(20*32+ 8) /* "" Automatic IBRS */
+
 /*
  * BUG word(s)
  */
arch/x86/include/asm/msr-index.h +2 -0
index 4be36bfb2477..51354e09ebb1 100644
@@ -30,6 +30,7 @@
 #define _EFER_SVME		12 /* Enable virtualization */
 #define _EFER_LMSLE		13 /* Long Mode Segment Limit Enable */
 #define _EFER_FFXSR		14 /* Enable Fast FXSAVE/FXRSTOR */
+#define _EFER_AUTOIBRS		21 /* Enable Automatic IBRS */
 
 #define EFER_SCE		(1<<_EFER_SCE)
 #define EFER_LME		(1<<_EFER_LME)
@@ -38,6 +39,7 @@
 #define EFER_SVME		(1<<_EFER_SVME)
 #define EFER_LMSLE		(1<<_EFER_LMSLE)
 #define EFER_FFXSR		(1<<_EFER_FFXSR)
+#define EFER_AUTOIBRS		(1<<_EFER_AUTOIBRS)
 
 /* Intel MSRs. Some also available on other CPUs */
 
arch/x86/kernel/cpu/amd.c +5 -5
index 5b75a4ff6802..3f6188477e01 100644
@@ -988,11 +988,11 @@ static bool cpu_has_zenbleed_microcode(void)
 	u32 good_rev = 0;
 
 	switch (boot_cpu_data.x86_model) {
-	case 0x30 ... 0x3f: good_rev = 0x0830107a; break;
-	case 0x60 ... 0x67: good_rev = 0x0860010b; break;
-	case 0x68 ... 0x6f: good_rev = 0x08608105; break;
-	case 0x70 ... 0x7f: good_rev = 0x08701032; break;
-	case 0xa0 ... 0xaf: good_rev = 0x08a00008; break;
+	case 0x30 ... 0x3f: good_rev = 0x0830107b; break;
+	case 0x60 ... 0x67: good_rev = 0x0860010c; break;
+	case 0x68 ... 0x6f: good_rev = 0x08608107; break;
+	case 0x70 ... 0x7f: good_rev = 0x08701033; break;
+	case 0xa0 ... 0xaf: good_rev = 0x08a00009; break;
 
 	default:
 		return false;
arch/x86/kernel/cpu/bugs.c +62 -55

255 lines not on this page · raw message

arch/x86/kernel/cpu/common.c +10 -7
index d315e928b95c..86c88ecbb092 100644
@@ -1025,7 +1025,7 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
 	VULNWL_AMD(0x12,	NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO),
 
 	/* FAMILY_ANY must be last, otherwise 0x0f - 0x12 matches won't work */
-	VULNWL_AMD(X86_FAMILY_ANY,	NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO),
+	VULNWL_AMD(X86_FAMILY_ANY,	NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_EIBRS_PBRSB),
 	{}
 };
 
@@ -1133,8 +1133,16 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
 	   !cpu_has(c, X86_FEATURE_AMD_SSB_NO))
 		setup_force_cpu_bug(X86_BUG_SPEC_STORE_BYPASS);
 
-	if (ia32_cap & ARCH_CAP_IBRS_ALL)
+	/*
+	 * AMD's AutoIBRS is equivalent to Intel's eIBRS - use the Intel feature
+	 * flag and protect from vendor-specific bugs via the whitelist.
+	 */
+	if ((ia32_cap & ARCH_CAP_IBRS_ALL) || cpu_has(c, X86_FEATURE_AUTOIBRS)) {
 		setup_force_cpu_cap(X86_FEATURE_IBRS_ENHANCED);
+		if (!cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
+		    !(ia32_cap & ARCH_CAP_PBRSB_NO))
+			setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
+	}
 
 	if (!cpu_matches(cpu_vuln_whitelist, NO_MDS) &&
 	    !(ia32_cap & ARCH_CAP_MDS_NO)) {
@@ -1196,11 +1204,6 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
 			setup_force_cpu_bug(X86_BUG_RETBLEED);
 	}
 
-	if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) &&
-	    !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
-	    !(ia32_cap & ARCH_CAP_PBRSB_NO))
-		setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
-
 	/*
 	 * Check if CPU is vulnerable to GDS. If running in a virtual machine on
 	 * an affected processor, the VMM may have disabled the use of GATHER by
arch/x86/mm/ident_map.c +5 -18
index f50cc210a981..968d7005f4a7 100644
@@ -26,31 +26,18 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page,
 	for (; addr < end; addr = next) {
 		pud_t *pud = pud_page + pud_index(addr);
 		pmd_t *pmd;
-		bool use_gbpage;
 
 		next = (addr & PUD_MASK) + PUD_SIZE;
 		if (next > end)
 			next = end;
 
-		/* if this is already a gbpage, this portion is already mapped */
-		if (pud_large(*pud))
-			continue;
-
-		/* Is using a gbpage allowed? */
-		use_gbpage = info->direct_gbpages;
-
-		/* Don't use gbpage if it maps more than the requested region. */
-		/* at the begining: */
-		use_gbpage &= ((addr & ~PUD_MASK) == 0);
-		/* ... or at the end: */
-		use_gbpage &= ((next & ~PUD_MASK) == 0);
-
-		/* Never overwrite existing mappings */
-		use_gbpage &= !pud_present(*pud);
-
-		if (use_gbpage) {
+		if (info->direct_gbpages) {
 			pud_t pudval;
 
+			if (pud_present(*pud))
+				continue;
+
+			addr &= PUD_MASK;
 			pudval = __pud((addr - info->offset) | info->page_flag);
 			set_pud(pud, pudval);
 			continue;
arch/x86/mm/pat.c +36 -14

86 lines not on this page · raw message

block/blk-stat.c +1 -1
index 7587b1c3caaf..507ac714423b 100644
@@ -27,7 +27,7 @@ void blk_rq_stat_init(struct blk_rq_stat *stat)
 /* src is a per-cpu stat, mean isn't initialized */
 void blk_rq_stat_sum(struct blk_rq_stat *dst, struct blk_rq_stat *src)
 {
-	if (!src->nr_samples)
+	if (dst->nr_samples + src->nr_samples <= dst->nr_samples)
 		return;
 
 	dst->min = min(dst->min, src->min);
drivers/ata/ahci.c +0 -5
index abdfd440987b..ab3ea47ecce3 100644
@@ -634,11 +634,6 @@ MODULE_PARM_DESC(mobile_lpm_policy, "Default LPM policy for mobile chipsets");
 static void ahci_pci_save_initial_config(struct pci_dev *pdev,
 					 struct ahci_host_priv *hpriv)
 {
-	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && pdev->device == 0x1166) {
-		dev_info(&pdev->dev, "ASM1166 has only six ports\n");
-		hpriv->saved_port_map = 0x3f;
-	}
-
 	if (pdev->vendor == PCI_VENDOR_ID_JMICRON && pdev->device == 0x2361) {
 		dev_info(&pdev->dev, "JMB361 has only one port\n");
 		hpriv->force_port_map = 1;
drivers/ata/sata_mv.c +31 -32

87 lines not on this page · raw message

drivers/ata/sata_sx4.c +2 -4
index 0d742457925e..f217ac8e17b1 100644
@@ -1020,8 +1020,7 @@ static void pdc20621_get_from_dimm(struct ata_host *host, void *psource,
 
 	offset -= (idx * window_size);
 	idx++;
-	dist = ((long) (window_size - (offset + size))) >= 0 ? size :
-		(long) (window_size - offset);
+	dist = min(size, window_size - offset);
 	memcpy_fromio(psource, dimm_mmio + offset / 4, dist);
 
 	psource += dist;
@@ -1069,8 +1068,7 @@ static void pdc20621_put_to_dimm(struct ata_host *host, void *psource,
 	readl(mmio + PDC_DIMM_WINDOW_CTLR);
 	offset -= (idx * window_size);
 	idx++;
-	dist = ((long)(s32)(window_size - (offset + size))) >= 0 ? size :
-		(long) (window_size - offset);
+	dist = min(size, window_size - offset);
 	memcpy_toio(dimm_mmio + offset / 4, psource, dist);
 	writel(0x01, mmio + PDC_GENERAL_CTLR);
 	readl(mmio + PDC_GENERAL_CTLR);
drivers/base/power/wakeirq.c +3 -1
index e7ba51499916..bc3637b45cbf 100644
@@ -376,8 +376,10 @@ void dev_pm_enable_wake_irq_complete(struct device *dev)
 		return;
 
 	if (wirq->status & WAKE_IRQ_DEDICATED_MANAGED &&
-	    wirq->status & WAKE_IRQ_DEDICATED_REVERSE)
+	    wirq->status & WAKE_IRQ_DEDICATED_REVERSE) {
 		enable_irq(wirq->irq);
+		wirq->status |= WAKE_IRQ_DEDICATED_ENABLED;
+	}
 }
 
 /**
drivers/block/loop.c +123 -81

281 lines not on this page · raw message

drivers/bluetooth/btintel.c +1 -1
index 5270d5513201..360daa3f8059 100644
@@ -361,7 +361,7 @@ int btintel_read_version(struct hci_dev *hdev, struct intel_version *ver)
 		return PTR_ERR(skb);
 	}
 
-	if (skb->len != sizeof(*ver)) {
+	if (!skb || skb->len != sizeof(*ver)) {
 		bt_dev_err(hdev, "Intel version event size mismatch");
 		kfree_skb(skb);
 		return -EILSEQ;
drivers/clk/qcom/gcc-ipq8074.c +2 -0
index eff38d22738c..e38a1f87263b 100644
@@ -980,6 +980,7 @@ static struct clk_rcg2 pcie0_axi_clk_src = {
 
 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
 	F(19200000, P_XO, 1, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 pcie0_aux_clk_src = {
@@ -1085,6 +1086,7 @@ static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
 	F(19200000, P_XO, 1, 0, 0),
 	F(160000000, P_GPLL0, 5, 0, 0),
 	F(308570000, P_GPLL6, 3.5, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
drivers/clk/qcom/mmcc-apq8084.c +2 -0
index 4ce1d7c88377..36a40b0ddfa1 100644
@@ -341,6 +341,7 @@ static struct freq_tbl ftbl_mmss_axi_clk[] = {
 	F(333430000, P_MMPLL1, 3.5, 0, 0),
 	F(400000000, P_MMPLL0, 2, 0, 0),
 	F(466800000, P_MMPLL1, 2.5, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 mmss_axi_clk_src = {
@@ -365,6 +366,7 @@ static struct freq_tbl ftbl_ocmemnoc_clk[] = {
 	F(150000000, P_GPLL0, 4, 0, 0),
 	F(228570000, P_MMPLL0, 3.5, 0, 0),
 	F(320000000, P_MMPLL0, 2.5, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 ocmemnoc_clk_src = {
drivers/clk/qcom/mmcc-msm8974.c +2 -0
index 91818516c3e0..124d21f19e2c 100644
@@ -291,6 +291,7 @@ static struct freq_tbl ftbl_mmss_axi_clk[] = {
 	F(291750000, P_MMPLL1, 4, 0, 0),
 	F(400000000, P_MMPLL0, 2, 0, 0),
 	F(466800000, P_MMPLL1, 2.5, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 mmss_axi_clk_src = {
@@ -315,6 +316,7 @@ static struct freq_tbl ftbl_ocmemnoc_clk[] = {
 	F(150000000, P_GPLL0, 4, 0, 0),
 	F(291750000, P_MMPLL1, 4, 0, 0),
 	F(400000000, P_MMPLL0, 2, 0, 0),
+	{ }
 };
 
 static struct clk_rcg2 ocmemnoc_clk_src = {
drivers/crypto/qat/qat_common/adf_aer.c +17 -6
index 9225d060e18f..7242a1ee86de 100644
@@ -139,18 +139,28 @@ static void adf_device_reset_worker(struct work_struct *work)
 	if (adf_dev_init(accel_dev) || adf_dev_start(accel_dev)) {
 		/* The device hanged and we can't restart it so stop here */
 		dev_err(&GET_DEV(accel_dev), "Restart device failed\n");
-		kfree(reset_data);
+		if (reset_data->mode == ADF_DEV_RESET_ASYNC ||
+		    completion_done(&reset_data->compl))
+			kfree(reset_data);
 		WARN(1, "QAT: device restart failed. Device is unusable\n");
 		return;
 	}
 	adf_dev_restarted_notify(accel_dev);
 	clear_bit(ADF_STATUS_RESTARTING, &accel_dev->status);
 
-	/* The dev is back alive. Notify the caller if in sync mode */
-	if (reset_data->mode == ADF_DEV_RESET_SYNC)
-		complete(&reset_data->compl);
-	else
+	/*
+	 * The dev is back alive. Notify the caller if in sync mode
+	 *
+	 * If device restart will take a more time than expected,
+	 * the schedule_reset() function can timeout and exit. This can be
+	 * detected by calling the completion_done() function. In this case
+	 * the reset_data structure needs to be freed here.
+	 */
+	if (reset_data->mode == ADF_DEV_RESET_ASYNC ||
+	    completion_done(&reset_data->compl))
 		kfree(reset_data);
+	else
+		complete(&reset_data->compl);
 }
 
 static int adf_dev_aer_schedule_reset(struct adf_accel_dev *accel_dev,
@@ -183,8 +193,9 @@ static int adf_dev_aer_schedule_reset(struct adf_accel_dev *accel_dev,
 			dev_err(&GET_DEV(accel_dev),
 				"Reset device timeout expired\n");
 			ret = -EFAULT;
+		} else {
+			kfree(reset_data);
 		}
-		kfree(reset_data);
 		return ret;
 	}
 	return 0;
drivers/firmware/efi/vars.c +11 -6
index e619ced030d5..88c3f894f1f1 100644
@@ -440,7 +440,7 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *),
 		void *data, bool duplicates, struct list_head *head)
 {
 	const struct efivar_operations *ops;
-	unsigned long variable_name_size = 1024;
+	unsigned long variable_name_size = 512;
 	efi_char16_t *variable_name;
 	efi_status_t status;
 	efi_guid_t vendor_guid;
@@ -463,12 +463,13 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *),
 	}
 
 	/*
-	 * Per EFI spec, the maximum storage allocated for both
-	 * the variable name and variable data is 1024 bytes.
+	 * A small set of old UEFI implementations reject sizes
+	 * above a certain threshold, the lowest seen in the wild
+	 * is 512.
 	 */
 
 	do {
-		variable_name_size = 1024;
+		variable_name_size = 512;
 
 		status = ops->get_next_variable(&variable_name_size,
 						variable_name,
@@ -512,9 +513,13 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *),
 			break;
 		case EFI_NOT_FOUND:
 			break;
+		case EFI_BUFFER_TOO_SMALL:
+			pr_warn("efivars: Variable name size exceeds maximum (%lu > 512)\n",
+				variable_name_size);
+			status = EFI_NOT_FOUND;
+			break;
 		default:
-			printk(KERN_WARNING "efivars: get_next_variable: status=%lx\n",
-				status);
+			pr_warn("efivars: get_next_variable: status=%lx\n", status);
 			status = EFI_NOT_FOUND;
 			break;
 		}
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +2 -2
index 297b36c26a05..840dfe8524e4 100644
@@ -923,8 +923,8 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp,
 	 * nodes, but not more than args->num_of_nodes as that is
 	 * the amount of memory allocated by user
 	 */
-	pa = kzalloc((sizeof(struct kfd_process_device_apertures) *
-				args->num_of_nodes), GFP_KERNEL);
+	pa = kcalloc(args->num_of_nodes, sizeof(struct kfd_process_device_apertures),
+		     GFP_KERNEL);
 	if (!pa)
 		return -ENOMEM;
 
drivers/gpu/drm/amd/display/modules/inc/mod_stats.h +2 -2
index 3812094b52e8..88b312c3eb43 100644
@@ -51,10 +51,10 @@ void mod_stats_update_event(struct mod_stats *mod_stats,
 		unsigned int length);
 
 void mod_stats_update_flip(struct mod_stats *mod_stats,
-		unsigned long timestamp_in_ns);
+		unsigned long long timestamp_in_ns);
 
 void mod_stats_update_vupdate(struct mod_stats *mod_stats,
-		unsigned long timestamp_in_ns);
+		unsigned long long timestamp_in_ns);
 
 void mod_stats_update_freesync(struct mod_stats *mod_stats,
 		unsigned int v_total_min,
drivers/gpu/drm/imx/parallel-display.c +2 -2
index e9dff31b377c..585db8961705 100644
@@ -72,14 +72,14 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector)
 		int ret;
 
 		if (!mode)
-			return -EINVAL;
+			return 0;
 
 		ret = of_get_drm_display_mode(np, &imxpd->mode,
 					      &imxpd->bus_flags,
 					      OF_USE_NATIVE_MODE);
 		if (ret) {
 			drm_mode_destroy(connector->dev, mode);
-			return ret;
+			return 0;
 		}
 
 		drm_mode_copy(mode, &imxpd->mode);
drivers/gpu/drm/vc4/vc4_hdmi.c +1 -1
index 116166266457..013dfc63c824 100644
@@ -276,7 +276,7 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
 	edid = drm_get_edid(connector, vc4->hdmi->ddc);
 	cec_s_phys_addr_from_edid(vc4->hdmi->cec_adap, edid);
 	if (!edid)
-		return -ENODEV;
+		return 0;
 
 	vc4_encoder->hdmi_monitor = drm_detect_hdmi_monitor(edid);
 
drivers/gpu/drm/vkms/vkms_drv.c +1 -1
index b1201c18d3eb..d32e08f17427 100644
@@ -39,7 +39,6 @@ static void vkms_release(struct drm_device *dev)
 	struct vkms_device *vkms = container_of(dev, struct vkms_device, drm);
 
 	platform_device_unregister(vkms->platform);
-	drm_atomic_helper_shutdown(&vkms->drm);
 	drm_mode_config_cleanup(&vkms->drm);
 	drm_dev_fini(&vkms->drm);
 }
@@ -137,6 +136,7 @@ static void __exit vkms_exit(void)
 	}
 
 	drm_dev_unregister(&vkms_device->drm);
+	drm_atomic_helper_shutdown(&vkms_device->drm);
 	drm_dev_put(&vkms_device->drm);
 
 	kfree(vkms_device);
drivers/hwmon/amc6821.c +11 -0
index 46b4e35fd555..b562337df7b3 100644
@@ -1003,10 +1003,21 @@ static const struct i2c_device_id amc6821_id[] = {
 
 MODULE_DEVICE_TABLE(i2c, amc6821_id);
 
+static const struct of_device_id __maybe_unused amc6821_of_match[] = {
+	{
+		.compatible = "ti,amc6821",
+		.data = (void *)amc6821,
+	},
+	{ }
+};
+
+MODULE_DEVICE_TABLE(of, amc6821_of_match);
+
 static struct i2c_driver amc6821_driver = {
 	.class = I2C_CLASS_HWMON,
 	.driver = {
 		.name	= "amc6821",
+		.of_match_table = of_match_ptr(amc6821_of_match),
 	},
 	.probe = amc6821_probe,
 	.id_table = amc6821_id,
drivers/input/rmi4/rmi_driver.c +5 -1
index ac6a20f7afdf..0da814b41e72 100644
@@ -1199,7 +1199,11 @@ static int rmi_driver_probe(struct device *dev)
 		}
 		rmi_driver_set_input_params(rmi_dev, data->input);
 		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
-						"%s/input0", dev_name(dev));
+						   "%s/input0", dev_name(dev));
+		if (!data->input->phys) {
+			retval = -ENOMEM;
+			goto err;
+		}
 	}
 
 	retval = rmi_init_functions(data);
drivers/md/dm-raid.c +2 -0
index 1759134fce82..2a8746f9c6d8 100644
@@ -4023,7 +4023,9 @@ static void raid_resume(struct dm_target *ti)
 		 * Take this opportunity to check whether any failed
 		 * devices are reachable again.
 		 */
+		mddev_lock_nointr(mddev);
 		attempt_restore_of_faulty_devices(rs);
+		mddev_unlock(mddev);
 	}
 
 	if (test_and_clear_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags)) {
drivers/md/raid5.c +12 -0
index e2fcc09a18cd..b98abe927d06 100644
@@ -44,6 +44,7 @@
  */
 
 #include <linux/blkdev.h>
+#include <linux/delay.h>
 #include <linux/kthread.h>
 #include <linux/raid/pq.h>
 #include <linux/async_tx.h>
@@ -6329,7 +6330,18 @@ static void raid5d(struct md_thread *thread)
 			spin_unlock_irq(&conf->device_lock);
 			md_check_recovery(mddev);
 			spin_lock_irq(&conf->device_lock);
+
+			/*
+			 * Waiting on MD_SB_CHANGE_PENDING below may deadlock
+			 * seeing md_check_recovery() is needed to clear
+			 * the flag when using mdmon.
+			 */
+			continue;
 		}
+
+		wait_event_lock_irq(mddev->sb_wait,
+			!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags),
+			conf->device_lock);
 	}
 	pr_debug("%d stripes handled\n", handled);
 
drivers/media/pci/sta2x11/sta2x11_vip.c +4 -5
index 1858efedaf1a..33d6c95b3613 100644
@@ -780,7 +780,7 @@ static const struct video_device video_dev_template = {
 /**
  * vip_irq - interrupt routine
  * @irq: Number of interrupt ( not used, correct number is assumed )
- * @vip: local data structure containing all information
+ * @data: local data structure containing all information
  *
  * check for both frame interrupts set ( top and bottom ).
  * check FIFO overflow, but limit number of log messages after open.
@@ -790,8 +790,9 @@ static const struct video_device video_dev_template = {
  *
  * IRQ_HANDLED, interrupt done.
  */
-static irqreturn_t vip_irq(int irq, struct sta2x11_vip *vip)
+static irqreturn_t vip_irq(int irq, void *data)
 {
+	struct sta2x11_vip *vip = data;
 	unsigned int status;
 
 	status = reg_read(vip, DVP_ITS);
@@ -1073,9 +1074,7 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev,
 
 	spin_lock_init(&vip->slock);
 
-	ret = request_irq(pdev->irq,
-			  (irq_handler_t) vip_irq,
-			  IRQF_SHARED, KBUILD_MODNAME, vip);
+	ret = request_irq(pdev->irq, vip_irq, IRQF_SHARED, KBUILD_MODNAME, vip);
 	if (ret) {
 		dev_err(&pdev->dev, "request_irq failed\n");
 		ret = -ENODEV;
drivers/media/tuners/xc4000.c +2 -2
index 0ef8f054a795..6017602aead6 100644
@@ -1527,10 +1527,10 @@ static int xc4000_get_frequency(struct dvb_frontend *fe, u32 *freq)
 {
 	struct xc4000_priv *priv = fe->tuner_priv;
 
+	mutex_lock(&priv->lock);
 	*freq = priv->freq_hz + priv->freq_offset;
 
 	if (debug) {
-		mutex_lock(&priv->lock);
 		if ((priv->cur_fw.type
 		     & (BASE | FM | DTV6 | DTV7 | DTV78 | DTV8)) == BASE) {
 			u16	snr = 0;
@@ -1541,8 +1541,8 @@ static int xc4000_get_frequency(struct dvb_frontend *fe, u32 *freq)
 				return 0;
 			}
 		}
-		mutex_unlock(&priv->lock);
 	}
+	mutex_unlock(&priv->lock);
 
 	dprintk(1, "%s()\n", __func__);
 
drivers/misc/vmw_vmci/vmci_datagram.c +4 -2
index 8a4b6bbe1bee..129dd088866c 100644
@@ -242,7 +242,8 @@ static int dg_dispatch_as_host(u32 context_id, struct vmci_datagram *dg)
 
 			dg_info->in_dg_host_queue = true;
 			dg_info->entry = dst_entry;
-			memcpy(&dg_info->msg, dg, dg_size);
+			dg_info->msg = *dg;
+			memcpy(&dg_info->msg_payload, dg + 1, dg->payload_size);
 
 			INIT_WORK(&dg_info->work, dg_delayed_dispatch);
 			schedule_work(&dg_info->work);
@@ -385,7 +386,8 @@ int vmci_datagram_invoke_guest_handler(struct vmci_datagram *dg)
 
 		dg_info->in_dg_host_queue = false;
 		dg_info->entry = dst_entry;
-		memcpy(&dg_info->msg, dg, VMCI_DG_SIZE(dg));
+		dg_info->msg = *dg;
+		memcpy(&dg_info->msg_payload, dg + 1, dg->payload_size);
 
 		INIT_WORK(&dg_info->work, dg_delayed_dispatch);
 		schedule_work(&dg_info->work);
drivers/mmc/core/block.c +6 -4
index ef9422917e1c..c3b329946429 100644
@@ -851,10 +851,11 @@ static const struct block_device_operations mmc_bdops = {
 static int mmc_blk_part_switch_pre(struct mmc_card *card,
 				   unsigned int part_type)
 {
-	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB;
+	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK;
+	const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB;
 	int ret = 0;
 
-	if ((part_type & mask) == mask) {
+	if ((part_type & mask) == rpmb) {
 		if (card->ext_csd.cmdq_en) {
 			ret = mmc_cmdq_disable(card);
 			if (ret)
@@ -869,10 +870,11 @@ static int mmc_blk_part_switch_pre(struct mmc_card *card,
 static int mmc_blk_part_switch_post(struct mmc_card *card,
 				    unsigned int part_type)
 {
-	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB;
+	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK;
+	const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB;
 	int ret = 0;
 
-	if ((part_type & mask) == mask) {
+	if ((part_type & mask) == rpmb) {
 		mmc_retune_unpause(card->host);
 		if (card->reenable_cmdq && !card->ext_csd.cmdq_en)
 			ret = mmc_cmdq_enable(card);
drivers/mmc/host/tmio_mmc_core.c +2 -0
index f819757e125e..ae8913e5adc7 100644
@@ -213,6 +213,8 @@ static void tmio_mmc_reset_work(struct work_struct *work)
 	else
 		mrq->cmd->error = -ETIMEDOUT;
 
+	/* No new calls yet, but disallow concurrent tmio_mmc_done_work() */
+	host->mrq = ERR_PTR(-EBUSY);
 	host->cmd = NULL;
 	host->data = NULL;
 
drivers/mtd/ubi/fastmap.c +4 -3
index d45c1d6587d1..e24fc0131d79 100644
@@ -95,9 +95,10 @@ size_t ubi_calc_fm_size(struct ubi_device *ubi)
 		sizeof(struct ubi_fm_scan_pool) +
 		sizeof(struct ubi_fm_scan_pool) +
 		(ubi->peb_count * sizeof(struct ubi_fm_ec)) +
-		(sizeof(struct ubi_fm_eba) +
-		(ubi->peb_count * sizeof(__be32))) +
-		sizeof(struct ubi_fm_volhdr) * UBI_MAX_VOLUMES;
+		((sizeof(struct ubi_fm_eba) +
+		  sizeof(struct ubi_fm_volhdr)) *
+		 (UBI_MAX_VOLUMES + UBI_INT_VOL_COUNT)) +
+		(ubi->peb_count * sizeof(__be32));
 	return roundup(size, ubi->leb_size);
 }
 
drivers/mtd/ubi/vtbl.c +6 -0
index 1bc82154bb18..634ec95a1e71 100644
@@ -804,6 +804,12 @@ int ubi_read_volume_table(struct ubi_device *ubi, struct ubi_attach_info *ai)
 	 * The number of supported volumes is limited by the eraseblock size
 	 * and by the UBI_MAX_VOLUMES constant.
 	 */
+
+	if (ubi->leb_size < UBI_VTBL_RECORD_SIZE) {
+		ubi_err(ubi, "LEB size too small for a volume record");
+		return -EINVAL;
+	}
+
 	ubi->vtbl_slots = ubi->leb_size / UBI_VTBL_RECORD_SIZE;
 	if (ubi->vtbl_slots > UBI_MAX_VOLUMES)
 		ubi->vtbl_slots = UBI_MAX_VOLUMES;
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +16 -18
index 412f8002f918..9c0d01eba36c 100644
@@ -1317,8 +1317,8 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 {
 	struct i40e_hw *hw = &pf->hw;
 	struct i40e_vf *vf;
-	int i, v;
 	u32 reg;
+	int i;
 
 	/* If we don't have any VFs, then there is nothing to reset */
 	if (!pf->num_alloc_vfs)
@@ -1329,11 +1329,10 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 		return false;
 
 	/* Begin reset on all VFs at once */
-	for (v = 0; v < pf->num_alloc_vfs; v++) {
-		vf = &pf->vf[v];
+	for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) {
 		/* If VF is being reset no need to trigger reset again */
 		if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states))
-			i40e_trigger_vf_reset(&pf->vf[v], flr);
+			i40e_trigger_vf_reset(vf, flr);
 	}
 
 	/* HW requires some time to make sure it can flush the FIFO for a VF
@@ -1342,14 +1341,13 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 	 * the VFs using a simple iterator that increments once that VF has
 	 * finished resetting.
 	 */
-	for (i = 0, v = 0; i < 10 && v < pf->num_alloc_vfs; i++) {
+	for (i = 0, vf = &pf->vf[0]; i < 10 && vf < &pf->vf[pf->num_alloc_vfs]; ++i) {
 		usleep_range(10000, 20000);
 
 		/* Check each VF in sequence, beginning with the VF to fail
 		 * the previous check.
 		 */
-		while (v < pf->num_alloc_vfs) {
-			vf = &pf->vf[v];
+		while (vf < &pf->vf[pf->num_alloc_vfs]) {
 			if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) {
 				reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id));
 				if (!(reg & I40E_VPGEN_VFRSTAT_VFRD_MASK))
@@ -1359,7 +1357,7 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 			/* If the current VF has finished resetting, move on
 			 * to the next VF in sequence.
 			 */
-			v++;
+			++vf;
 		}
 	}
 
@@ -1369,39 +1367,39 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 	/* Display a warning if at least one VF didn't manage to reset in
 	 * time, but continue on with the operation.
 	 */
-	if (v < pf->num_alloc_vfs)
+	if (vf < &pf->vf[pf->num_alloc_vfs])
 		dev_err(&pf->pdev->dev, "VF reset check timeout on VF %d\n",
-			pf->vf[v].vf_id);
+			vf->vf_id);
 	usleep_range(10000, 20000);
 
 	/* Begin disabling all the rings associated with VFs, but do not wait
 	 * between each VF.
 	 */
-	for (v = 0; v < pf->num_alloc_vfs; v++) {
+	for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) {
 		/* On initial reset, we don't have any queues to disable */
-		if (pf->vf[v].lan_vsi_idx == 0)
+		if (vf->lan_vsi_idx == 0)
 			continue;
 
 		/* If VF is reset in another thread just continue */
 		if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states))
 			continue;
 
-		i40e_vsi_stop_rings_no_wait(pf->vsi[pf->vf[v].lan_vsi_idx]);
+		i40e_vsi_stop_rings_no_wait(pf->vsi[vf->lan_vsi_idx]);
 	}
 
 	/* Now that we've notified HW to disable all of the VF rings, wait
 	 * until they finish.
 	 */
-	for (v = 0; v < pf->num_alloc_vfs; v++) {
+	for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) {
 		/* On initial reset, we don't have any queues to disable */
-		if (pf->vf[v].lan_vsi_idx == 0)
+		if (vf->lan_vsi_idx == 0)
 			continue;
 
 		/* If VF is reset in another thread just continue */
 		if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states))
 			continue;
 
-		i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[v].lan_vsi_idx]);
+		i40e_vsi_wait_queues_disabled(pf->vsi[vf->lan_vsi_idx]);
 	}
 
 	/* Hw may need up to 50ms to finish disabling the RX queues. We
@@ -1410,12 +1408,12 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 	mdelay(50);
 
 	/* Finish the reset on each VF */
-	for (v = 0; v < pf->num_alloc_vfs; v++) {
+	for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) {
 		/* If VF is reset in another thread just continue */
 		if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states))
 			continue;
 
-		i40e_cleanup_reset_vf(&pf->vf[v]);
+		i40e_cleanup_reset_vf(vf);
 	}
 
 	i40e_flush(hw);
drivers/net/ethernet/realtek/r8169_main.c +9 -0
index ecdf628e3bb8..1dcb8f7af2bc 100644
@@ -7303,6 +7303,15 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
 	struct mii_bus *new_bus;
 	int ret;
 
+	/* On some boards with this chip version the BIOS is buggy and misses
+	 * to reset the PHY page selector. This results in the PHY ID read
+	 * accessing registers on a different page, returning a more or
+	 * less random value. Fix this by resetting the page selector first.
+	 */
+	if (tp->mac_version == RTL_GIGA_MAC_VER_25 ||
+	    tp->mac_version == RTL_GIGA_MAC_VER_26)
+		r8169_mdio_write(tp, 0x1f, 0);
+
 	new_bus = devm_mdiobus_alloc(&pdev->dev);
 	if (!new_bus)
 		return -ENOMEM;
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +31 -9
index 00b6af0b2f3a..9e68422d60b7 100644
@@ -84,19 +84,41 @@ static void dwmac4_rx_queue_priority(struct mac_device_info *hw,
 				     u32 prio, u32 queue)
 {
 	void __iomem *ioaddr = hw->pcsr;
-	u32 base_register;
-	u32 value;
+	u32 clear_mask = 0;
+	u32 ctrl2, ctrl3;
+	int i;
 
-	base_register = (queue < 4) ? GMAC_RXQ_CTRL2 : GMAC_RXQ_CTRL3;
-	if (queue >= 4)
-		queue -= 4;
+	ctrl2 = readl(ioaddr + GMAC_RXQ_CTRL2);
+	ctrl3 = readl(ioaddr + GMAC_RXQ_CTRL3);
 
-	value = readl(ioaddr + base_register);
+	/* The software must ensure that the same priority
+	 * is not mapped to multiple Rx queues
+	 */
+	for (i = 0; i < 4; i++)
+		clear_mask |= ((prio << GMAC_RXQCTRL_PSRQX_SHIFT(i)) &
+						GMAC_RXQCTRL_PSRQX_MASK(i));
 
-	value &= ~GMAC_RXQCTRL_PSRQX_MASK(queue);
-	value |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) &
+	ctrl2 &= ~clear_mask;
+	ctrl3 &= ~clear_mask;
+
+	/* First assign new priorities to a queue, then
+	 * clear them from others queues
+	 */
+	if (queue < 4) {
+		ctrl2 |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) &
 						GMAC_RXQCTRL_PSRQX_MASK(queue);
-	writel(value, ioaddr + base_register);
+
+		writel(ctrl2, ioaddr + GMAC_RXQ_CTRL2);
+		writel(ctrl3, ioaddr + GMAC_RXQ_CTRL3);
+	} else {
+		queue -= 4;
+
+		ctrl3 |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) &
+						GMAC_RXQCTRL_PSRQX_MASK(queue);
+
+		writel(ctrl3, ioaddr + GMAC_RXQ_CTRL3);
+		writel(ctrl2, ioaddr + GMAC_RXQ_CTRL2);
+	}
 }
 
 static void dwmac4_tx_queue_priority(struct mac_device_info *hw,
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +32 -8
index 870302a7177e..9fd03c3e52a5 100644
@@ -103,17 +103,41 @@ static void dwxgmac2_rx_queue_prio(struct mac_device_info *hw, u32 prio,
 				   u32 queue)
 {
 	void __iomem *ioaddr = hw->pcsr;
-	u32 value, reg;
-
-	reg = (queue < 4) ? XGMAC_RXQ_CTRL2 : XGMAC_RXQ_CTRL3;
-	if (queue >= 4)
+	u32 clear_mask = 0;
+	u32 ctrl2, ctrl3;
+	int i;
+
+	ctrl2 = readl(ioaddr + XGMAC_RXQ_CTRL2);
+	ctrl3 = readl(ioaddr + XGMAC_RXQ_CTRL3);
+
+	/* The software must ensure that the same priority
+	 * is not mapped to multiple Rx queues
+	 */
+	for (i = 0; i < 4; i++)
+		clear_mask |= ((prio << XGMAC_PSRQ_SHIFT(i)) &
+						XGMAC_PSRQ(i));
+
+	ctrl2 &= ~clear_mask;
+	ctrl3 &= ~clear_mask;
+
+	/* First assign new priorities to a queue, then
+	 * clear them from others queues
+	 */
+	if (queue < 4) {
+		ctrl2 |= (prio << XGMAC_PSRQ_SHIFT(queue)) &
+						XGMAC_PSRQ(queue);
+
+		writel(ctrl2, ioaddr + XGMAC_RXQ_CTRL2);
+		writel(ctrl3, ioaddr + XGMAC_RXQ_CTRL3);
+	} else {
 		queue -= 4;
 
-	value = readl(ioaddr + reg);
-	value &= ~XGMAC_PSRQ(queue);
-	value |= (prio << XGMAC_PSRQ_SHIFT(queue)) & XGMAC_PSRQ(queue);
+		ctrl3 |= (prio << XGMAC_PSRQ_SHIFT(queue)) &
+						XGMAC_PSRQ(queue);
 
-	writel(value, ioaddr + reg);
+		writel(ctrl3, ioaddr + XGMAC_RXQ_CTRL3);
+		writel(ctrl2, ioaddr + XGMAC_RXQ_CTRL2);
+	}
 }
 
 static void dwxgmac2_prog_mtl_rx_algorithms(struct mac_device_info *hw,
drivers/net/wireless/ath/ath9k/antenna.c +1 -1
index a3668433dc02..deac6184dd01 100644
@@ -643,7 +643,7 @@ static void ath_ant_try_scan(struct ath_ant_comb *antcomb,
 				conf->main_lna_conf = ATH_ANT_DIV_COMB_LNA1;
 				conf->alt_lna_conf = ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
 			} else if (antcomb->rssi_sub >
-				   antcomb->rssi_lna1) {
+				   antcomb->rssi_lna2) {
 				/* set to A-B */
 				conf->main_lna_conf = ATH_ANT_DIV_COMB_LNA1;
 				conf->alt_lna_conf = ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +2 -2
index 1827be85f115..fe8f1134a5f3 100644
@@ -690,8 +690,7 @@ s32 brcmf_notify_escan_complete(struct brcmf_cfg80211_info *cfg,
 	scan_request = cfg->scan_request;
 	cfg->scan_request = NULL;
 
-	if (timer_pending(&cfg->escan_timeout))
-		del_timer_sync(&cfg->escan_timeout);
+	timer_delete_sync(&cfg->escan_timeout);
 
 	if (fw_abort) {
 		/* Do a scan abort to stop the driver's scan engine */
@@ -7093,6 +7092,7 @@ void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg)
 	wiphy_unregister(cfg->wiphy);
 	kfree(cfg->ops);
 	wl_deinit_priv(cfg);
+	cancel_work_sync(&cfg->escan_timeout_work);
 	brcmf_free_wiphy(cfg->wiphy);
 	kfree(cfg);
 }
drivers/pci/pci-driver.c +14 -9
index 78ae1cab9af7..031908e42fb5 100644
@@ -439,16 +439,21 @@ static int pci_device_remove(struct device *dev)
 	struct pci_dev *pci_dev = to_pci_dev(dev);
 	struct pci_driver *drv = pci_dev->driver;
 
-	if (drv) {
-		if (drv->remove) {
-			pm_runtime_get_sync(dev);
-			drv->remove(pci_dev);
-			pm_runtime_put_noidle(dev);
-		}
-		pcibios_free_irq(pci_dev);
-		pci_dev->driver = NULL;
-		pci_iov_remove(pci_dev);
+	if (drv->remove) {
+		pm_runtime_get_sync(dev);
+		/*
+		 * If the driver provides a .runtime_idle() callback and it has
+		 * started to run already, it may continue to run in parallel
+		 * with the code below, so wait until all of the runtime PM
+		 * activity has completed.
+		 */
+		pm_runtime_barrier(dev);
+		drv->remove(pci_dev);
+		pm_runtime_put_noidle(dev);
 	}
+	pcibios_free_irq(pci_dev);
+	pci_dev->driver = NULL;
+	pci_iov_remove(pci_dev);
 
 	/* Undo the runtime PM settings in local_pci_probe() */
 	pm_runtime_put_sync(dev);
drivers/s390/crypto/zcrypt_api.c +2 -0
index b7cb897cd83e..3a47e622db10 100644
@@ -158,6 +158,7 @@ static inline struct zcrypt_queue *zcrypt_pick_queue(struct zcrypt_card *zc,
 {
 	if (!zq || !try_module_get(zq->queue->ap_dev.drv->driver.owner))
 		return NULL;
+	zcrypt_card_get(zc);
 	zcrypt_queue_get(zq);
 	get_device(&zq->queue->ap_dev.device);
 	atomic_add(weight, &zc->load);
@@ -177,6 +178,7 @@ static inline void zcrypt_drop_queue(struct zcrypt_card *zc,
 	atomic_sub(weight, &zq->load);
 	put_device(&zq->queue->ap_dev.device);
 	zcrypt_queue_put(zq);
+	zcrypt_card_put(zc);
 	module_put(mod);
 }
 
drivers/scsi/lpfc/lpfc_nportdisc.c +4 -2
index f666518d84b0..0890c2e38eec 100644
@@ -601,8 +601,10 @@ lpfc_rcv_padisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
 				/* Save the ELS cmd */
 				elsiocb->drvrTimeout = cmd;
 
-				lpfc_sli4_resume_rpi(ndlp,
-					lpfc_mbx_cmpl_resume_rpi, elsiocb);
+				if (lpfc_sli4_resume_rpi(ndlp,
+						lpfc_mbx_cmpl_resume_rpi,
+						elsiocb))
+					kfree(elsiocb);
 				goto out;
 			}
 		}
drivers/scsi/lpfc/lpfc_nvmet.c +1 -1
index 23ead17e60fe..c9b3524ec4eb 100644
@@ -1308,7 +1308,7 @@ lpfc_nvmet_setup_io_context(struct lpfc_hba *phba)
 		wqe = &nvmewqe->wqe;
 
 		/* Initialize WQE */
-		memset(wqe, 0, sizeof(union lpfc_wqe));
+		memset(wqe, 0, sizeof(*wqe));
 
 		ctx_buf->iocbq->context1 = NULL;
 		spin_lock(&phba->sli4_hba.sgl_list_lock);
drivers/scsi/qla2xxx/qla_target.c +10 -0
index 27d3293eadf5..0322eee4221b 100644
@@ -1037,6 +1037,16 @@ void qlt_free_session_done(struct work_struct *work)
 		    "%s: sess %p logout completed\n", __func__, sess);
 	}
 
+	/* check for any straggling io left behind */
+	if (!(sess->flags & FCF_FCP2_DEVICE) &&
+	    qla2x00_eh_wait_for_pending_commands(sess->vha, sess->d_id.b24, 0, WAIT_TARGET)) {
+		ql_log(ql_log_warn, vha, 0x3027,
+		    "IO not return. Resetting.\n");
+		set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
+		qla2xxx_wake_dpc(vha);
+		qla2x00_wait_for_chip_reset(vha);
+	}
+
 	if (sess->logo_ack_needed) {
 		sess->logo_ack_needed = 0;
 		qla24xx_async_notify_ack(vha, sess,
drivers/slimbus/core.c +2 -2
index 3e63e4ce45b0..6270b4165644 100644
@@ -409,8 +409,8 @@ static int slim_device_alloc_laddr(struct slim_device *sbdev,
 		if (ret < 0)
 			goto err;
 	} else if (report_present) {
-		ret = ida_simple_get(&ctrl->laddr_ida,
-				     0, SLIM_LA_MANAGER - 1, GFP_KERNEL);
+		ret = ida_alloc_max(&ctrl->laddr_ida,
+				    SLIM_LA_MANAGER - 1, GFP_KERNEL);
 		if (ret < 0)
 			goto err;
 
drivers/soc/fsl/qbman/qman.c +79 -19

163 lines not on this page · raw message

drivers/staging/comedi/drivers/comedi_test.c +26 -4
index d437af721bd8..f5df8cce6f7e 100644
@@ -87,6 +87,8 @@ struct waveform_private {
 	struct comedi_device *dev;	/* parent comedi device */
 	u64 ao_last_scan_time;		/* time of previous AO scan in usec */
 	unsigned int ao_scan_period;	/* AO scan period in usec */
+	bool ai_timer_enable:1;		/* should AI timer be running? */
+	bool ao_timer_enable:1;		/* should AO timer be running? */
 	unsigned short ao_loopbacks[N_CHANS];
 };
 
@@ -236,8 +238,12 @@ static void waveform_ai_timer(struct timer_list *t)
 			time_increment = devpriv->ai_convert_time - now;
 		else
 			time_increment = 1;
-		mod_timer(&devpriv->ai_timer,
-			  jiffies + usecs_to_jiffies(time_increment));
+		spin_lock(&dev->spinlock);
+		if (devpriv->ai_timer_enable) {
+			mod_timer(&devpriv->ai_timer,
+				  jiffies + usecs_to_jiffies(time_increment));
+		}
+		spin_unlock(&dev->spinlock);
 	}
 
 overrun:
@@ -393,9 +399,12 @@ static int waveform_ai_cmd(struct comedi_device *dev,
 	 * Seem to need an extra jiffy here, otherwise timer expires slightly
 	 * early!
 	 */
+	spin_lock_bh(&dev->spinlock);
+	devpriv->ai_timer_enable = true;
 	devpriv->ai_timer.expires =
 		jiffies + usecs_to_jiffies(devpriv->ai_convert_period) + 1;
 	add_timer(&devpriv->ai_timer);
+	spin_unlock_bh(&dev->spinlock);
 	return 0;
 }
 
@@ -404,6 +413,9 @@ static int waveform_ai_cancel(struct comedi_device *dev,
 {
 	struct waveform_private *devpriv = dev->private;
 
+	spin_lock_bh(&dev->spinlock);
+	devpriv->ai_timer_enable = false;
+	spin_unlock_bh(&dev->spinlock);
 	if (in_softirq()) {
 		/* Assume we were called from the timer routine itself. */
 		del_timer(&devpriv->ai_timer);
@@ -495,8 +507,12 @@ static void waveform_ao_timer(struct timer_list *t)
 		unsigned int time_inc = devpriv->ao_last_scan_time +
 					devpriv->ao_scan_period - now;
 
-		mod_timer(&devpriv->ao_timer,
-			  jiffies + usecs_to_jiffies(time_inc));
+		spin_lock(&dev->spinlock);
+		if (devpriv->ao_timer_enable) {
+			mod_timer(&devpriv->ao_timer,
+				  jiffies + usecs_to_jiffies(time_inc));
+		}
+		spin_unlock(&dev->spinlock);
 	}
 
 underrun:
@@ -517,9 +533,12 @@ static int waveform_ao_inttrig_start(struct comedi_device *dev,
 	async->inttrig = NULL;
 
 	devpriv->ao_last_scan_time = ktime_to_us(ktime_get());
+	spin_lock_bh(&dev->spinlock);
+	devpriv->ao_timer_enable = true;
 	devpriv->ao_timer.expires =
 		jiffies + usecs_to_jiffies(devpriv->ao_scan_period);
 	add_timer(&devpriv->ao_timer);
+	spin_unlock_bh(&dev->spinlock);
 
 	return 1;
 }
@@ -604,6 +623,9 @@ static int waveform_ao_cancel(struct comedi_device *dev,
 	struct waveform_private *devpriv = dev->private;
 
 	s->async->inttrig = NULL;
+	spin_lock_bh(&dev->spinlock);
+	devpriv->ao_timer_enable = false;
+	spin_unlock_bh(&dev->spinlock);
 	if (in_softirq()) {
 		/* Assume we were called from the timer routine itself. */
 		del_timer(&devpriv->ao_timer);
drivers/staging/speakup/synth.c +3 -1
index 3568bfb89912..b5944e7bdbf6 100644
@@ -208,8 +208,10 @@ void spk_do_flush(void)
 	wake_up_process(speakup_task);
 }
 
-void synth_write(const char *buf, size_t count)
+void synth_write(const char *_buf, size_t count)
 {
+	const unsigned char *buf = (const unsigned char *) _buf;
+
 	while (count--)
 		synth_buffer_add(*buf++);
 	synth_start();
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +34 -18

133 lines not on this page · raw message

drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h +4 -2
index b0ee1716525b..d20d5182577d 100644
@@ -47,7 +47,7 @@ typedef void (*vchiq_mmal_buffer_cb)(
 		unsigned long length, u32 mmal_flags, s64 dts, s64 pts);
 
 struct vchiq_mmal_port {
-	bool enabled;
+	u32 enabled:1;
 	u32 handle;
 	u32 type; /* port type, cached to use on port info set */
 	u32 index; /* port index, cached to use on port info set */
@@ -81,7 +81,8 @@ struct vchiq_mmal_port {
 };
 
 struct vchiq_mmal_component {
-	bool enabled;
+	u32 in_use:1;
+	u32 enabled:1;
 	u32 handle;  /* VideoCore handle for component */
 	u32 inputs;  /* Number of input ports */
 	u32 outputs; /* Number of output ports */
@@ -90,6 +91,7 @@ struct vchiq_mmal_component {
 	struct vchiq_mmal_port input[MAX_PORT_COUNT]; /* input ports */
 	struct vchiq_mmal_port output[MAX_PORT_COUNT]; /* output ports */
 	struct vchiq_mmal_port clock[MAX_PORT_COUNT]; /* clock ports */
+	u32 client_component;	/* Used to ref back to client struct */
 };
 
 int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance);
drivers/tty/n_gsm.c +3 -0
index 4a890011eba3..a38539fd8253 100644
@@ -2435,6 +2435,9 @@ static int gsmld_open(struct tty_struct *tty)
 	struct gsm_mux *gsm;
 	int ret;
 
+	if (!capable(CAP_NET_ADMIN))
+		return -EPERM;
+
 	if (tty->ops->write == NULL)
 		return -EINVAL;
 
drivers/tty/serial/fsl_lpuart.c +5 -2
index af23d41b9843..3c94c283e7cb 100644
@@ -1753,9 +1753,12 @@ lpuart32_set_termios(struct uart_port *port, struct ktermios *termios,
 		       UARTCTRL);
 
 	lpuart32_serial_setbrg(sport, baud);
-	lpuart32_write(&sport->port, modem, UARTMODIR);
-	lpuart32_write(&sport->port, ctrl, UARTCTRL);
+	/* disable CTS before enabling UARTCTRL_TE to avoid pending idle preamble */
+	lpuart32_write(&sport->port, modem & ~UARTMODIR_TXCTSE, UARTMODIR);
 	/* restore control register */
+	lpuart32_write(&sport->port, ctrl, UARTCTRL);
+	/* re-enable the CTS if needed */
+	lpuart32_write(&sport->port, modem, UARTMODIR);
 
 	spin_unlock_irqrestore(&sport->port.lock, flags);
 }
drivers/tty/vt/vt.c +2 -2
index c9083d853076..abcacd377e09 100644
@@ -405,7 +405,7 @@ static void vc_uniscr_delete(struct vc_data *vc, unsigned int nr)
 		char32_t *ln = uniscr->lines[vc->vc_y];
 		unsigned int x = vc->vc_x, cols = vc->vc_cols;
 
-		memcpy(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln));
+		memmove(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln));
 		memset32(&ln[cols - nr], ' ', nr);
 	}
 }
@@ -855,7 +855,7 @@ static void delete_char(struct vc_data *vc, unsigned int nr)
 	unsigned short *p = (unsigned short *) vc->vc_pos;
 
 	vc_uniscr_delete(vc, nr);
-	scr_memcpyw(p, p + nr, (vc->vc_cols - vc->vc_x - nr) * 2);
+	scr_memmovew(p, p + nr, (vc->vc_cols - vc->vc_x - nr) * 2);
 	scr_memsetw(p + vc->vc_cols - vc->vc_x - nr, vc->vc_video_erase_char,
 			nr * 2);
 	vc->vc_need_wrap = 0;
drivers/usb/class/cdc-wdm.c +5 -1
index b60a4200fc2b..bc2f07b0de7c 100644
@@ -471,6 +471,7 @@ static ssize_t wdm_write
 static int service_outstanding_interrupt(struct wdm_device *desc)
 {
 	int rv = 0;
+	int used;
 
 	/* submit read urb only if the device is waiting for it */
 	if (!desc->resp_count || !--desc->resp_count)
@@ -485,7 +486,10 @@ static int service_outstanding_interrupt(struct wdm_device *desc)
 		goto out;
 	}
 
-	set_bit(WDM_RESPONDING, &desc->flags);
+	used = test_and_set_bit(WDM_RESPONDING, &desc->flags);
+	if (used)
+		goto out;
+
 	spin_unlock_irq(&desc->iuspin);
 	rv = usb_submit_urb(desc->response, GFP_KERNEL);
 	spin_lock_irq(&desc->iuspin);
drivers/usb/core/port.c +3 -2
index 1fe83b522d5f..c03c63ac0745 100644
@@ -431,7 +431,7 @@ static int match_location(struct usb_device *peer_hdev, void *p)
 	struct usb_hub *peer_hub = usb_hub_to_struct_hub(peer_hdev);
 	struct usb_device *hdev = to_usb_device(port_dev->dev.parent->parent);
 
-	if (!peer_hub)
+	if (!peer_hub || port_dev->connect_type == USB_PORT_NOT_USED)
 		return 0;
 
 	hcd = bus_to_hcd(hdev->bus);
@@ -442,7 +442,8 @@ static int match_location(struct usb_device *peer_hdev, void *p)
 
 	for (port1 = 1; port1 <= peer_hdev->maxchild; port1++) {
 		peer = peer_hub->ports[port1 - 1];
-		if (peer && peer->location == port_dev->location) {
+		if (peer && peer->connect_type != USB_PORT_NOT_USED &&
+		    peer->location == port_dev->location) {
 			link_peers_report(port_dev, peer);
 			return 1; /* done */
 		}
drivers/usb/core/sysfs.c +13 -3
index 7e88fdfe3cf5..314f2d996c56 100644
@@ -1069,14 +1069,24 @@ static ssize_t interface_authorized_store(struct device *dev,
 {
 	struct usb_interface *intf = to_usb_interface(dev);
 	bool val;
+	struct kernfs_node *kn;
 
 	if (strtobool(buf, &val) != 0)
 		return -EINVAL;
 
-	if (val)
+	if (val) {
 		usb_authorize_interface(intf);
-	else
-		usb_deauthorize_interface(intf);
+	} else {
+		/*
+		 * Prevent deadlock if another process is concurrently
+		 * trying to unregister intf.
+		 */
+		kn = sysfs_break_active_protection(&dev->kobj, &attr->attr);
+		if (kn) {
+			usb_deauthorize_interface(intf);
+			sysfs_unbreak_active_protection(kn);
+		}
+	}
 
 	return count;
 }
drivers/usb/dwc2/core.h +14 -0
index 828803b672aa..e48393cedf8d 100644
@@ -716,8 +716,14 @@ struct dwc2_dregs_backup {
  * struct dwc2_hregs_backup - Holds host registers state before
  * entering partial power down
  * @hcfg:		Backup of HCFG register
+ * @hflbaddr:		Backup of HFLBADDR register
  * @haintmsk:		Backup of HAINTMSK register
+ * @hcchar:		Backup of HCCHAR register
+ * @hcsplt:		Backup of HCSPLT register
  * @hcintmsk:		Backup of HCINTMSK register
+ * @hctsiz:		Backup of HCTSIZ register
+ * @hdma:		Backup of HCDMA register
+ * @hcdmab:		Backup of HCDMAB register
  * @hprt0:		Backup of HPTR0 register
  * @hfir:		Backup of HFIR register
  * @hptxfsiz:		Backup of HPTXFSIZ register
@@ -725,8 +731,14 @@ struct dwc2_dregs_backup {
  */
 struct dwc2_hregs_backup {
 	u32 hcfg;
+	u32 hflbaddr;
 	u32 haintmsk;
+	u32 hcchar[MAX_EPS_CHANNELS];
+	u32 hcsplt[MAX_EPS_CHANNELS];
 	u32 hcintmsk[MAX_EPS_CHANNELS];
+	u32 hctsiz[MAX_EPS_CHANNELS];
+	u32 hcidma[MAX_EPS_CHANNELS];
+	u32 hcidmab[MAX_EPS_CHANNELS];
 	u32 hprt0;
 	u32 hfir;
 	u32 hptxfsiz;
@@ -1052,6 +1064,7 @@ struct dwc2_hsotg {
 	bool needs_byte_swap;
 
 	/* DWC OTG HW Release versions */
+#define DWC2_CORE_REV_4_30a	0x4f54430a
 #define DWC2_CORE_REV_2_71a	0x4f54271a
 #define DWC2_CORE_REV_2_72a     0x4f54272a
 #define DWC2_CORE_REV_2_80a	0x4f54280a
@@ -1282,6 +1295,7 @@ int dwc2_backup_global_registers(struct dwc2_hsotg *hsotg);
 int dwc2_restore_global_registers(struct dwc2_hsotg *hsotg);
 
 void dwc2_enable_acg(struct dwc2_hsotg *hsotg);
+void dwc2_wakeup_from_lpm_l1(struct dwc2_hsotg *hsotg, bool remotewakeup);
 
 /* This function should be called on every hardware interrupt. */
 irqreturn_t dwc2_handle_common_intr(int irq, void *dev);
drivers/usb/dwc2/core_intr.c +42 -21

96 lines not on this page · raw message

drivers/usb/dwc2/gadget.c +4 -0
index 85d25f7e9c27..06ee984237db 100644
@@ -1308,6 +1308,10 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req,
 		ep->name, req, req->length, req->buf, req->no_interrupt,
 		req->zero, req->short_not_ok);
 
+	if (hs->lx_state == DWC2_L1) {
+		dwc2_wakeup_from_lpm_l1(hs, true);
+	}
+
 	/* Prevent new request submission when controller is suspended */
 	if (hs->lx_state != DWC2_L0) {
 		dev_dbg(hs->dev, "%s: submit request only in active state\n",
drivers/usb/dwc2/hcd.c +39 -8

96 lines not on this page · raw message

drivers/usb/dwc2/hcd_ddma.c +11 -6
index a858b5f9c1d6..6a4aa71da103 100644
@@ -589,7 +589,7 @@ static void dwc2_init_isoc_dma_desc(struct dwc2_hsotg *hsotg,
 	idx = qh->td_last;
 	inc = qh->host_interval;
 	hsotg->frame_number = dwc2_hcd_get_frame_number(hsotg);
-	cur_idx = dwc2_frame_list_idx(hsotg->frame_number);
+	cur_idx = idx;
 	next_idx = dwc2_desclist_idx_inc(qh->td_last, inc, qh->dev_speed);
 
 	/*
@@ -896,6 +896,8 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg,
 {
 	struct dwc2_dma_desc *dma_desc;
 	struct dwc2_hcd_iso_packet_desc *frame_desc;
+	u16 frame_desc_idx;
+	struct urb *usb_urb = qtd->urb->priv;
 	u16 remain = 0;
 	int rc = 0;
 
@@ -908,8 +910,11 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg,
 				DMA_FROM_DEVICE);
 
 	dma_desc = &qh->desc_list[idx];
+	frame_desc_idx = (idx - qtd->isoc_td_first) & (usb_urb->number_of_packets - 1);
 
-	frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index_last];
+	frame_desc = &qtd->urb->iso_descs[frame_desc_idx];
+	if (idx == qtd->isoc_td_first)
+		usb_urb->start_frame = dwc2_hcd_get_frame_number(hsotg);
 	dma_desc->buf = (u32)(qtd->urb->dma + frame_desc->offset);
 	if (chan->ep_is_in)
 		remain = (dma_desc->status & HOST_DMA_ISOC_NBYTES_MASK) >>
@@ -930,7 +935,7 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg,
 		frame_desc->status = 0;
 	}
 
-	if (++qtd->isoc_frame_index == qtd->urb->packet_count) {
+	if (++qtd->isoc_frame_index == usb_urb->number_of_packets) {
 		/*
 		 * urb->status is not used for isoc transfers here. The
 		 * individual frame_desc status are used instead.
@@ -1035,11 +1040,11 @@ static void dwc2_complete_isoc_xfer_ddma(struct dwc2_hsotg *hsotg,
 				return;
 			idx = dwc2_desclist_idx_inc(idx, qh->host_interval,
 						    chan->speed);
-			if (!rc)
+			if (rc == 0)
 				continue;
 
-			if (rc == DWC2_CMPL_DONE)
-				break;
[… more lines in the raw message]

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

drivers/usb/dwc2/hw.h +1 -1
index 0ca8e7bc7aaf..c2c7de88df79 100644

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

drivers/usb/gadget/function/f_ncm.c +1 -1
index b8597d4a4864..ca50257b9538 100644

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

drivers/usb/gadget/udc/core.c +3 -1
index e3dc74cdba83..e51e223d0dc7 100644

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

drivers/usb/host/sl811-hcd.c +2 -0
index 6dedefada92b..873300e8cd27 100644

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

drivers/usb/serial/cp210x.c +4 -0
index b58ca66dc3ae..4686cf7c6b0a 100644

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

drivers/usb/serial/ftdi_sio.c +2 -0
index 6d4c572807a4..755cbc9525a1 100644

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

drivers/usb/serial/ftdi_sio_ids.h +6 -0
index 9a0f9fc99124..b2aec1106678 100644

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

drivers/usb/serial/option.c +6 -0
index 5014f45c7c6a..7f4baceb540c 100644

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

drivers/usb/storage/isd200.c +18 -5
index f5e4500d9970..b7255659229c 100644

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

drivers/vfio/platform/vfio_platform_irq.c +4 -1
index 46d4750f43a8..c53a9b443873 100644

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

drivers/video/fbdev/core/fbmon.c +4 -3
index 8607439d6932..e4040fb860bb 100644

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

drivers/video/fbdev/via/accel.c +2 -2
index eb3615c69987..f542b01568df 100644

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

drivers/virtio/virtio.c +8 -2
index 89935105df49..3a16ac6b47fc 100644

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

fs/aio.c +6 -2
index 8ad748dd3e48..146681fb7e8a 100644

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

fs/btrfs/export.c +8 -1
index ecc33e3a3c06..01e9a5afc33b 100644

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

fs/btrfs/ioctl.c +8 -17
index a4c0fc19c5e8..b77dffd32208 100644

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

fs/btrfs/send.c +9 -1
index 0c86409a316e..e3b6ca9176af 100644

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

fs/btrfs/volumes.c +11 -1
index ceced5e56c5a..30b5646b2c0d 100644

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

fs/exec.c +1 -0
index 28e3b5eb2f4a..7ada94402ec9 100644

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

fs/ext4/resize.c +2 -1
index 97af09d6e7e6..7d615c00b632 100644

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

fs/fat/nfs.c +6 -0
index eb192656fba2..f442a8d2f114 100644

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

fs/fuse/fuse_i.h +0 -1
index 1c754a02fb06..aa0a5e396090 100644

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

fs/fuse/inode.c +5 -2
index 3b51c881baf8..a67769c357b2 100644

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

fs/isofs/inode.c +16 -2
index 6e4e2cfd40b9..aec11a7676c9 100644

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

fs/nilfs2/alloc.c +19 -19
index bbd82f650e93..279d945d4ebe 100644

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

fs/nilfs2/btree.c +28 -23

51 lines not on this page · raw message

fs/nilfs2/cpfile.c +4 -6
index 8d41311b5db4..86d4d850d130 100644

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

fs/nilfs2/dat.c +7 -7
index b9c759addd50..c47e1f6f23a8 100644

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

fs/nilfs2/direct.c +15 -8
index 533e24ea3a88..7faf8c285d6c 100644

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

fs/nilfs2/gcinode.c +1 -1
index cef46650102e..b0077f5f7112 100644

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

fs/nilfs2/ifile.c +2 -2
index 4140d232cadc..02727ed3a7c6 100644

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

fs/nilfs2/inode.c +15 -16
index ea94dc21af0c..530edb813add 100644

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

fs/nilfs2/ioctl.c +18 -19
index dfb2083b8ce1..ecb5e4cf058b 100644

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

fs/nilfs2/mdt.c +1 -1
index 7c9055d767d1..e80ef2c0a785 100644

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

fs/nilfs2/namei.c +3 -3
index 9fe6d4ab74f0..a6ec7961d4f5 100644

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

fs/nilfs2/nilfs.h +9 -0
index cca30f0f965c..d8dc6e546feb 100644

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

fs/nilfs2/page.c +5 -6
index e5fee7fac915..762dd277099e 100644

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

fs/nilfs2/recovery.c +14 -18
index 18feb9c7c706..0923231e9e60 100644

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

fs/nilfs2/segbuf.c +1 -1
index e72466fc8ca9..9f435879a048 100644

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

fs/nilfs2/segment.c +19 -19
index 7d1860d33723..d4610f71d21b 100644

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

fs/nilfs2/sufile.c +13 -16
index 4626540008c1..379db0c54227 100644

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

fs/nilfs2/super.c +27 -30

57 lines not on this page · raw message

fs/nilfs2/sysfs.c +13 -16
index 28a2db3b1787..57afd06db62d 100644

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

fs/nilfs2/the_nilfs.c +40 -45

85 lines not on this page · raw message

fs/open.c +24 -14
index 76996f920ebf..fc634ab5af0d 100644

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

fs/sysv/itree.c +4 -6
index e3d1673b8ec9..ef9bcfeec21a 100644

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

fs/ubifs/file.c +4 -9
index fca3b7f483c7..e373e5d057fd 100644

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

include/linux/fs.h +3 -0
index e2c87c056742..95e35e074011 100644

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

include/linux/gfp.h +9 -0
index f78d1e89593f..6f8ace5c73d9 100644

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

include/linux/sunrpc/sched.h +1 -1
index 96837ae07822..ca0a568fd824 100644

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

include/linux/timer.h +13 -5
index 7b066fd38248..aef40cac2add 100644

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

include/net/erspan.h +17 -2
index b39643ef4c95..0d9e86bd9893 100644

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

include/net/inet_connection_sock.h +1 -0
index da8a582ab032..6141fe1932c8 100644

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

include/net/sock.h +9 -0
index 81888513b3b9..b5a929a4bc74 100644

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

include/soc/fsl/qman.h +9 -0
index 597783b8a3a0..b67f2e83bbef 100644

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

include/trace/events/timer.h +11 -6
index 350b046e7576..295517f109d7 100644

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

include/uapi/linux/input-event-codes.h +1 -0
index 1c011379a996..76b524895dea 100644

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

init/initramfs.c +44 -33

77 lines not on this page · raw message

kernel/events/core.c +9 -0
index 1f215aa8f30d..ef422d1326a8 100644

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

kernel/power/suspend.c +1 -0
index 0bd595a0b610..7a080015a1b3 100644

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

kernel/printk/printk.c +6 -0
index 2ba16c426ba5..66c78dfd1792 100644

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

kernel/time/timer.c +204 -78

282 lines not on this page · raw message

mm/compaction.c +1 -6
index 5079ddbec8f9..7dc5a5d684fd 100644

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

mm/memory-failure.c +1 -1
index c971d5e11f93..5fce5df0fe35 100644

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

mm/memory.c +4 -0
index 1e108db4405c..65601ce49642 100644

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

mm/memtest.c +2 -2
index f53ace709ccd..d407373f225b 100644

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

mm/migrate.c +5 -1
index 171573613c39..893ea04498f7 100644

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

mm/page_alloc.c +6 -4
index 4553cc848abc..147b67d31431 100644

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

mm/vmscan.c +4 -1
index b7d7f6d65bd5..b23016615c54 100644

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

net/bluetooth/hci_debugfs.c +32 -16

48 lines not on this page · raw message

net/bluetooth/hci_event.c +25 -0
index 0e9325057b3a..31ab3ae78792 100644

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

net/core/sock.c +7 -0
index 62d169bcfcfa..eaa6f1ca414d 100644

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

net/ipv4/inet_connection_sock.c +14 -0
index 7392a744c677..17a900c85aa6 100644

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

net/ipv4/ip_gre.c +74 -30

104 lines not on this page · raw message

net/ipv4/tcp.c +2 -0
index 3df973d22295..54d6058dcb5c 100644

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

net/ipv6/ip6_fib.c +7 -7
index 92bc56028b8b..63fb9e01eb4e 100644

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

net/ipv6/ip6_gre.c +3 -0
index aa8ada354a39..58e1fc8e4124 100644

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

net/mac80211/cfg.c +2 -3
index 77d8ed184c1c..cfbaafcea0a4 100644

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

net/netfilter/nf_tables_api.c +20 -2
index 94f1104b0487..dc40222a9e66 100644

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

net/nfc/nci/core.c +5 -0
index 2e885b7a02a1..1f863ccf2121 100644

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

net/rds/rdma.c +1 -1
index 2632f3f3aa28..51f1c50c9177 100644

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

net/sched/act_skbmod.c +5 -5
index 03a272af664a..51d4696aeea3 100644

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

net/xfrm/xfrm_user.c +3 -0
index 699e544b4bfd..5892ff68d168 100644

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

scripts/Makefile.extrawarn +2 -0
index e15cd63428ba..c2e41daf373f 100644

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

security/smack/smack_lsm.c +11 -1
index 128a5f464740..d9bff4ba7f2e 100644

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

sound/pci/hda/patch_realtek.c +6 -3
index 2b345ba083d8..60dfaf2adaaf 100644

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

sound/sh/aica.c +14 -3
index 69ac44b33560..3df531bc50ad 100644

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

sound/soc/soc-ops.c +1 -1
index e01f3bf3ef17..08ed973b2d97 100644

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

tools/iio/iio_utils.c +1 -1
index d174487b2f22..1ef51c7e7b04 100644

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

tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c +1 -0
index 2aba622d1c5a..470d03e14342 100644

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

tools/testing/ktest/ktest.pl +1 -0
index 128a7fe45a1e..a29d9e125b00 100755

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

tools/testing/selftests/net/reuseaddr_conflict.c +1 -1
index 7c5b12664b03..bfb07dc49518 100644

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

virt/kvm/async_pf.c +26 -5
index c9861c2315e8..3e17f8c7432c 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.