Skip to contentSkip to conversation

Linux 4.19.149

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Oct 1, 2020 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 4.19.149 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/devicetree/bindings/sound/wm8994.txt               |   18 -
 Documentation/driver-api/libata.rst                              |    2 
 Makefile                                                         |    2 
 arch/arm/include/asm/kvm_emulate.h                               |   11 
 arch/arm/kernel/stacktrace.c                                     |    2 
 arch/arm/kernel/traps.c                                          |    6 
 arch/arm64/include/asm/kvm_emulate.h                             |    9 
 arch/arm64/kernel/cpufeature.c                                   |   12 
 arch/arm64/kvm/hyp/switch.c                                      |    2 
 arch/m68k/q40/config.c                                           |    1 
 arch/mips/include/asm/cpu-type.h                                 |    1 
 arch/powerpc/include/asm/kvm_asm.h                               |    3 
 arch/powerpc/kernel/eeh.c                                        |    2 
 arch/powerpc/kernel/traps.c                                      |    6 
 arch/powerpc/kvm/book3s_hv_tm.c                                  |   28 +
 arch/powerpc/kvm/book3s_hv_tm_builtin.c                          |   16 -
 arch/riscv/include/asm/ftrace.h                                  |    7 
 arch/riscv/kernel/ftrace.c                                       |   19 +
 arch/s390/kernel/perf_cpum_sf.c                                  |    9 
 arch/s390/kernel/setup.c                                         |    6 
 arch/x86/include/asm/nospec-branch.h                             |    4 
 arch/x86/include/asm/pkeys.h                                     |    5 
 arch/x86/kernel/apic/io_apic.c                                   |    1 
 arch/x86/kernel/fpu/xstate.c                                     |    9 
 arch/x86/kvm/mmutrace.h                                          |    2 
 arch/x86/kvm/svm.c                                               |    8 
 arch/x86/kvm/x86.c                                               |   13 
 arch/x86/lib/usercopy_64.c                                       |    2 
 drivers/acpi/ec.c                                                |   16 -
 drivers/ata/acard-ahci.c                                         |    6 
 drivers/ata/libahci.c                                            |    6 
 drivers/ata/libata-core.c                                        |    9 
 drivers/ata/libata-sff.c                                         |   12 
 drivers/ata/pata_macio.c                                         |    6 
 drivers/ata/pata_pxa.c                                           |    8 
 drivers/ata/pdc_adma.c                                           |    7 
 drivers/ata/sata_fsl.c                                           |    4 
 drivers/ata/sata_inic162x.c                                      |    4 
 drivers/ata/sata_mv.c                                            |   34 +-
 drivers/ata/sata_nv.c                                            |   18 -
 drivers/ata/sata_promise.c                                       |    6 
 drivers/ata/sata_qstor.c                                         |    8 
 drivers/ata/sata_rcar.c                                          |    6 
 drivers/ata/sata_sil.c                                           |    8 
 drivers/ata/sata_sil24.c                                         |    6 
 drivers/ata/sata_sx4.c                                           |    6 
 drivers/atm/eni.c                                                |    2 
 drivers/base/regmap/regmap.c                                     |   12 
 drivers/bluetooth/btrtl.c                                        |   20 -
 drivers/bus/hisi_lpc.c                                           |   27 +
 drivers/char/random.c                                            |   12 
 drivers/char/tlclk.c                                             |   17 -
 drivers/char/tpm/tpm_crb.c                                       |  123 ++++++--
 drivers/char/tpm/tpm_ibmvtpm.c                                   |    9 
 drivers/char/tpm/tpm_ibmvtpm.h                                   |    1 
 drivers/clk/socfpga/clk-pll-s10.c                                |    4 
 drivers/clk/ti/adpll.c                                           |   11 
 drivers/clocksource/h8300_timer8.c                               |    2 
 drivers/cpufreq/powernv-cpufreq.c                                |   13 
 drivers/crypto/chelsio/chcr_algo.c                               |    5 
 drivers/crypto/chelsio/chtls/chtls_io.c                          |   10 
 drivers/devfreq/tegra-devfreq.c                                  |    4 
 drivers/dma-buf/dma-fence.c                                      |   78 ++---
 drivers/dma/mediatek/mtk-hsdma.c                                 |    4 
 drivers/dma/stm32-dma.c                                          |    9 
 drivers/dma/stm32-mdma.c                                         |    9 
 drivers/dma/tegra20-apb-dma.c                                    |    3 
 drivers/dma/xilinx/zynqmp_dma.c                                  |   24 +
 drivers/firmware/arm_sdei.c                                      |   26 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c                         |   31 +-
 drivers/gpu/drm/amd/amdgpu/atom.c                                |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c            |    2 
 drivers/gpu/drm/amd/display/dc/core/dc_link.c                    |   67 ++--
 drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c                |   52 +--
 drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c                 |    7 
 drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c               |    7 
 drivers/gpu/drm/gma500/cdv_intel_display.c                       |    2 
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c                            |   27 +
 drivers/gpu/drm/msm/msm_drv.c                                    |    6 
 drivers/gpu/drm/nouveau/dispnv50/disp.c                          |    4 
 drivers/gpu/drm/nouveau/nouveau_debugfs.c                        |    5 
 drivers/gpu/drm/nouveau/nouveau_gem.c                            |    4 
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowpci.c             |   17 +
 drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c                  |    4 
 drivers/gpu/drm/radeon/radeon_bios.c                             |   30 +-
 drivers/gpu/drm/sun4i/sun8i_csc.h                                |    2 
 drivers/gpu/drm/vc4/vc4_hdmi.c                                   |    1 
 drivers/i2c/i2c-core-base.c                                      |    2 
 drivers/infiniband/core/cm.c                                     |   25 +
 drivers/infiniband/hw/cxgb4/cm.c                                 |    4 
 drivers/infiniband/hw/i40iw/i40iw_cm.c                           |    2 
 drivers/infiniband/hw/qedr/qedr_iw_cm.c                          |    2 
 drivers/infiniband/sw/rxe/rxe.c                                  |    2 
 drivers/infiniband/sw/rxe/rxe_qp.c                               |    7 
 drivers/leds/leds-mlxreg.c                                       |    4 
 drivers/md/bcache/bcache.h                                       |    1 
 drivers/md/bcache/btree.c                                        |   12 
 drivers/md/bcache/super.c                                        |    1 
 drivers/media/dvb-frontends/tda10071.c                           |    9 
 drivers/media/i2c/smiapp/smiapp-core.c                           |    3 
 drivers/media/media-device.c                                     |   65 ++--
 drivers/media/platform/ti-vpe/cal.c                              |    6 
 drivers/media/usb/go7007/go7007-usb.c                            |    4 
 drivers/mfd/mfd-core.c                                           |   10 
 drivers/mmc/core/mmc.c                                           |    9 
 drivers/mtd/chips/cfi_cmdset_0002.c                              |    1 
 drivers/mtd/cmdlinepart.c                                        |   23 +
 drivers/mtd/nand/raw/omap_elm.c                                  |    1 
 drivers/mtd/ubi/fastmap-wl.c                                     |   46 ++-
 drivers/mtd/ubi/fastmap.c                                        |   14 
 drivers/mtd/ubi/ubi.h                                            |    6 
 drivers/mtd/ubi/wl.c                                             |   32 --
 drivers/mtd/ubi/wl.h                                             |    1 
 drivers/net/ethernet/intel/e1000/e1000_main.c                    |   18 -
 drivers/net/ethernet/qlogic/qed/qed_sriov.c                      |    1 
 drivers/net/ieee802154/adf7242.c                                 |    4 
 drivers/net/ieee802154/ca8210.c                                  |    1 
 drivers/net/wireless/ath/ar5523/ar5523.c                         |    2 
 drivers/net/wireless/ath/ath10k/debug.c                          |    3 
 drivers/net/wireless/ath/ath10k/sdio.c                           |   18 -
 drivers/net/wireless/ath/ath10k/wmi.c                            |   49 ++-
 drivers/net/wireless/marvell/mwifiex/fw.h                        |    2 
 drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c               |    4 
 drivers/net/wireless/mediatek/mt76/agg-rx.c                      |    1 
 drivers/net/wireless/ti/wlcore/main.c                            |    4 
 drivers/net/wireless/ti/wlcore/tx.c                              |    1 
 drivers/nvme/host/core.c                                         |   12 
 drivers/nvme/host/multipath.c                                    |   21 -
 drivers/nvme/host/nvme.h                                         |   19 +
 drivers/nvme/target/rdma.c                                       |   30 +-
 drivers/pci/controller/pci-tegra.c                               |    3 
 drivers/pci/hotplug/pciehp_hpc.c                                 |   26 +
 drivers/pci/rom.c                                                |   17 -
 drivers/phy/samsung/phy-s5pv210-usb2.c                           |    4 
 drivers/power/supply/max17040_battery.c                          |    2 
 drivers/rapidio/devices/rio_mport_cdev.c                         |   14 
 drivers/rtc/rtc-ds1374.c                                         |   15 -
 drivers/rtc/rtc-sa1100.c                                         |   18 -
 drivers/s390/block/dasd_fba.c                                    |    9 
 drivers/s390/crypto/zcrypt_api.c                                 |    3 
 drivers/scsi/aacraid/aachba.c                                    |    8 
 drivers/scsi/aacraid/commsup.c                                   |    2 
 drivers/scsi/aacraid/linit.c                                     |   46 ++-
 drivers/scsi/cxlflash/main.c                                     |    1 
 drivers/scsi/fnic/fnic_scsi.c                                    |    3 
 drivers/scsi/hpsa.c                                              |   80 +++--
 drivers/scsi/libfc/fc_rport.c                                    |   13 
 drivers/scsi/lpfc/lpfc_attr.c                                    |   35 +-
 drivers/scsi/lpfc/lpfc_ct.c                                      |  137 ++++-----
 drivers/scsi/lpfc/lpfc_hw.h                                      |   36 +-
 drivers/scsi/lpfc/lpfc_sli.c                                     |    4 
 drivers/scsi/pm8001/pm8001_sas.c                                 |   50 ++-
 drivers/scsi/qedi/qedi_iscsi.c                                   |    3 
 drivers/scsi/ufs/ufshcd.c                                        |   14 
 drivers/staging/media/imx/imx-media-capture.c                    |    2 
 drivers/staging/rtl8188eu/core/rtw_recv.c                        |   19 -
 drivers/thermal/rcar_thermal.c                                   |    6 
 drivers/tty/serial/8250/8250_omap.c                              |    8 
 drivers/tty/serial/8250/8250_port.c                              |   16 +
 drivers/tty/serial/samsung.c                                     |    8 
 drivers/tty/serial/xilinx_uartps.c                               |    8 
 drivers/tty/vcc.c                                                |    1 
 drivers/usb/dwc3/gadget.c                                        |    2 
 drivers/usb/host/ehci-mv.c                                       |    8 
 drivers/vfio/pci/vfio_pci.c                                      |   13 
 fs/block_dev.c                                                   |   10 
 fs/btrfs/extent-tree.c                                           |    2 
 fs/btrfs/inode.c                                                 |   23 -
 fs/ceph/caps.c                                                   |   14 
 fs/ceph/inode.c                                                  |    5 
 fs/cifs/cifsglob.h                                               |    9 
 fs/cifs/file.c                                                   |   21 -
 fs/cifs/misc.c                                                   |   17 -
 fs/cifs/smb1ops.c                                                |    8 
 fs/cifs/smb2misc.c                                               |   32 --
 fs/cifs/smb2ops.c                                                |   44 ++-
 fs/cifs/smb2pdu.h                                                |    2 
 fs/dcache.c                                                      |    4 
 fs/ext4/inode.c                                                  |    2 
 fs/ext4/mballoc.c                                                |   11 
 fs/fuse/dev.c                                                    |    1 
 fs/gfs2/inode.c                                                  |   13 
 fs/nfs/pagelist.c                                                |   67 +++-
 fs/nfs/write.c                                                   |   10 
 fs/nfsd/nfs4state.c                                              |   73 ++---
 fs/ubifs/io.c                                                    |   16 -
 fs/xfs/libxfs/xfs_attr_leaf.c                                    |    4 
 fs/xfs/libxfs/xfs_dir2_node.c                                    |    1 
 fs/xfs/libxfs/xfs_trans_resv.c                                   |   96 +++++-
 fs/xfs/scrub/dir.c                                               |    3 
 include/linux/debugfs.h                                          |    5 
 include/linux/libata.h                                           |   13 
 include/linux/mmc/card.h                                         |    2 
 include/linux/nfs_page.h                                         |    2 
 include/linux/pci.h                                              |    1 
 include/linux/seqlock.h                                          |   11 
 include/linux/skbuff.h                                           |   14 
 include/net/sock.h                                               |    4 
 include/trace/events/sctp.h                                      |    9 
 kernel/audit_watch.c                                             |    2 
 kernel/bpf/hashtab.c                                             |    8 
 kernel/bpf/inode.c                                               |    4 
 kernel/kprobes.c                                                 |   22 +
 kernel/printk/printk.c                                           |    3 
 kernel/sys.c                                                     |    4 
 kernel/time/timekeeping.c                                        |    3 
 kernel/trace/trace.c                                             |    5 
 kernel/trace/trace_entries.h                                     |    2 
 kernel/trace/trace_events.c                                      |    2 
 kernel/trace/trace_events_hist.c                                 |    1 
 kernel/trace/trace_preemptirq.c                                  |    4 
 lib/string.c                                                     |   24 +
 mm/filemap.c                                                     |    8 
 mm/kmemleak.c                                                    |    2 
 mm/memory.c                                                      |  121 +++++++-
 mm/mmap.c                                                        |    2 
 mm/pagewalk.c                                                    |    4 
 mm/swap_state.c                                                  |    5 
 mm/swapfile.c                                                    |    4 
 mm/vmscan.c                                                      |   45 +--
 net/atm/lec.c                                                    |    6 
 net/batman-adv/bridge_loop_avoidance.c                           |  145 ++++++++--
 net/batman-adv/bridge_loop_avoidance.h                           |    4 
 net/batman-adv/routing.c                                         |    4 
 net/batman-adv/soft-interface.c                                  |    6 
 net/bluetooth/hci_event.c                                        |   25 +
 net/bluetooth/l2cap_core.c                                       |   29 +-
 net/bluetooth/l2cap_sock.c                                       |   18 +
 net/core/filter.c                                                |    4 
 net/core/neighbour.c                                             |    1 
 net/ipv4/route.c                                                 |    1 
 net/ipv4/tcp.c                                                   |    2 
 net/ipv6/ip6_fib.c                                               |    7 
 net/llc/af_llc.c                                                 |    2 
 net/mac802154/tx.c                                               |    8 
 net/openvswitch/meter.c                                          |    4 
 net/openvswitch/meter.h                                          |    2 
 net/sctp/outqueue.c                                              |    6 
 net/sunrpc/svc_xprt.c                                            |   19 -
 net/sunrpc/xprtrdma/svc_rdma_backchannel.c                       |    1 
 net/tipc/topsrv.c                                                |    4 
 net/unix/af_unix.c                                               |   11 
 security/selinux/hooks.c                                         |   12 
 security/selinux/selinuxfs.c                                     |    1 
 sound/hda/hdac_bus.c                                             |    4 
 sound/pci/asihpi/hpioctl.c                                       |    4 
 sound/pci/hda/hda_controller.c                                   |   11 
 sound/pci/hda/patch_realtek.c                                    |   13 
 sound/soc/codecs/max98090.c                                      |    8 
 sound/soc/codecs/wm8994.c                                        |   10 
 sound/soc/codecs/wm_hubs.c                                       |    3 
 sound/soc/codecs/wm_hubs.h                                       |    1 
 sound/soc/img/img-i2s-out.c                                      |    8 
 sound/soc/intel/boards/bytcr_rt5640.c                            |   10 
 sound/soc/kirkwood/kirkwood-dma.c                                |    2 
 sound/usb/midi.c                                                 |   29 +-
 sound/usb/mixer.c                                                |   10 
 sound/usb/quirks.c                                               |    7 
 tools/gpio/gpio-hammer.c                                         |   17 +
 tools/objtool/check.c                                            |    2 
 tools/perf/builtin-stat.c                                        |    2 
 tools/perf/pmu-events/jevents.c                                  |   15 -
 tools/perf/tests/shell/lib/probe_vfs_getname.sh                  |    2 
 tools/perf/trace/beauty/arch_errno_names.sh                      |    2 
 tools/perf/util/cpumap.c                                         |   10 
 tools/perf/util/evsel.c                                          |    3 
 tools/perf/util/mem2node.c                                       |    3 
 tools/perf/util/metricgroup.c                                    |    3 
 tools/perf/util/parse-events.c                                   |    9 
 tools/perf/util/sort.c                                           |    2 
 tools/perf/util/symbol-elf.c                                     |    7 
 tools/power/x86/intel_pstate_tracer/intel_pstate_tracer.py       |   22 -
 tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc |    2 
 tools/testing/selftests/x86/syscall_nt.c                         |    1 
 virt/kvm/arm/mmio.c                                              |    2 
 virt/kvm/arm/mmu.c                                               |    5 
 virt/kvm/arm/vgic/vgic-init.c                                    |    1 
 virt/kvm/arm/vgic/vgic-its.c                                     |   11 
 virt/kvm/kvm_main.c                                              |    1 
 279 files changed, 2365 insertions(+), 1212 deletions(-)

Adrian Hunter (1):
perf kcore_copy: Fix module map when there are no modules loaded

Al Viro (1):
fix dget_parent() fastpath race

Alain Michaud (1):
Bluetooth: guard against controllers sending zero'd events

Alex Deucher (2):
drm/amdgpu/powerplay: fix AVFS handling with custom powerplay table drm/amdgpu/powerplay/smu7: fix AVFS handling with custom powerplay table

Alex Williamson (1):
vfio/pci: Clear error and request eventfd ctx after releasing

Alexander Duyck (1):
e1000: Do not perform reset in reset_task if we are already down

Alexandre Belloni (2):
rtc: sa1100: fix possible race condition
rtc: ds1374: fix possible race condition

Amelie Delaunay (2):
dmaengine: stm32-mdma: use vchan_terminate_vdesc() in .terminate_all
dmaengine: stm32-dma: use vchan_terminate_vdesc() in .terminate_all

Andreas Steinmetz (1):
ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor

Andy Lutomirski (1):
selftests/x86/syscall_nt: Clear weird flags after each test

Anshuman Khandual (1):
arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register

Anthony Iliopoulos (1):
nvme: explicitly update mpath disk capacity on revalidation

Aric Cyr (1):
drm/amd/display: dal_ddc_i2c_payloads_create can fail causing panic

Ayush Sawal (1):
crypto: chelsio - This fixes the kernel panic which occurs during a libkcapi test

Balsundar P (1):
scsi: aacraid: fix illegal IO beyond last LBA

Bart Van Assche (3):
scsi: ufs: Make ufshcd_add_command_trace() easier to read
scsi: ufs: Fix a race condition in the tracing code RDMA/rxe: Fix configuration of atomic queue pair attributes

Bob Peterson (1):
gfs2: clean up iopen glock mess in gfs2_create_inode

Boris Brezillon (1):
mtd: parser: cmdline: Support MTD names containing one or more colons

Bradley Bolen (1):
mmc: core: Fix size overflow for mmc partitions

Brian Foster (1):
xfs: fix attr leaf header freemap.size underflow

Chris Wilson (1):
dma-fence: Serialise signal enabling (dma_fence_enable_sw_signaling)

Christian Borntraeger (1):
s390/zcrypt: Fix ZCRYPT_PERDEV_REQCNT ioctl

Christophe JAILLET (4):
RDMA/iw_cgxb4: Fix an error handling path in 'c4iw_connect()' perf cpumap: Fix snprintf overflow check
SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()'
scsi: aacraid: Fix error handling paths in aac_probe_one()

Chuck Lever (1):
svcrdma: Fix leak of transport addresses

Colin Ian King (2):
media: tda10071: fix unsigned sign extension overflow
USB: EHCI: ehci-mv: fix less than zero comparison of an unsigned int

Cong Wang (1):

      atm: fix a memory leak of vcc->user_back

Dan Carpenter (1):
media: staging/imx: Missing assignment in imx_media_capture_device_register()

Daniel Borkmann (1):
bpf: Fix clobbering of r2 in bpf_gen_ld_abs

Darrick J. Wong (3):
xfs: fix log reservation overflows when allocating large rt extents
xfs: don't ever return a stale pointer from __xfs_dir3_free_read
xfs: mark dir corrupt when lookup-by-hash fails

Dave Hansen (1):
x86/pkeys: Add check for pkey "overflow"

David Sterba (1):
btrfs: don't force read-only after error in drop snapshot

Dennis Li (1):
drm/amdkfd: fix a memory leak issue

Dinghao Liu (8):
drm/nouveau/debugfs: fix runtime pm imbalance on error drm/nouveau: fix runtime pm imbalance on error drm/nouveau/dispnv50: fix runtime pm imbalance on error
ASoC: img-i2s-out: Fix runtime PM imbalance on error
wlcore: fix runtime pm imbalance in wl1271_tx_work
wlcore: fix runtime pm imbalance in wlcore_regdomain_config
mtd: rawnand: omap_elm: Fix runtime PM imbalance on error
PCI: tegra: Fix runtime PM imbalance on error

Dinh Nguyen (1):
clk: stratix10: use do_div() for 64-bit calculation

Divya Indi (1):
tracing: Adding NULL checks for trace_array descriptor pointer

Dmitry Baryshkov (1):
regmap: fix page selection for noinc reads

Dmitry Bogdanov (1):
net: qed: RDMA personality shouldn't fail VF load

Dmitry Monakhov (1):
ext4: mark block bitmap corrupted when found instead of BUGON

Dmitry Osipenko (2):
PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
dmaengine: tegra-apb: Prevent race conditions on channel's freeing

Don Brace (1):
scsi: hpsa: correct race condition in offload enabled

Doug Smythies (1):
tools/power/x86/intel_pstate_tracer: changes for python 3 compatibility

Douglas Anderson (1):
bdev: Reduce time holding bd_mutex in sync in blkdev_close()

Eric Dumazet (2):
net: silence data-races on sk_backlog.tail
mac802154: tx: fix use-after-free

Felix Fietkau (1):
mt76: clear skb pointers from rx aggregation reorder buffer during cleanup

Fuqian Huang (1):
m68k: q40: Fix info-leak in rtc_ioctl

Gabriel Ravier (1):
tools: gpio-hammer: Avoid potential overflow in main

Gao Xiang (1):
mm, THP, swap: fix allocating cluster for swapfile by mistake

Greg Kroah-Hartman (1):

      Linux 4.19.149

Guoju Fang (1):
bcache: fix a lost wake-up problem caused by mca_cannibalize_lock

Gustavo Romero (1):
KVM: PPC: Book3S HV: Treat TM-related invalid form instructions on P9 like the valid ones

Hans de Goede (2):
ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN Converter9 2-in-1
i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()

Hillf Danton (1):
Bluetooth: prefetch channel before killing sock

Hou Tao (2):
mtd: cfi_cmdset_0002: don't free cfi->cfiq in error path of cfi_amdstd_setup()
ubi: fastmap: Free unused fastmap anchor peb during detach

Howard Chung (1):
Bluetooth: L2CAP: handle l2cap config request during open state

Hui Wang (1):
ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged

Ian Rogers (5):
perf parse-events: Fix 3 use after frees found with clang ASAN
perf mem2node: Avoid double free related to realloc
perf evsel: Fix 2 memory leaks
perf trace: Fix the selection for architectures to generate the errno name tables perf metricgroup: Free metric_events on error

Ilya Leoshkevich (1):
s390/init: add missing __init annotations

Israel Rukshin (2):
nvme: Fix controller creation races with teardown flow
nvmet-rdma: fix double free of rdma queue

Ivan Lazeev (1):
tpm_crb: fix fTPM on AMD Zen+ CPUs

Ivan Safonov (1):
staging:r8188eu: avoid skb_clone for amsdu to msdu conversion

Jaewon Kim (1):
mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area

James Morse (1):
firmware: arm_sdei: Use cpus_read_lock() to avoid races with cpuhp

James Smart (3):
scsi: lpfc: Fix kernel crash at lpfc_nvme_info_show during remote port bounce
scsi: lpfc: Fix RQ buffer leakage when no IOCBs available
scsi: lpfc: Fix coverity errors in fmdi attribute handling

Jan Höppner (1):
s390/dasd: Fix zero write for FBA devices

Jason Gunthorpe (1):
RDMA/cm: Remove a race freeing timewait_info

Javed Hasan (2):
scsi: libfc: Handling of extra kref
scsi: libfc: Skip additional kref updating work event

Jeff Layton (2):
ceph: ensure we have a new cap before continuing in fill_inode
ceph: fix potential race in ceph_check_caps

Jia He (1):
mm: fix double page fault on arm64 if PTE_AF is cleared

Jin Yao (1):
perf parse-events: Use strcmp() to compare the PMU name

Jing Xiangfeng (1):
atm: eni: fix the missed pci_disable_device() for eni_init_one()

Jiri Olsa (1):
perf stat: Fix duration_time value for higher intervals

Jiri Slaby (3):
ata: define AC_ERR_OK
ata: make qc_prep return ata_completion_errors
ata: sata_mv, avoid trigerrable BUG_ON

Joakim Tjernlund (1):
ALSA: usb-audio: Add delay quirk for H570e USB headsets

Joe Perches (1):
kernel/sys.c: avoid copying possible padding bytes in copy_to_user

John Clements (1):
drm/amdgpu: increase atombios cmd timeout

John Garry (2):
bus: hisi_lpc: Fixup IO ports addresses to avoid use-after-free in host removal perf jevents: Fix leak of mapfile memory

John Meneghini (1):
nvme-multipath: do not reset on unknown status

Jonathan Bakker (3):
power: supply: max17040: Correct voltage reading
phy: samsung: s5pv210-usb2: Add delay after reset
tty: serial: samsung: Correct clock selection logic

Jonathan Lebon (1):
selinux: allow labeling before policy is loaded

Jordan Crouse (1):
drm/msm/a5xx: Always set an OPP supported hardware value

Josef Bacik (1):
tracing: Set kernel_stack's caller size properly

Josh Poimboeuf (1):
objtool: Fix noreturn detection for ignored functions

Kai-Heng Feng (1):
ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation P520

Kangjie Lu (1):
gma/gma500: fix a memory disclosure bug due to uninitialized bytes

Kevin Kou (1):
sctp: move trace_sctp_probe_path into sctp_outq_sack

Kirill A. Shutemov (1):
mm: avoid data corruption on CoW fault into PFN-mapped VMA

Krzysztof Kozlowski (1):
dt-bindings: sound: wm8994: Correct required supplies based on actual implementaion

Kusanagi Kouichi (1):
debugfs: Fix !DEBUG_FS debugfs_create_automount

Lee Jones (1):
mfd: mfd-core: Protect against NULL call-back function pointer

Linus Lüssing (4):
batman-adv: bla: fix type misuse for backbone_gw hash indexing
batman-adv: mcast/TT: fix wrongly dropped or rerouted packets
batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh
batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh

Liu Jian (1):
ieee802154: fix one possible memleak in ca8210_dev_com_init

Liu Song (1):
ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len

Madhuparna Bhowmik (2):
drivers: char: tlclk.c: Avoid data race between init and interrupt handler
rapidio: avoid data race between file operation callbacks and mport_cdev_add().

Manish Mandlik (1):
Bluetooth: Fix refcount use-after-free issue

Marc Zyngier (1):
KVM: arm64: Assume write fault on S1PTW permission fault on instruction fetch

Marco Elver (1):
seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier

Marek Szyprowski (1):
drm/vc4/vc4_hdmi: fill ASoC card owner

Martin Cerveny (1):
drm/sun4i: sun8i-csc: Secondary CSC register correction

Masami Hiramatsu (1):
kprobes: Fix to check probe enabled before disarm_kprobe_ftrace()

Matthias Fend (1):
dmaengine: zynqmp_dma: fix burst length configuration

Maxim Mikityanskiy (1):
Bluetooth: btrtl: Use kvmalloc for FW allocations

Maximilian Luz (1):
mwifiex: Increase AES key storage size to 256 bits

Mert Dirik (1):
ar5523: Add USB ID of SMCWUSBT-G2 wireless adapter

Miaohe Lin (1):

      KVM: arm/arm64: vgic: Fix potential double free dist->spis in __kvm_vgic_destroy()

Miaoqing Pan (2):
ath10k: fix array out-of-bounds access
ath10k: fix memory leak for tpc_stats_final

Mikel Rychliski (1):
PCI: Use ioremap(), not phys_to_virt() for platform ROM

Miklos Szeredi (1):
fuse: don't check refcount after stealing page

Mikulas Patocka (1):
arch/x86/lib/usercopy_64.c: fix __copy_user_flushcache() cache writeback

Mohan Kumar (1):
ALSA: hda: Clear RIRB status before reading WP

Muchun Song (1):
kprobes: Fix compiler warning for !CONFIG_KPROBES_ON_FTRACE

Nathan Chancellor (2):
tracing: Use address-of operator on section symbols mm/kmemleak.c: use address-of operator on section symbols

Nicholas Piggin (1):
powerpc/traps: Make unrecoverable NMIs die instead of panic

Nick Desaulniers (1):
lib/string.c: implement stpcpy

Nikhil Devshatwar (1):
media: ti-vpe: cal: Restrict DMA to avoid memory corruption

Niklas Söderlund (1):
thermal: rcar_thermal: Handle probe error gracefully

Nilesh Javali (1):
scsi: qedi: Fix termination timeouts in session logout

Oleh Kravchenko (1):
leds: mlxreg: Fix possible buffer overflow

Oliver O'Halloran (1):
powerpc/eeh: Only dump stack once if an MMIO loop is detected

Palmer Dabbelt (1):
RISC-V: Take text_mutex in ftrace_init_nop()

Pan Bian (3):
scsi: fnic: fix use after free
RDMA/qedr: Fix potential use after free
RDMA/i40iw: Fix potential use after free

Paolo Bonzini (1):
KVM: x86: fix incorrect comparison in trace event

Pavel Machek (1):
drm/msm: fix leaks if initialization fails

Pavel Shilovsky (1):
CIFS: Properly process SMB3 lease breaks

Peter Ujfalusi (1):
serial: 8250_omap: Fix sleeping function called from invalid context during probe

Pratik Rajesh Sampat (1):
cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn

Qian Cai (5):
skbuff: fix a data race in skb_queue_len()
random: fix data races at timer_rand_state mm/vmscan.c: fix data races using kswapd_classzone_idx vfio/pci: fix memory leaks of eventfd ctx mm/swap_state: fix a data race in swapin_nr_pages

Qiujun Huang (1):

      ext4: fix a data race at inode->i_disksize

Qu Wenruo (1):
btrfs: qgroup: fix data leak caused by race between writeback and truncate

Rafael J. Wysocki (1):
ACPI: EC: Reference count query handlers under lock

Raviteja Narayanam (1):
serial: uartps: Wait for tx_empty in console setup

Rodrigo Siqueira (1):
drm/amd/display: Stop if retimer is not available

Russell King (1):
ASoC: kirkwood: fix IRQ error handling

Sagar Biradar (1):
scsi: aacraid: Disabling TM path and only processing IOP reset

Sagi Grimberg (1):
nvme: fix possible deadlock when I/O is blocked

Sakari Ailus (1):
media: smiapp: Fix error handling at NVM reading

Sascha Hauer (1):
ubi: Fix producing anchor PEBs

Satendra Singh Thakur (1):
dmaengine: mediatek: hsdma_probe: fixed a memory leak when devm_request_irq fails

Sean Christopherson (1):
KVM: x86: Reset MMU context if guest toggles CR4.SMAP or CR4.PKE

Shreyas Joshi (1):
printk: handle blank console arguments passed in.

Sonny Sasaka (1):
Bluetooth: Handle Inquiry Cancel error after Inquiry Complete

Stefan Berger (1):
tpm: ibmvtpm: Wait for buffer to be set before proceeding

Stephen Kitt (1):
clk/ti/adpll: allocate room for terminating null

Steve Grubb (1):
audit: CONFIG_CHANGE don't log internal bookkeeping as an event

Steve Rutherford (1):
KVM: Remove CREATE_IRQCHIP/SET_PIT2 race

Steven Price (1):
mm: pagewalk: fix termination condition in walk_pte_range()

Stuart Hayes (1):
PCI: pciehp: Fix MSI interrupt race

Sven Eckelmann (1):
batman-adv: Add missing include for in_interrupt()

Sven Schnelle (2):
selftests/ftrace: fix glob selftest
lockdep: fix order in trace_hardirqs_off_caller()

Sylwester Nawrocki (2):
ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811
ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions

Takashi Iwai (3):
ALSA: usb-audio: Don't create a mixer element with bogus volume range
media: go7007: Fix URB type for interrupt handling
ALSA: hda: Fix potential race in unsol event handler

Tang Bin (1):
USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()

Thomas Gleixner (3):
x86/ioapic: Unbreak check_timer()
bpf: Remove recursion prevention from rcu free callback x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline

Thomas Richter (2):
s390/cpum_sf: Use kzalloc and minor changes perf test: Fix test trace+probe_vfs_getname.sh on s390

Tianjia Zhang (1):
clocksource/drivers/h8300_timer8: Fix wrong return value in h8300_8timer_init()

Tom Lendacky (1):
KVM: SVM: Add a dedicated INVD intercept routine

Tom Rix (3):
ieee802154/adf7242: check status of adf7242_read_reg
ALSA: asihpi: fix iounmap in error handler
tracing: fix double free

Tonghao Zhang (2):
net: openvswitch: use u64 for meter bucket
net: openvswitch: use div_u64() for 64-by-32 divisions

Trond Myklebust (2):
nfsd: Don't add locks to closed or closing open stateids
NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests()

Tuong Lien (1):
tipc: fix memory leak in service subscripting

Tzung-Bi Shih (1):
ASoC: max98090: remove msleep in PLL unlocked workaround

Vasily Averin (5):
neigh_stat_seq_next() should increase position index rt_cpu_seq_next should increase position index ipv6_route_seq_next should increase position index mm/swapfile.c: swap_next should increase position index
selinux: sel_avc_get_stat_idx should increase position index

Vignesh Raghavendra (2):
serial: 8250_port: Don't service RX FIFO if throttled
serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout

Vincent Whitchurch (1):
ARM: 8948/1: Prevent OOB access in stacktrace

Wei Li (1):

      MIPS: Add the missing 'CPU_1074K' into __get_cpu_type()

Wei Yongjun (2):
sparc64: vcc: Fix error return code in vcc_probe()
scsi: cxlflash: Fix error return code in cxlflash_probe()

Wen Gong (1):
ath10k: use kzalloc to read for ath10k_sdio_hif_diag_read

Wen Yang (2):
drm/omap: fix possible object reference leak
timekeeping: Prevent 32bit truncation in scale64_check_overflow()

Will Deacon (1):
arm64: cpufeature: Relax checks for AArch32 support at EL[0-2]

Xianting Tian (1):
mm/filemap.c: clear page error before actual read

Xie XiuQi (1):
perf util: Fix memory leak of prefix_if_not_in

Yonghong Song (1):
bpf: Fix a rcu warning for bpffs map pretty-print

Yu Chen (1):
usb: dwc3: Increase timeout for CmdAct cleared by device controller

Zeng Tao (1):
vfio/pci: fix racy on error and request eventfd ctx

Zenghui Yu (1):
KVM: arm64: vgic-its: Fix memory leak on the error path of vgic_add_lpi()

Zhang Xiaoxu (1):
cifs: Fix double add page to memcg when cifs_readpages

Zhu Yanjun (1):
RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices

Zhuang Yanying (1):
KVM: fix overflow of zero page refcount with ksm running

peter chang (1):

      scsi: pm80xx: Cleanup command when a reset times out

zhengbin (1):
media: mc-device.c: fix memleak in media_device_register_entity

author maintainer
#1 lore raw
Documentation/devicetree/bindings/sound/wm8994.txt +12 -6
index 68cccc4653ba..367b58ce1bb9 100644
@@ -14,9 +14,15 @@ Required properties:
   - #gpio-cells : Must be 2. The first cell is the pin number and the
     second cell is used to specify optional parameters (currently unused).
 
-  - AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply, CPVDD-supply,
-    SPKVDD1-supply, SPKVDD2-supply : power supplies for the device, as covered
-    in Documentation/devicetree/bindings/regulator/regulator.txt
+  - power supplies for the device, as covered in
+    Documentation/devicetree/bindings/regulator/regulator.txt, depending
+    on compatible:
+    - for wlf,wm1811 and wlf,wm8958:
+      AVDD1-supply, AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply,
+      DCVDD-supply, CPVDD-supply, SPKVDD1-supply, SPKVDD2-supply
+    - for wlf,wm8994:
+      AVDD1-supply, AVDD2-supply, DBVDD-supply, DCVDD-supply, CPVDD-supply,
+      SPKVDD1-supply, SPKVDD2-supply
 
 Optional properties:
 
@@ -73,11 +79,11 @@ wm8994: codec@1a {
 
 	lineout1-se;
 
+	AVDD1-supply = <&regulator>;
 	AVDD2-supply = <&regulator>;
 	CPVDD-supply = <&regulator>;
-	DBVDD1-supply = <&regulator>;
-	DBVDD2-supply = <&regulator>;
-	DBVDD3-supply = <&regulator>;
+	DBVDD-supply = <&regulator>;
+	DCVDD-supply = <&regulator>;
 	SPKVDD1-supply = <&regulator>;
 	SPKVDD2-supply = <&regulator>;
 };
Documentation/driver-api/libata.rst +1 -1
index 70e180e6b93d..9f3e5dc31184 100644
@@ -250,7 +250,7 @@ High-level taskfile hooks
 
 ::
 
-    void (*qc_prep) (struct ata_queued_cmd *qc);
+    enum ata_completion_errors (*qc_prep) (struct ata_queued_cmd *qc);
     int (*qc_issue) (struct ata_queued_cmd *qc);
 
 
Makefile +1 -1
index 3ffd5b03e6dd..3ff5cf33ef55 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 4
 PATCHLEVEL = 19
-SUBLEVEL = 148
+SUBLEVEL = 149
 EXTRAVERSION =
 NAME = "People's Front"
 
arch/arm/include/asm/kvm_emulate.h +8 -3
index 7d2ca035d6c8..11d4ff9f3e4d 100644
@@ -216,7 +216,7 @@ static inline int kvm_vcpu_dabt_get_rd(struct kvm_vcpu *vcpu)
 	return (kvm_vcpu_get_hsr(vcpu) & HSR_SRT_MASK) >> HSR_SRT_SHIFT;
 }
 
-static inline bool kvm_vcpu_dabt_iss1tw(struct kvm_vcpu *vcpu)
+static inline bool kvm_vcpu_abt_iss1tw(const struct kvm_vcpu *vcpu)
 {
 	return kvm_vcpu_get_hsr(vcpu) & HSR_DABT_S1PTW;
 }
@@ -248,16 +248,21 @@ static inline bool kvm_vcpu_trap_il_is32bit(struct kvm_vcpu *vcpu)
 	return kvm_vcpu_get_hsr(vcpu) & HSR_IL;
 }
 
-static inline u8 kvm_vcpu_trap_get_class(struct kvm_vcpu *vcpu)
+static inline u8 kvm_vcpu_trap_get_class(const struct kvm_vcpu *vcpu)
 {
 	return kvm_vcpu_get_hsr(vcpu) >> HSR_EC_SHIFT;
 }
 
-static inline bool kvm_vcpu_trap_is_iabt(struct kvm_vcpu *vcpu)
+static inline bool kvm_vcpu_trap_is_iabt(const struct kvm_vcpu *vcpu)
 {
 	return kvm_vcpu_trap_get_class(vcpu) == HSR_EC_IABT;
 }
 
+static inline bool kvm_vcpu_trap_is_exec_fault(const struct kvm_vcpu *vcpu)
+{
+	return kvm_vcpu_trap_is_iabt(vcpu) && !kvm_vcpu_abt_iss1tw(vcpu);
+}
+
 static inline u8 kvm_vcpu_trap_get_fault(struct kvm_vcpu *vcpu)
 {
 	return kvm_vcpu_get_hsr(vcpu) & HSR_FSC;
arch/arm/kernel/stacktrace.c +2 -0
index a4d4a28fe07d..d23ab9ec130a 100644
@@ -115,6 +115,8 @@ static int save_trace(struct stackframe *frame, void *d)
 		return 0;
 
 	regs = (struct pt_regs *)frame->sp;
+	if ((unsigned long)&regs[1] > ALIGN(frame->sp, THREAD_SIZE))
+		return 0;
 
 	trace->entries[trace->nr_entries++] = regs->ARM_pc;
 
arch/arm/kernel/traps.c +4 -2
index badf02ca3693..aec533168f04 100644
@@ -67,14 +67,16 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long);
 
 void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame)
 {
+	unsigned long end = frame + 4 + sizeof(struct pt_regs);
+
 #ifdef CONFIG_KALLSYMS
 	printk("[<%08lx>] (%ps) from [<%08lx>] (%pS)\n", where, (void *)where, from, (void *)from);
 #else
 	printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from);
 #endif
 
-	if (in_entry_text(from))
-		dump_mem("", "Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs));
+	if (in_entry_text(from) && end <= ALIGN(frame, THREAD_SIZE))
+		dump_mem("", "Exception stack", frame + 4, end);
 }
 
 void dump_backtrace_stm(u32 *stack, u32 instruction)
arch/arm64/include/asm/kvm_emulate.h +7 -2
index 778cb4f868d9..669c960dd069 100644
@@ -303,7 +303,7 @@ static inline int kvm_vcpu_dabt_get_rd(const struct kvm_vcpu *vcpu)
 	return (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_SRT_MASK) >> ESR_ELx_SRT_SHIFT;
 }
 
-static inline bool kvm_vcpu_dabt_iss1tw(const struct kvm_vcpu *vcpu)
+static inline bool kvm_vcpu_abt_iss1tw(const struct kvm_vcpu *vcpu)
 {
 	return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_S1PTW);
 }
@@ -311,7 +311,7 @@ static inline bool kvm_vcpu_dabt_iss1tw(const struct kvm_vcpu *vcpu)
 static inline bool kvm_vcpu_dabt_iswrite(const struct kvm_vcpu *vcpu)
 {
 	return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WNR) ||
-		kvm_vcpu_dabt_iss1tw(vcpu); /* AF/DBM update */
+		kvm_vcpu_abt_iss1tw(vcpu); /* AF/DBM update */
 }
 
 static inline bool kvm_vcpu_dabt_is_cm(const struct kvm_vcpu *vcpu)
@@ -340,6 +340,11 @@ static inline bool kvm_vcpu_trap_is_iabt(const struct kvm_vcpu *vcpu)
 	return kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_IABT_LOW;
 }
 
+static inline bool kvm_vcpu_trap_is_exec_fault(const struct kvm_vcpu *vcpu)
+{
+	return kvm_vcpu_trap_is_iabt(vcpu) && !kvm_vcpu_abt_iss1tw(vcpu);
+}
+
 static inline u8 kvm_vcpu_trap_get_fault(const struct kvm_vcpu *vcpu)
 {
 	return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC;
arch/arm64/kernel/cpufeature.c +4 -8
index ac3126aba036..de6fa9b4abfa 100644
@@ -155,11 +155,10 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr0[] = {
 	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_GIC_SHIFT, 4, 0),
 	S_ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_ASIMD_SHIFT, 4, ID_AA64PFR0_ASIMD_NI),
 	S_ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_FP_SHIFT, 4, ID_AA64PFR0_FP_NI),
-	/* Linux doesn't care about the EL3 */
 	ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL3_SHIFT, 4, 0),
-	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL2_SHIFT, 4, 0),
-	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL1_SHIFT, 4, ID_AA64PFR0_EL1_64BIT_ONLY),
-	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL0_SHIFT, 4, ID_AA64PFR0_EL0_64BIT_ONLY),
+	ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL2_SHIFT, 4, 0),
+	ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL1_SHIFT, 4, ID_AA64PFR0_EL1_64BIT_ONLY),
+	ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_EL0_SHIFT, 4, ID_AA64PFR0_EL0_64BIT_ONLY),
 	ARM64_FTR_END,
 };
 
@@ -301,7 +300,7 @@ static const struct arm64_ftr_bits ftr_id_pfr0[] = {
 };
 
 static const struct arm64_ftr_bits ftr_id_dfr0[] = {
-	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 28, 4, 0),
+	/* [31:28] TraceFilt */
 	S_ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 24, 4, 0xf),	/* PerfMon */
 	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 20, 4, 0),
 	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 16, 4, 0),
@@ -671,9 +670,6 @@ void update_cpu_features(int cpu,
 	taint |= check_update_ftr_reg(SYS_ID_AA64MMFR2_EL1, cpu,
 				      info->reg_id_aa64mmfr2, boot->reg_id_aa64mmfr2);
 
-	/*
-	 * EL3 is not our concern.
-	 */
 	taint |= check_update_ftr_reg(SYS_ID_AA64PFR0_EL1, cpu,
 				      info->reg_id_aa64pfr0, boot->reg_id_aa64pfr0);
 	taint |= check_update_ftr_reg(SYS_ID_AA64PFR1_EL1, cpu,
arch/arm64/kvm/hyp/switch.c +1 -1
index f146bff53edf..15312e429b7d 100644
@@ -430,7 +430,7 @@ static bool __hyp_text fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
 			kvm_vcpu_trap_get_fault_type(vcpu) == FSC_FAULT &&
 			kvm_vcpu_dabt_isvalid(vcpu) &&
 			!kvm_vcpu_dabt_isextabt(vcpu) &&
-			!kvm_vcpu_dabt_iss1tw(vcpu);
+			!kvm_vcpu_abt_iss1tw(vcpu);
 
 		if (valid) {
 			int ret = __vgic_v2_perform_cpuif_access(vcpu);
arch/m68k/q40/config.c +1 -0
index 96810d91da2b..4a25ce6a1823 100644
@@ -273,6 +273,7 @@ static int q40_get_rtc_pll(struct rtc_pll_info *pll)
 {
 	int tmp = Q40_RTC_CTRL;
 
+	pll->pll_ctrl = 0;
 	pll->pll_value = tmp & Q40_RTC_PLL_MASK;
 	if (tmp & Q40_RTC_PLL_SIGN)
 		pll->pll_value = -pll->pll_value;
arch/mips/include/asm/cpu-type.h +1 -0
index a45af3de075d..d43e4ab20b23 100644
@@ -47,6 +47,7 @@ static inline int __pure __get_cpu_type(const int cpu_type)
 	case CPU_34K:
 	case CPU_1004K:
 	case CPU_74K:
+	case CPU_1074K:
 	case CPU_M14KC:
 	case CPU_M14KEC:
 	case CPU_INTERAPTIV:
arch/powerpc/include/asm/kvm_asm.h +3 -0
index a790d5cf6ea3..684e8ae00d16 100644
@@ -163,4 +163,7 @@
 
 #define KVM_INST_FETCH_FAILED	-1
 
+/* Extract PO and XOP opcode fields */
+#define PO_XOP_OPCODE_MASK 0xfc0007fe
+
 #endif /* __POWERPC_KVM_ASM_H__ */
arch/powerpc/kernel/eeh.c +1 -1
index fe3c6f3bd3b6..d123cba0992d 100644
@@ -502,7 +502,7 @@ int eeh_dev_check_failure(struct eeh_dev *edev)
 	rc = 1;
 	if (pe->state & EEH_PE_ISOLATED) {
 		pe->check_count++;
-		if (pe->check_count % EEH_MAX_FAILS == 0) {
+		if (pe->check_count == EEH_MAX_FAILS) {
 			dn = pci_device_to_OF_node(dev);
 			if (dn)
 				location = of_get_property(dn, "ibm,loc-code",
arch/powerpc/kernel/traps.c +3 -3
index d5f351f02c15..7781f0168ce8 100644
@@ -430,11 +430,11 @@ void system_reset_exception(struct pt_regs *regs)
 #ifdef CONFIG_PPC_BOOK3S_64
 	BUG_ON(get_paca()->in_nmi == 0);
 	if (get_paca()->in_nmi > 1)
-		nmi_panic(regs, "Unrecoverable nested System Reset");
+		die("Unrecoverable nested System Reset", regs, SIGABRT);
 #endif
 	/* Must die if the interrupt is not recoverable */
 	if (!(regs->msr & MSR_RI))
-		nmi_panic(regs, "Unrecoverable System Reset");
+		die("Unrecoverable System Reset", regs, SIGABRT);
 
 	if (!nested)
 		nmi_exit();
@@ -775,7 +775,7 @@ void machine_check_exception(struct pt_regs *regs)
 
 	/* Must die if the interrupt is not recoverable */
 	if (!(regs->msr & MSR_RI))
-		nmi_panic(regs, "Unrecoverable Machine check");
+		die("Unrecoverable Machine check", regs, SIGBUS);
 
 	return;
 
arch/powerpc/kvm/book3s_hv_tm.c +23 -5
index 31cd0f327c8a..e7fd60cf9780 100644
@@ -6,6 +6,8 @@
  * published by the Free Software Foundation.
  */
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/kvm_host.h>
 
 #include <asm/kvm_ppc.h>
@@ -47,7 +49,18 @@ int kvmhv_p9_tm_emulation(struct kvm_vcpu *vcpu)
 	u64 newmsr, bescr;
 	int ra, rs;
 
-	switch (instr & 0xfc0007ff) {
+	/*
+	 * rfid, rfebb, and mtmsrd encode bit 31 = 0 since it's a reserved bit
+	 * in these instructions, so masking bit 31 out doesn't change these
+	 * instructions. For treclaim., tsr., and trechkpt. instructions if bit
+	 * 31 = 0 then they are per ISA invalid forms, however P9 UM, in section
+	 * 4.6.10 Book II Invalid Forms, informs specifically that ignoring bit
+	 * 31 is an acceptable way to handle these invalid forms that have
+	 * bit 31 = 0. Moreover, for emulation purposes both forms (w/ and wo/
+	 * bit 31 set) can generate a softpatch interrupt. Hence both forms
+	 * are handled below for these instructions so they behave the same way.
+	 */
+	switch (instr & PO_XOP_OPCODE_MASK) {
 	case PPC_INST_RFID:
 		/* XXX do we need to check for PR=0 here? */
 		newmsr = vcpu->arch.shregs.srr1;
@@ -108,7 +121,8 @@ int kvmhv_p9_tm_emulation(struct kvm_vcpu *vcpu)
 		vcpu->arch.shregs.msr = newmsr;
 		return RESUME_GUEST;
 
-	case PPC_INST_TSR:
+	/* ignore bit 31, see comment above */
+	case (PPC_INST_TSR & PO_XOP_OPCODE_MASK):
 		/* check for PR=1 and arch 2.06 bit set in PCR */
 		if ((msr & MSR_PR) && (vcpu->arch.vcore->pcr & PCR_ARCH_206)) {
 			/* generate an illegal instruction interrupt */
@@ -143,7 +157,8 @@ int kvmhv_p9_tm_emulation(struct kvm_vcpu *vcpu)
 		vcpu->arch.shregs.msr = msr;
 		return RESUME_GUEST;
 
-	case PPC_INST_TRECLAIM:
+	/* ignore bit 31, see comment above */
+	case (PPC_INST_TRECLAIM & PO_XOP_OPCODE_MASK):
 		/* check for TM disabled in the HFSCR or MSR */
 		if (!(vcpu->arch.hfscr & HFSCR_TM)) {
 			/* generate an illegal instruction interrupt */
@@ -179,7 +194,8 @@ int kvmhv_p9_tm_emulation(struct kvm_vcpu *vcpu)
 		vcpu->arch.shregs.msr &= ~MSR_TS_MASK;
 		return RESUME_GUEST;
 
-	case PPC_INST_TRECHKPT:
+	/* ignore bit 31, see comment above */
+	case (PPC_INST_TRECHKPT & PO_XOP_OPCODE_MASK):
 		/* XXX do we need to check for PR=0 here? */
 		/* check for TM disabled in the HFSCR or MSR */
 		if (!(vcpu->arch.hfscr & HFSCR_TM)) {
@@ -211,6 +227,8 @@ int kvmhv_p9_tm_emulation(struct kvm_vcpu *vcpu)
 	}
 
 	/* What should we do here? We didn't recognize the instruction */
-	WARN_ON_ONCE(1);
+	kvmppc_core_queue_program(vcpu, SRR1_PROGILL);
+	pr_warn_ratelimited("Unrecognized TM-related instruction %#x for emulation", instr);
+
 	return RESUME_GUEST;
 }
arch/powerpc/kvm/book3s_hv_tm_builtin.c +14 -2
index 3cf5863bc06e..3c7ca2fa1959 100644
@@ -26,7 +26,18 @@ int kvmhv_p9_tm_emulation_early(struct kvm_vcpu *vcpu)
 	u64 newmsr, msr, bescr;
 	int rs;
 
-	switch (instr & 0xfc0007ff) {
+	/*
+	 * rfid, rfebb, and mtmsrd encode bit 31 = 0 since it's a reserved bit
+	 * in these instructions, so masking bit 31 out doesn't change these
+	 * instructions. For the tsr. instruction if bit 31 = 0 then it is per
+	 * ISA an invalid form, however P9 UM, in section 4.6.10 Book II Invalid
+	 * Forms, informs specifically that ignoring bit 31 is an acceptable way
+	 * to handle TM-related invalid forms that have bit 31 = 0. Moreover,
+	 * for emulation purposes both forms (w/ and wo/ bit 31 set) can
+	 * generate a softpatch interrupt. Hence both forms are handled below
+	 * for tsr. to make them behave the same way.
+	 */
+	switch (instr & PO_XOP_OPCODE_MASK) {
 	case PPC_INST_RFID:
 		/* XXX do we need to check for PR=0 here? */
 		newmsr = vcpu->arch.shregs.srr1;
@@ -76,7 +87,8 @@ int kvmhv_p9_tm_emulation_early(struct kvm_vcpu *vcpu)
 		vcpu->arch.shregs.msr = newmsr;
 		return 1;
 
-	case PPC_INST_TSR:
+	/* ignore bit 31, see comment above */
+	case (PPC_INST_TSR & PO_XOP_OPCODE_MASK):
 		/* we know the MSR has the TS field = S (0b01) here */
 		msr = vcpu->arch.shregs.msr;
 		/* check for PR=1 and arch 2.06 bit set in PCR */
arch/riscv/include/asm/ftrace.h +7 -0
index c6dcc5291f97..02fbc175142e 100644
@@ -63,4 +63,11 @@ do {									\
  * Let auipc+jalr be the basic *mcount unit*, so we make it 8 bytes here.
  */
 #define MCOUNT_INSN_SIZE 8
+
+#ifndef __ASSEMBLY__
+struct dyn_ftrace;
+int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec);
+#define ftrace_init_nop ftrace_init_nop
+#endif
+
 #endif
arch/riscv/kernel/ftrace.c +19 -0
index 6d39f64e4dce..fa8530f05ed4 100644
@@ -88,6 +88,25 @@ int ftrace_make_nop(struct module *mod, struct dyn_ftrace *rec,
 	return __ftrace_modify_call(rec->ip, addr, false);
 }
 
+
+/*
+ * This is called early on, and isn't wrapped by
+ * ftrace_arch_code_modify_{prepare,post_process}() and therefor doesn't hold
+ * text_mutex, which triggers a lockdep failure.  SMP isn't running so we could
+ * just directly poke the text, but it's simpler to just take the lock
+ * ourselves.
+ */
+int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
+{
+	int out;
+
+	ftrace_arch_code_modify_prepare();
+	out = ftrace_make_nop(mod, rec, MCOUNT_ADDR);
+	ftrace_arch_code_modify_post_process();
+
+	return out;
+}
+
 int ftrace_update_ftrace_func(ftrace_func_t func)
 {
 	int ret = __ftrace_modify_call((unsigned long)&ftrace_call,
arch/s390/kernel/perf_cpum_sf.c +4 -5
index 74a296cea21c..0e6d01225a67 100644
@@ -1377,8 +1377,8 @@ static int aux_output_begin(struct perf_output_handle *handle,
 		idx = aux->empty_mark + 1;
 		for (i = 0; i < range_scan; i++, idx++) {
 			te = aux_sdb_trailer(aux, idx);
-			te->flags = te->flags & ~SDB_TE_BUFFER_FULL_MASK;
-			te->flags = te->flags & ~SDB_TE_ALERT_REQ_MASK;
+			te->flags &= ~(SDB_TE_BUFFER_FULL_MASK |
+				       SDB_TE_ALERT_REQ_MASK);
 			te->overflow = 0;
 		}
 		/* Save the position of empty SDBs */
@@ -1425,8 +1425,7 @@ static bool aux_set_alert(struct aux_buffer *aux, unsigned long alert_index,
 	te = aux_sdb_trailer(aux, alert_index);
 	do {
 		orig_flags = te->flags;
-		orig_overflow = te->overflow;
-		*overflow = orig_overflow;
+		*overflow = orig_overflow = te->overflow;
 		if (orig_flags & SDB_TE_BUFFER_FULL_MASK) {
 			/*
 			 * SDB is already set by hardware.
@@ -1660,7 +1659,7 @@ static void *aux_buffer_setup(struct perf_event *event, void **pages,
 	}
 
 	/* Allocate aux_buffer struct for the event */
-	aux = kmalloc(sizeof(struct aux_buffer), GFP_KERNEL);
+	aux = kzalloc(sizeof(struct aux_buffer), GFP_KERNEL);
 	if (!aux)
 		goto no_aux;
 	sfb = &aux->sfb;
arch/s390/kernel/setup.c +3 -3
index 5f85e0dfa66d..4bda9055daef 100644
@@ -537,7 +537,7 @@ static struct notifier_block kdump_mem_nb = {
 /*
  * Make sure that the area behind memory_end is protected
  */
-static void reserve_memory_end(void)
+static void __init reserve_memory_end(void)
 {
 #ifdef CONFIG_CRASH_DUMP
 	if (ipl_info.type == IPL_TYPE_FCP_DUMP &&
@@ -555,7 +555,7 @@ static void reserve_memory_end(void)
 /*
  * Make sure that oldmem, where the dump is stored, is protected
  */
-static void reserve_oldmem(void)
+static void __init reserve_oldmem(void)
 {
 #ifdef CONFIG_CRASH_DUMP
 	if (OLDMEM_BASE)
@@ -567,7 +567,7 @@ static void reserve_oldmem(void)
 /*
  * Make sure that oldmem, where the dump is stored, is protected
  */
-static void remove_oldmem(void)
+static void __init remove_oldmem(void)
 {
 #ifdef CONFIG_CRASH_DUMP
 	if (OLDMEM_BASE)
arch/x86/include/asm/nospec-branch.h +2 -2
index e3f70c60e8cc..62f9903544b5 100644
@@ -330,7 +330,7 @@ DECLARE_STATIC_KEY_FALSE(mds_idle_clear);
  * combination with microcode which triggers a CPU buffer flush when the
  * instruction is executed.
  */
-static inline void mds_clear_cpu_buffers(void)
+static __always_inline void mds_clear_cpu_buffers(void)
 {
 	static const u16 ds = __KERNEL_DS;
 
@@ -351,7 +351,7 @@ static inline void mds_clear_cpu_buffers(void)
  *
  * Clear CPU buffers if the corresponding static key is enabled
  */
-static inline void mds_user_clear_cpu_buffers(void)
+static __always_inline void mds_user_clear_cpu_buffers(void)
 {
 	if (static_branch_likely(&mds_user_clear))
 		mds_clear_cpu_buffers();
arch/x86/include/asm/pkeys.h +5 -0
index 19b137f1b3be..2ff9b98812b7 100644
@@ -4,6 +4,11 @@
 
 #define ARCH_DEFAULT_PKEY	0
 
+/*
+ * If more than 16 keys are ever supported, a thorough audit
+ * will be necessary to ensure that the types that store key
+ * numbers and masks have sufficient capacity.
+ */
 #define arch_max_pkey() (boot_cpu_has(X86_FEATURE_OSPKE) ? 16 : 1)
 
 extern int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
arch/x86/kernel/apic/io_apic.c +1 -0
index 95e21c438012..15234885e60b 100644
@@ -2250,6 +2250,7 @@ static inline void __init check_timer(void)
 	legacy_pic->init(0);
 	legacy_pic->make_irq(0);
 	apic_write(APIC_LVT0, APIC_DM_EXTINT);
+	legacy_pic->unmask(0);
 
 	unlock_ExtINT_logic();
 
arch/x86/kernel/fpu/xstate.c +7 -2
index 4b900035f220..601a5da1d196 100644
@@ -907,8 +907,6 @@ const void *get_xsave_field_ptr(int xsave_state)
 
 #ifdef CONFIG_ARCH_HAS_PKEYS
 
-#define NR_VALID_PKRU_BITS (CONFIG_NR_PROTECTION_KEYS * 2)
-#define PKRU_VALID_MASK (NR_VALID_PKRU_BITS - 1)
 /*
  * This will go out and modify PKRU register to set the access
  * rights for @pkey to @init_val.
@@ -927,6 +925,13 @@ int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
 	if (!boot_cpu_has(X86_FEATURE_OSPKE))
 		return -EINVAL;
 
+	/*
+	 * This code should only be called with valid 'pkey'
+	 * values originating from in-kernel users.  Complain
+	 * if a bad value is observed.
+	 */
+	WARN_ON_ONCE(pkey >= arch_max_pkey());
+
 	/* Set the bits we need in PKRU:  */
 	if (init_val & PKEY_DISABLE_ACCESS)
 		new_pkru_bits |= PKRU_AD_BIT;
arch/x86/kvm/mmutrace.h +1 -1
index cb41b036eb26..7e0dc8c7da2c 100644
@@ -339,7 +339,7 @@ TRACE_EVENT(
 		/* These depend on page entry type, so compute them now.  */
 		__field(bool, r)
 		__field(bool, x)
-		__field(u8, u)
+		__field(signed char, u)
 	),
 
 	TP_fast_assign(
arch/x86/kvm/svm.c +7 -1
index 2aafb6c79134..cb09a0ec8750 100644
@@ -3942,6 +3942,12 @@ static int iret_interception(struct vcpu_svm *svm)
 	return 1;
 }
 
+static int invd_interception(struct vcpu_svm *svm)
+{
+	/* Treat an INVD instruction as a NOP and just skip it. */
+	return kvm_skip_emulated_instruction(&svm->vcpu);
+}
+
 static int invlpg_interception(struct vcpu_svm *svm)
 {
 	if (!static_cpu_has(X86_FEATURE_DECODEASSISTS))
@@ -4831,7 +4837,7 @@ static int (*const svm_exit_handlers[])(struct vcpu_svm *svm) = {
 	[SVM_EXIT_RDPMC]			= rdpmc_interception,
 	[SVM_EXIT_CPUID]			= cpuid_interception,
 	[SVM_EXIT_IRET]                         = iret_interception,
-	[SVM_EXIT_INVD]                         = emulate_on_interception,
+	[SVM_EXIT_INVD]                         = invd_interception,
 	[SVM_EXIT_PAUSE]			= pause_interception,
 	[SVM_EXIT_HLT]				= halt_interception,
 	[SVM_EXIT_INVLPG]			= invlpg_interception,
arch/x86/kvm/x86.c +10 -3
index 430a4bc66f60..dd182228be71 100644
@@ -858,6 +858,7 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
 	unsigned long old_cr4 = kvm_read_cr4(vcpu);
 	unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE |
 				   X86_CR4_SMEP;
+	unsigned long mmu_role_bits = pdptr_bits | X86_CR4_SMAP | X86_CR4_PKE;
 
 	if (kvm_valid_cr4(vcpu, cr4))
 		return 1;
@@ -885,7 +886,7 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
 	if (kvm_x86_ops->set_cr4(vcpu, cr4))
 		return 1;
 
-	if (((cr4 ^ old_cr4) & pdptr_bits) ||
+	if (((cr4 ^ old_cr4) & mmu_role_bits) ||
 	    (!(cr4 & X86_CR4_PCIDE) && (old_cr4 & X86_CR4_PCIDE)))
 		kvm_mmu_reset_context(vcpu);
 
@@ -4668,10 +4669,13 @@ long kvm_arch_vm_ioctl(struct file *filp,
 		r = -EFAULT;
 		if (copy_from_user(&u.ps, argp, sizeof u.ps))
 			goto out;
+		mutex_lock(&kvm->lock);
 		r = -ENXIO;
 		if (!kvm->arch.vpit)
-			goto out;
+			goto set_pit_out;
 		r = kvm_vm_ioctl_set_pit(kvm, &u.ps);
+set_pit_out:
+		mutex_unlock(&kvm->lock);
 		break;
 	}
 	case KVM_GET_PIT2: {
@@ -4691,10 +4695,13 @@ long kvm_arch_vm_ioctl(struct file *filp,
 		r = -EFAULT;
 		if (copy_from_user(&u.ps2, argp, sizeof(u.ps2)))
 			goto out;
+		mutex_lock(&kvm->lock);
 		r = -ENXIO;
 		if (!kvm->arch.vpit)
-			goto out;
+			goto set_pit2_out;
 		r = kvm_vm_ioctl_set_pit2(kvm, &u.ps2);
+set_pit2_out:
+		mutex_unlock(&kvm->lock);
 		break;
 	}
 	case KVM_REINJECT_CONTROL: {
arch/x86/lib/usercopy_64.c +1 -1
index 7077b3e28241..40dbbd8f1fe4 100644
@@ -139,7 +139,7 @@ long __copy_user_flushcache(void *dst, const void __user *src, unsigned size)
 	 */
 	if (size < 8) {
 		if (!IS_ALIGNED(dest, 4) || size != 4)
-			clean_cache_range(dst, 1);
+			clean_cache_range(dst, size);
 	} else {
 		if (!IS_ALIGNED(dest, 8)) {
 			dest = ALIGN(dest, boot_cpu_data.x86_clflush_size);
drivers/acpi/ec.c +4 -12
index 49e16f009095..9415a0041aaf 100644
@@ -1080,29 +1080,21 @@ void acpi_ec_dispatch_gpe(void)
 /* --------------------------------------------------------------------------
                                 Event Management
    -------------------------------------------------------------------------- */
-static struct acpi_ec_query_handler *
-acpi_ec_get_query_handler(struct acpi_ec_query_handler *handler)
-{
-	if (handler)
-		kref_get(&handler->kref);
-	return handler;
-}
-
 static struct acpi_ec_query_handler *
 acpi_ec_get_query_handler_by_value(struct acpi_ec *ec, u8 value)
 {
 	struct acpi_ec_query_handler *handler;
-	bool found = false;
 
 	mutex_lock(&ec->mutex);
 	list_for_each_entry(handler, &ec->list, node) {
 		if (value == handler->query_bit) {
-			found = true;
-			break;
+			kref_get(&handler->kref);
+			mutex_unlock(&ec->mutex);
+			return handler;
 		}
 	}
 	mutex_unlock(&ec->mutex);
-	return found ? acpi_ec_get_query_handler(handler) : NULL;
+	return NULL;
 }
 
 static void acpi_ec_query_handler_release(struct kref *kref)
drivers/ata/acard-ahci.c +4 -2
index 583e366be7e2..505f8c316818 100644
@@ -72,7 +72,7 @@ struct acard_sg {
 	__le32			size;	 /* bit 31 (EOT) max==0x10000 (64k) */
 };
 
-static void acard_ahci_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors acard_ahci_qc_prep(struct ata_queued_cmd *qc);
 static bool acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc);
 static int acard_ahci_port_start(struct ata_port *ap);
 static int acard_ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
@@ -257,7 +257,7 @@ static unsigned int acard_ahci_fill_sg(struct ata_queued_cmd *qc, void *cmd_tbl)
 	return si;
 }
 
-static void acard_ahci_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors acard_ahci_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct ahci_port_priv *pp = ap->private_data;
@@ -295,6 +295,8 @@ static void acard_ahci_qc_prep(struct ata_queued_cmd *qc)
 		opts |= AHCI_CMD_ATAPI | AHCI_CMD_PREFETCH;
 
 	ahci_fill_cmd_slot(pp, qc->hw_tag, opts);
+
+	return AC_ERR_OK;
 }
 
 static bool acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc)
drivers/ata/libahci.c +4 -2
index 2bdb250a2142..f1153e7ba3b3 100644
@@ -73,7 +73,7 @@ static int ahci_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
 static bool ahci_qc_fill_rtf(struct ata_queued_cmd *qc);
 static int ahci_port_start(struct ata_port *ap);
 static void ahci_port_stop(struct ata_port *ap);
-static void ahci_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors ahci_qc_prep(struct ata_queued_cmd *qc);
 static int ahci_pmp_qc_defer(struct ata_queued_cmd *qc);
 static void ahci_freeze(struct ata_port *ap);
 static void ahci_thaw(struct ata_port *ap);
@@ -1640,7 +1640,7 @@ static int ahci_pmp_qc_defer(struct ata_queued_cmd *qc)
 		return sata_pmp_qc_defer_cmd_switch(qc);
 }
 
-static void ahci_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors ahci_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct ahci_port_priv *pp = ap->private_data;
@@ -1676,6 +1676,8 @@ static void ahci_qc_prep(struct ata_queued_cmd *qc)
 		opts |= AHCI_CMD_ATAPI | AHCI_CMD_PREFETCH;
 
 	ahci_fill_cmd_slot(pp, qc->hw_tag, opts);
+
+	return AC_ERR_OK;
 }
 
 static void ahci_fbs_dec_intr(struct ata_port *ap)
drivers/ata/libata-core.c +7 -2
index fead7243930c..db1d86af21b4 100644
@@ -4996,7 +4996,10 @@ int ata_std_qc_defer(struct ata_queued_cmd *qc)
 	return ATA_DEFER_LINK;
 }
 
-void ata_noop_qc_prep(struct ata_queued_cmd *qc) { }
+enum ata_completion_errors ata_noop_qc_prep(struct ata_queued_cmd *qc)
+{
+	return AC_ERR_OK;
+}
 
 /**
  *	ata_sg_init - Associate command with scatter-gather table.
@@ -5483,7 +5486,9 @@ void ata_qc_issue(struct ata_queued_cmd *qc)
 		return;
 	}
 
-	ap->ops->qc_prep(qc);
+	qc->err_mask |= ap->ops->qc_prep(qc);
+	if (unlikely(qc->err_mask))
+		goto err;
 	trace_ata_qc_issue(qc);
 	qc->err_mask |= ap->ops->qc_issue(qc);
 	if (unlikely(qc->err_mask))
drivers/ata/libata-sff.c +8 -4
index 873cc0906055..7484ffdabd54 100644
@@ -2695,12 +2695,14 @@ static void ata_bmdma_fill_sg_dumb(struct ata_queued_cmd *qc)
  *	LOCKING:
  *	spin_lock_irqsave(host lock)
  */
-void ata_bmdma_qc_prep(struct ata_queued_cmd *qc)
+enum ata_completion_errors ata_bmdma_qc_prep(struct ata_queued_cmd *qc)
 {
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	ata_bmdma_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 EXPORT_SYMBOL_GPL(ata_bmdma_qc_prep);
 
@@ -2713,12 +2715,14 @@ EXPORT_SYMBOL_GPL(ata_bmdma_qc_prep);
  *	LOCKING:
  *	spin_lock_irqsave(host lock)
  */
-void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc)
+enum ata_completion_errors ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc)
 {
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	ata_bmdma_fill_sg_dumb(qc);
+
+	return AC_ERR_OK;
 }
 EXPORT_SYMBOL_GPL(ata_bmdma_dumb_qc_prep);
 
drivers/ata/pata_macio.c +4 -2
index 9588e685d994..765b99319d3c 100644
@@ -507,7 +507,7 @@ static int pata_macio_cable_detect(struct ata_port *ap)
 	return ATA_CBL_PATA40;
 }
 
-static void pata_macio_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors pata_macio_qc_prep(struct ata_queued_cmd *qc)
 {
 	unsigned int write = (qc->tf.flags & ATA_TFLAG_WRITE);
 	struct ata_port *ap = qc->ap;
@@ -520,7 +520,7 @@ static void pata_macio_qc_prep(struct ata_queued_cmd *qc)
 		   __func__, qc, qc->flags, write, qc->dev->devno);
 
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	table = (struct dbdma_cmd *) priv->dma_table_cpu;
 
@@ -565,6 +565,8 @@ static void pata_macio_qc_prep(struct ata_queued_cmd *qc)
 	table->command = cpu_to_le16(DBDMA_STOP);
 
 	dev_dbgdma(priv->dev, "%s: %d DMA list entries\n", __func__, pi);
+
+	return AC_ERR_OK;
 }
 
 
drivers/ata/pata_pxa.c +5 -3
index e8b6a2e464c9..5b1458ca986b 100644
@@ -58,25 +58,27 @@ static void pxa_ata_dma_irq(void *d)
 /*
  * Prepare taskfile for submission.
  */
-static void pxa_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors pxa_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct pata_pxa_data *pd = qc->ap->private_data;
 	struct dma_async_tx_descriptor *tx;
 	enum dma_transfer_direction dir;
 
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	dir = (qc->dma_dir == DMA_TO_DEVICE ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM);
 	tx = dmaengine_prep_slave_sg(pd->dma_chan, qc->sg, qc->n_elem, dir,
 				     DMA_PREP_INTERRUPT);
 	if (!tx) {
 		ata_dev_err(qc->dev, "prep_slave_sg() failed\n");
-		return;
+		return AC_ERR_OK;
 	}
 	tx->callback = pxa_ata_dma_irq;
 	tx->callback_param = pd;
 	pd->dma_cookie = dmaengine_submit(tx);
+
+	return AC_ERR_OK;
 }
 
 /*
drivers/ata/pdc_adma.c +4 -3
index f1e873a37465..096b4771b19d 100644
@@ -132,7 +132,7 @@ static int adma_ata_init_one(struct pci_dev *pdev,
 				const struct pci_device_id *ent);
 static int adma_port_start(struct ata_port *ap);
 static void adma_port_stop(struct ata_port *ap);
-static void adma_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors adma_qc_prep(struct ata_queued_cmd *qc);
 static unsigned int adma_qc_issue(struct ata_queued_cmd *qc);
 static int adma_check_atapi_dma(struct ata_queued_cmd *qc);
 static void adma_freeze(struct ata_port *ap);
@@ -311,7 +311,7 @@ static int adma_fill_sg(struct ata_queued_cmd *qc)
 	return i;
 }
 
-static void adma_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors adma_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct adma_port_priv *pp = qc->ap->private_data;
 	u8  *buf = pp->pkt;
@@ -322,7 +322,7 @@ static void adma_qc_prep(struct ata_queued_cmd *qc)
 
 	adma_enter_reg_mode(qc->ap);
 	if (qc->tf.protocol != ATA_PROT_DMA)
-		return;
+		return AC_ERR_OK;
 
 	buf[i++] = 0;	/* Response flags */
 	buf[i++] = 0;	/* reserved */
@@ -387,6 +387,7 @@ static void adma_qc_prep(struct ata_queued_cmd *qc)
 			printk("%s\n", obuf);
 	}
 #endif
+	return AC_ERR_OK;
 }
 
 static inline void adma_packet_start(struct ata_queued_cmd *qc)
drivers/ata/sata_fsl.c +3 -1
index ae52a45fab5f..8b3be0ff91cb 100644
@@ -507,7 +507,7 @@ static unsigned int sata_fsl_fill_sg(struct ata_queued_cmd *qc, void *cmd_desc,
 	return num_prde;
 }
 
-static void sata_fsl_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors sata_fsl_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct sata_fsl_port_priv *pp = ap->private_data;
@@ -553,6 +553,8 @@ static void sata_fsl_qc_prep(struct ata_queued_cmd *qc)
 
 	VPRINTK("SATA FSL : xx_qc_prep, di = 0x%x, ttl = %d, num_prde = %d\n",
 		desc_info, ttl_dwords, num_prde);
+
+	return AC_ERR_OK;
 }
 
 static unsigned int sata_fsl_qc_issue(struct ata_queued_cmd *qc)
drivers/ata/sata_inic162x.c +3 -1
index 9b6d7930d1c7..6c7ddc037fce 100644
@@ -472,7 +472,7 @@ static void inic_fill_sg(struct inic_prd *prd, struct ata_queued_cmd *qc)
 	prd[-1].flags |= PRD_END;
 }
 
-static void inic_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors inic_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct inic_port_priv *pp = qc->ap->private_data;
 	struct inic_pkt *pkt = pp->pkt;
@@ -532,6 +532,8 @@ static void inic_qc_prep(struct ata_queued_cmd *qc)
 		inic_fill_sg(prd, qc);
 
 	pp->cpb_tbl[0] = pp->pkt_dma;
+
+	return AC_ERR_OK;
 }
 
 static unsigned int inic_qc_issue(struct ata_queued_cmd *qc)
drivers/ata/sata_mv.c +18 -16
index ab2e9f62ddc1..2910b22fac11 100644
@@ -605,8 +605,8 @@ static int mv5_scr_write(struct ata_link *link, unsigned int sc_reg_in, u32 val)
 static int mv_port_start(struct ata_port *ap);
 static void mv_port_stop(struct ata_port *ap);
 static int mv_qc_defer(struct ata_queued_cmd *qc);
-static void mv_qc_prep(struct ata_queued_cmd *qc);
-static void mv_qc_prep_iie(struct ata_queued_cmd *qc);
+static enum ata_completion_errors mv_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors mv_qc_prep_iie(struct ata_queued_cmd *qc);
 static unsigned int mv_qc_issue(struct ata_queued_cmd *qc);
 static int mv_hardreset(struct ata_link *link, unsigned int *class,
 			unsigned long deadline);
@@ -2044,7 +2044,7 @@ static void mv_rw_multi_errata_sata24(struct ata_queued_cmd *qc)
  *      LOCKING:
  *      Inherited from caller.
  */
-static void mv_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors mv_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct mv_port_priv *pp = ap->private_data;
@@ -2056,15 +2056,15 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
 	switch (tf->protocol) {
 	case ATA_PROT_DMA:
 		if (tf->command == ATA_CMD_DSM)
-			return;
+			return AC_ERR_OK;
 		/* fall-thru */
 	case ATA_PROT_NCQ:
 		break;	/* continue below */
 	case ATA_PROT_PIO:
 		mv_rw_multi_errata_sata24(qc);
-		return;
+		return AC_ERR_OK;
 	default:
-		return;
+		return AC_ERR_OK;
 	}
 
 	/* Fill in command request block
@@ -2111,12 +2111,10 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
 		 * non-NCQ mode are: [RW] STREAM DMA and W DMA FUA EXT, none
 		 * of which are defined/used by Linux.  If we get here, this
 		 * driver needs work.
-		 *
-		 * FIXME: modify libata to give qc_prep a return value and
-		 * return error here.
 		 */
-		BUG_ON(tf->command);
-		break;
+		ata_port_err(ap, "%s: unsupported command: %.2x\n", __func__,
+				tf->command);
+		return AC_ERR_INVALID;
 	}
 	mv_crqb_pack_cmd(cw++, tf->nsect, ATA_REG_NSECT, 0);
 	mv_crqb_pack_cmd(cw++, tf->hob_lbal, ATA_REG_LBAL, 0);
@@ -2129,8 +2127,10 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
 	mv_crqb_pack_cmd(cw++, tf->command, ATA_REG_CMD, 1);	/* last */
 
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 	mv_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 
 /**
@@ -2145,7 +2145,7 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
  *      LOCKING:
  *      Inherited from caller.
  */
-static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
+static enum ata_completion_errors mv_qc_prep_iie(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct mv_port_priv *pp = ap->private_data;
@@ -2156,9 +2156,9 @@ static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
 
 	if ((tf->protocol != ATA_PROT_DMA) &&
 	    (tf->protocol != ATA_PROT_NCQ))
-		return;
+		return AC_ERR_OK;
 	if (tf->command == ATA_CMD_DSM)
-		return;  /* use bmdma for this */
+		return AC_ERR_OK;  /* use bmdma for this */
 
 	/* Fill in Gen IIE command request block */
 	if (!(tf->flags & ATA_TFLAG_WRITE))
@@ -2199,8 +2199,10 @@ static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
 		);
 
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 	mv_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 
 /**
drivers/ata/sata_nv.c +11 -7
index 761577d57ff3..798d549435cc 100644
@@ -313,7 +313,7 @@ static void nv_ck804_freeze(struct ata_port *ap);
 static void nv_ck804_thaw(struct ata_port *ap);
 static int nv_adma_slave_config(struct scsi_device *sdev);
 static int nv_adma_check_atapi_dma(struct ata_queued_cmd *qc);
-static void nv_adma_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors nv_adma_qc_prep(struct ata_queued_cmd *qc);
 static unsigned int nv_adma_qc_issue(struct ata_queued_cmd *qc);
 static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance);
 static void nv_adma_irq_clear(struct ata_port *ap);
@@ -335,7 +335,7 @@ static void nv_mcp55_freeze(struct ata_port *ap);
 static void nv_swncq_error_handler(struct ata_port *ap);
 static int nv_swncq_slave_config(struct scsi_device *sdev);
 static int nv_swncq_port_start(struct ata_port *ap);
-static void nv_swncq_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors nv_swncq_qc_prep(struct ata_queued_cmd *qc);
 static void nv_swncq_fill_sg(struct ata_queued_cmd *qc);
 static unsigned int nv_swncq_qc_issue(struct ata_queued_cmd *qc);
 static void nv_swncq_irq_clear(struct ata_port *ap, u16 fis);
@@ -1365,7 +1365,7 @@ static int nv_adma_use_reg_mode(struct ata_queued_cmd *qc)
 	return 1;
 }
 
-static void nv_adma_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors nv_adma_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct nv_adma_port_priv *pp = qc->ap->private_data;
 	struct nv_adma_cpb *cpb = &pp->cpb[qc->hw_tag];
@@ -1377,7 +1377,7 @@ static void nv_adma_qc_prep(struct ata_queued_cmd *qc)
 			(qc->flags & ATA_QCFLAG_DMAMAP));
 		nv_adma_register_mode(qc->ap);
 		ata_bmdma_qc_prep(qc);
-		return;
+		return AC_ERR_OK;
 	}
 
 	cpb->resp_flags = NV_CPB_RESP_DONE;
@@ -1409,6 +1409,8 @@ static void nv_adma_qc_prep(struct ata_queued_cmd *qc)
 	cpb->ctl_flags = ctl_flags;
 	wmb();
 	cpb->resp_flags = 0;
+
+	return AC_ERR_OK;
 }
 
 static unsigned int nv_adma_qc_issue(struct ata_queued_cmd *qc)
@@ -1972,17 +1974,19 @@ static int nv_swncq_port_start(struct ata_port *ap)
 	return 0;
 }
 
-static void nv_swncq_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors nv_swncq_qc_prep(struct ata_queued_cmd *qc)
 {
 	if (qc->tf.protocol != ATA_PROT_NCQ) {
 		ata_bmdma_qc_prep(qc);
-		return;
+		return AC_ERR_OK;
 	}
 
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	nv_swncq_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 
 static void nv_swncq_fill_sg(struct ata_queued_cmd *qc)
drivers/ata/sata_promise.c +4 -2
index d032bf657f70..29d2bb465f60 100644
@@ -155,7 +155,7 @@ static int pdc_sata_scr_write(struct ata_link *link, unsigned int sc_reg, u32 va
 static int pdc_ata_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
 static int pdc_common_port_start(struct ata_port *ap);
 static int pdc_sata_port_start(struct ata_port *ap);
-static void pdc_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors pdc_qc_prep(struct ata_queued_cmd *qc);
 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
 static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
 static int pdc_check_atapi_dma(struct ata_queued_cmd *qc);
@@ -649,7 +649,7 @@ static void pdc_fill_sg(struct ata_queued_cmd *qc)
 	prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
 }
 
-static void pdc_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors pdc_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct pdc_port_priv *pp = qc->ap->private_data;
 	unsigned int i;
@@ -681,6 +681,8 @@ static void pdc_qc_prep(struct ata_queued_cmd *qc)
 	default:
 		break;
 	}
+
+	return AC_ERR_OK;
 }
 
 static int pdc_is_sataii_tx4(unsigned long flags)
drivers/ata/sata_qstor.c +5 -3
index 1fe941688e95..a66d10628c18 100644
@@ -116,7 +116,7 @@ static int qs_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
 static int qs_ata_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
 static int qs_port_start(struct ata_port *ap);
 static void qs_host_stop(struct ata_host *host);
-static void qs_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors qs_qc_prep(struct ata_queued_cmd *qc);
 static unsigned int qs_qc_issue(struct ata_queued_cmd *qc);
 static int qs_check_atapi_dma(struct ata_queued_cmd *qc);
 static void qs_freeze(struct ata_port *ap);
@@ -276,7 +276,7 @@ static unsigned int qs_fill_sg(struct ata_queued_cmd *qc)
 	return si;
 }
 
-static void qs_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors qs_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct qs_port_priv *pp = qc->ap->private_data;
 	u8 dflags = QS_DF_PORD, *buf = pp->pkt;
@@ -288,7 +288,7 @@ static void qs_qc_prep(struct ata_queued_cmd *qc)
 
 	qs_enter_reg_mode(qc->ap);
 	if (qc->tf.protocol != ATA_PROT_DMA)
-		return;
+		return AC_ERR_OK;
 
 	nelem = qs_fill_sg(qc);
 
@@ -311,6 +311,8 @@ static void qs_qc_prep(struct ata_queued_cmd *qc)
 
 	/* frame information structure (FIS) */
 	ata_tf_to_fis(&qc->tf, 0, 1, &buf[32]);
+
+	return AC_ERR_OK;
 }
 
 static inline void qs_packet_start(struct ata_queued_cmd *qc)
drivers/ata/sata_rcar.c +4 -2
index 50ebd779d975..8323f88d17a5 100644
@@ -554,12 +554,14 @@ static void sata_rcar_bmdma_fill_sg(struct ata_queued_cmd *qc)
 	prd[si - 1].addr |= cpu_to_le32(SATA_RCAR_DTEND);
 }
 
-static void sata_rcar_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors sata_rcar_qc_prep(struct ata_queued_cmd *qc)
 {
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	sata_rcar_bmdma_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 
 static void sata_rcar_bmdma_setup(struct ata_queued_cmd *qc)
drivers/ata/sata_sil.c +5 -3
index ed76f070d21e..82adaf02887f 100644
@@ -119,7 +119,7 @@ static void sil_dev_config(struct ata_device *dev);
 static int sil_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val);
 static int sil_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
 static int sil_set_mode(struct ata_link *link, struct ata_device **r_failed);
-static void sil_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors sil_qc_prep(struct ata_queued_cmd *qc);
 static void sil_bmdma_setup(struct ata_queued_cmd *qc);
 static void sil_bmdma_start(struct ata_queued_cmd *qc);
 static void sil_bmdma_stop(struct ata_queued_cmd *qc);
@@ -333,12 +333,14 @@ static void sil_fill_sg(struct ata_queued_cmd *qc)
 		last_prd->flags_len |= cpu_to_le32(ATA_PRD_EOT);
 }
 
-static void sil_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors sil_qc_prep(struct ata_queued_cmd *qc)
 {
 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
-		return;
+		return AC_ERR_OK;
 
 	sil_fill_sg(qc);
+
+	return AC_ERR_OK;
 }
 
 static unsigned char sil_get_device_cache_line(struct pci_dev *pdev)
drivers/ata/sata_sil24.c +4 -2
index 319f517137cd..7a8ca81e52bf 100644
@@ -336,7 +336,7 @@ static void sil24_dev_config(struct ata_device *dev);
 static int sil24_scr_read(struct ata_link *link, unsigned sc_reg, u32 *val);
 static int sil24_scr_write(struct ata_link *link, unsigned sc_reg, u32 val);
 static int sil24_qc_defer(struct ata_queued_cmd *qc);
-static void sil24_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors sil24_qc_prep(struct ata_queued_cmd *qc);
 static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc);
 static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc);
 static void sil24_pmp_attach(struct ata_port *ap);
@@ -840,7 +840,7 @@ static int sil24_qc_defer(struct ata_queued_cmd *qc)
 	return ata_std_qc_defer(qc);
 }
 
-static void sil24_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors sil24_qc_prep(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 	struct sil24_port_priv *pp = ap->private_data;
@@ -884,6 +884,8 @@ static void sil24_qc_prep(struct ata_queued_cmd *qc)
 
 	if (qc->flags & ATA_QCFLAG_DMAMAP)
 		sil24_fill_sg(qc, sge);
+
+	return AC_ERR_OK;
 }
 
 static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc)
drivers/ata/sata_sx4.c +4 -2
index 405e606a234d..0d742457925e 100644
@@ -218,7 +218,7 @@ static void pdc_error_handler(struct ata_port *ap);
 static void pdc_freeze(struct ata_port *ap);
 static void pdc_thaw(struct ata_port *ap);
 static int pdc_port_start(struct ata_port *ap);
-static void pdc20621_qc_prep(struct ata_queued_cmd *qc);
+static enum ata_completion_errors pdc20621_qc_prep(struct ata_queued_cmd *qc);
 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
 static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
 static unsigned int pdc20621_dimm_init(struct ata_host *host);
@@ -546,7 +546,7 @@ static void pdc20621_nodata_prep(struct ata_queued_cmd *qc)
 	VPRINTK("ata pkt buf ofs %u, mmio copied\n", i);
 }
 
-static void pdc20621_qc_prep(struct ata_queued_cmd *qc)
+static enum ata_completion_errors pdc20621_qc_prep(struct ata_queued_cmd *qc)
 {
 	switch (qc->tf.protocol) {
 	case ATA_PROT_DMA:
@@ -558,6 +558,8 @@ static void pdc20621_qc_prep(struct ata_queued_cmd *qc)
 	default:
 		break;
 	}
+
+	return AC_ERR_OK;
 }
 
 static void __pdc20621_push_hdma(struct ata_queued_cmd *qc,
drivers/atm/eni.c +1 -1
index 7323e9210f4b..38fec976e62d 100644
@@ -2243,7 +2243,7 @@ static int eni_init_one(struct pci_dev *pci_dev,
 
 	rc = dma_set_mask_and_coherent(&pci_dev->dev, DMA_BIT_MASK(32));
 	if (rc < 0)
-		goto out;
+		goto err_disable;
 
 	rc = -ENOMEM;
 	eni_dev = kmalloc(sizeof(struct eni_dev), GFP_KERNEL);
drivers/base/regmap/regmap.c +6 -6
index d26b485ccc7d..e8b3353c18eb 100644
@@ -2367,7 +2367,7 @@ int regmap_raw_write_async(struct regmap *map, unsigned int reg,
 EXPORT_SYMBOL_GPL(regmap_raw_write_async);
 
 static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
-			    unsigned int val_len)
+			    unsigned int val_len, bool noinc)
 {
 	struct regmap_range_node *range;
 	int ret;
@@ -2380,7 +2380,7 @@ static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
 	range = _regmap_range_lookup(map, reg);
 	if (range) {
 		ret = _regmap_select_page(map, &reg, range,
-					  val_len / map->format.val_bytes);
+					  noinc ? 1 : val_len / map->format.val_bytes);
 		if (ret != 0)
 			return ret;
 	}
@@ -2418,7 +2418,7 @@ static int _regmap_bus_read(void *context, unsigned int reg,
 	if (!map->format.parse_val)
 		return -EINVAL;
 
-	ret = _regmap_raw_read(map, reg, work_val, map->format.val_bytes);
+	ret = _regmap_raw_read(map, reg, work_val, map->format.val_bytes, false);
 	if (ret == 0)
 		*val = map->format.parse_val(work_val);
 
@@ -2536,7 +2536,7 @@ int regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
 
 		/* Read bytes that fit into whole chunks */
 		for (i = 0; i < chunk_count; i++) {
-			ret = _regmap_raw_read(map, reg, val, chunk_bytes);
+			ret = _regmap_raw_read(map, reg, val, chunk_bytes, false);
 			if (ret != 0)
 				goto out;
 
@@ -2547,7 +2547,7 @@ int regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
 
 		/* Read remaining bytes */
 		if (val_len) {
-			ret = _regmap_raw_read(map, reg, val, val_len);
+			ret = _regmap_raw_read(map, reg, val, val_len, false);
 			if (ret != 0)
 				goto out;
 		}
@@ -2622,7 +2622,7 @@ int regmap_noinc_read(struct regmap *map, unsigned int reg,
 			read_len = map->max_raw_read;
 		else
 			read_len = val_len;
-		ret = _regmap_raw_read(map, reg, val, read_len);
+		ret = _regmap_raw_read(map, reg, val, read_len, true);
 		if (ret)
 			goto out_unlock;
 		val = ((u8 *)val) + read_len;
drivers/bluetooth/btrtl.c +11 -9
index 8d1cd2479e36..cc51395d8b0e 100644
@@ -343,11 +343,11 @@ static int rtlbt_parse_firmware(struct hci_dev *hdev,
 	 * the end.
 	 */
 	len = patch_length;
-	buf = kmemdup(btrtl_dev->fw_data + patch_offset, patch_length,
-		      GFP_KERNEL);
+	buf = kvmalloc(patch_length, GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
 
+	memcpy(buf, btrtl_dev->fw_data + patch_offset, patch_length - 4);
 	memcpy(buf + patch_length - 4, &epatch_info->fw_version, 4);
 
 	*_buf = buf;
@@ -415,8 +415,10 @@ static int rtl_load_file(struct hci_dev *hdev, const char *name, u8 **buff)
 	if (ret < 0)
 		return ret;
 	ret = fw->size;
-	*buff = kmemdup(fw->data, ret, GFP_KERNEL);
-	if (!*buff)
+	*buff = kvmalloc(fw->size, GFP_KERNEL);
+	if (*buff)
+		memcpy(*buff, fw->data, ret);
+	else
 		ret = -ENOMEM;
 
 	release_firmware(fw);
@@ -454,14 +456,14 @@ static int btrtl_setup_rtl8723b(struct hci_dev *hdev,
 		goto out;
 
 	if (btrtl_dev->cfg_len > 0) {
-		tbuff = kzalloc(ret + btrtl_dev->cfg_len, GFP_KERNEL);
+		tbuff = kvzalloc(ret + btrtl_dev->cfg_len, GFP_KERNEL);
 		if (!tbuff) {
 			ret = -ENOMEM;
 			goto out;
 		}
 
 		memcpy(tbuff, fw_data, ret);
-		kfree(fw_data);
+		kvfree(fw_data);
 
 		memcpy(tbuff + ret, btrtl_dev->cfg_data, btrtl_dev->cfg_len);
 		ret += btrtl_dev->cfg_len;
@@ -474,7 +476,7 @@ static int btrtl_setup_rtl8723b(struct hci_dev *hdev,
 	ret = rtl_download_firmware(hdev, fw_data, ret);
 
 out:
-	kfree(fw_data);
+	kvfree(fw_data);
 	return ret;
 }
 
@@ -501,8 +503,8 @@ static struct sk_buff *btrtl_read_local_version(struct hci_dev *hdev)
 
 void btrtl_free(struct btrtl_device_info *btrtl_dev)
 {
-	kfree(btrtl_dev->fw_data);
-	kfree(btrtl_dev->cfg_data);
+	kvfree(btrtl_dev->fw_data);
+	kvfree(btrtl_dev->cfg_data);
 	kfree(btrtl_dev);
 }
 EXPORT_SYMBOL_GPL(btrtl_free);
drivers/bus/hisi_lpc.c +25 -2
index e31c02dc7770..cbd970fb02f1 100644
@@ -358,6 +358,26 @@ static int hisi_lpc_acpi_xlat_io_res(struct acpi_device *adev,
 	return 0;
 }
 
+/*
+ * Released firmware describes the IO port max address as 0x3fff, which is
+ * the max host bus address. Fixup to a proper range. This will probably
+ * never be fixed in firmware.
+ */
+static void hisi_lpc_acpi_fixup_child_resource(struct device *hostdev,
+					       struct resource *r)
+{
+	if (r->end != 0x3fff)
+		return;
+
+	if (r->start == 0xe4)
+		r->end = 0xe4 + 0x04 - 1;
+	else if (r->start == 0x2f8)
+		r->end = 0x2f8 + 0x08 - 1;
+	else
+		dev_warn(hostdev, "unrecognised resource %pR to fixup, ignoring\n",
+			 r);
+}
+
 /*
  * hisi_lpc_acpi_set_io_res - set the resources for a child
  * @child: the device node to be updated the I/O resource
@@ -419,8 +439,11 @@ static int hisi_lpc_acpi_set_io_res(struct device *child,
 		return -ENOMEM;
 	}
 	count = 0;
-	list_for_each_entry(rentry, &resource_list, node)
-		resources[count++] = *rentry->res;
+	list_for_each_entry(rentry, &resource_list, node) {
+		resources[count] = *rentry->res;
+		hisi_lpc_acpi_fixup_child_resource(hostdev, &resources[count]);
+		count++;
+	}
 
 	acpi_dev_free_resource_list(&resource_list);
 
drivers/char/random.c +6 -6
index 6a5d4dfafc47..80dedecfe15c 100644
@@ -1150,14 +1150,14 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
 	 * We take into account the first, second and third-order deltas
 	 * in order to make our estimate.
 	 */
-	delta = sample.jiffies - state->last_time;
-	state->last_time = sample.jiffies;
+	delta = sample.jiffies - READ_ONCE(state->last_time);
+	WRITE_ONCE(state->last_time, sample.jiffies);
 
-	delta2 = delta - state->last_delta;
-	state->last_delta = delta;
+	delta2 = delta - READ_ONCE(state->last_delta);
+	WRITE_ONCE(state->last_delta, delta);
 
-	delta3 = delta2 - state->last_delta2;
-	state->last_delta2 = delta2;
+	delta3 = delta2 - READ_ONCE(state->last_delta2);
+	WRITE_ONCE(state->last_delta2, delta2);
 
 	if (delta < 0)
 		delta = -delta;
drivers/char/tlclk.c +10 -7
index 8eeb4190207d..dce22b7fc544 100644
@@ -776,17 +776,21 @@ static int __init tlclk_init(void)
 {
 	int ret;
 
+	telclk_interrupt = (inb(TLCLK_REG7) & 0x0f);
+
+	alarm_events = kzalloc( sizeof(struct tlclk_alarms), GFP_KERNEL);
+	if (!alarm_events) {
+		ret = -ENOMEM;
+		goto out1;
+	}
+
 	ret = register_chrdev(tlclk_major, "telco_clock", &tlclk_fops);
 	if (ret < 0) {
 		printk(KERN_ERR "tlclk: can't get major %d.\n", tlclk_major);
+		kfree(alarm_events);
 		return ret;
 	}
 	tlclk_major = ret;
-	alarm_events = kzalloc( sizeof(struct tlclk_alarms), GFP_KERNEL);
-	if (!alarm_events) {
-		ret = -ENOMEM;
-		goto out1;
-	}
 
 	/* Read telecom clock IRQ number (Set by BIOS) */
 	if (!request_region(TLCLK_BASE, 8, "telco_clock")) {
@@ -795,7 +799,6 @@ static int __init tlclk_init(void)
 		ret = -EBUSY;
 		goto out2;
 	}
-	telclk_interrupt = (inb(TLCLK_REG7) & 0x0f);
 
 	if (0x0F == telclk_interrupt ) { /* not MCPBL0010 ? */
 		printk(KERN_ERR "telclk_interrupt = 0x%x non-mcpbl0010 hw.\n",
@@ -836,8 +839,8 @@ static int __init tlclk_init(void)
 	release_region(TLCLK_BASE, 8);
 out2:
 	kfree(alarm_events);
-out1:
 	unregister_chrdev(tlclk_major, "telco_clock");
+out1:
 	return ret;
 }
 
drivers/char/tpm/tpm_crb.c +90 -33

210 lines not on this page · raw message

drivers/char/tpm/tpm_ibmvtpm.c +9 -0
index 569e93e1f06c..3ba67bc6baba 100644
@@ -588,6 +588,7 @@ static irqreturn_t ibmvtpm_interrupt(int irq, void *vtpm_instance)
 	 */
 	while ((crq = ibmvtpm_crq_get_next(ibmvtpm)) != NULL) {
 		ibmvtpm_crq_process(crq, ibmvtpm);
+		wake_up_interruptible(&ibmvtpm->crq_queue.wq);
 		crq->valid = 0;
 		smp_wmb();
 	}
@@ -635,6 +636,7 @@ static int tpm_ibmvtpm_probe(struct vio_dev *vio_dev,
 	}
 
 	crq_q->num_entry = CRQ_RES_BUF_SIZE / sizeof(*crq_q->crq_addr);
+	init_waitqueue_head(&crq_q->wq);
 	ibmvtpm->crq_dma_handle = dma_map_single(dev, crq_q->crq_addr,
 						 CRQ_RES_BUF_SIZE,
 						 DMA_BIDIRECTIONAL);
@@ -687,6 +689,13 @@ static int tpm_ibmvtpm_probe(struct vio_dev *vio_dev,
 	if (rc)
 		goto init_irq_cleanup;
 
+	if (!wait_event_timeout(ibmvtpm->crq_queue.wq,
+				ibmvtpm->rtce_buf != NULL,
+				HZ)) {
+		dev_err(dev, "CRQ response timed out\n");
+		goto init_irq_cleanup;
+	}
+
 	return tpm_chip_register(chip);
 init_irq_cleanup:
 	do {
drivers/char/tpm/tpm_ibmvtpm.h +1 -0
index 91dfe766d080..4f6a124601db 100644
@@ -31,6 +31,7 @@ struct ibmvtpm_crq_queue {
 	struct ibmvtpm_crq *crq_addr;
 	u32 index;
 	u32 num_entry;
+	wait_queue_head_t wq;
 };
 
 struct ibmvtpm_dev {
drivers/clk/socfpga/clk-pll-s10.c +3 -1
index c4d0b6f6abf2..fc2e2839fe57 100644
@@ -38,7 +38,9 @@ static unsigned long clk_pll_recalc_rate(struct clk_hw *hwclk,
 	/* read VCO1 reg for numerator and denominator */
 	reg = readl(socfpgaclk->hw.reg);
 	refdiv = (reg & SOCFPGA_PLL_REFDIV_MASK) >> SOCFPGA_PLL_REFDIV_SHIFT;
-	vco_freq = (unsigned long long)parent_rate / refdiv;
+
+	vco_freq = parent_rate;
+	do_div(vco_freq, refdiv);
 
 	/* Read mdiv and fdiv from the fdbck register */
 	reg = readl(socfpgaclk->hw.reg + 0x4);
drivers/clk/ti/adpll.c +2 -9
index 688e403333b9..14926e07d09a 100644
@@ -193,15 +193,8 @@ static const char *ti_adpll_clk_get_name(struct ti_adpll_data *d,
 		if (err)
 			return NULL;
 	} else {
-		const char *base_name = "adpll";
-		char *buf;
-
-		buf = devm_kzalloc(d->dev, 8 + 1 + strlen(base_name) + 1 +
-				    strlen(postfix), GFP_KERNEL);
-		if (!buf)
-			return NULL;
-		sprintf(buf, "%08lx.%s.%s", d->pa, base_name, postfix);
-		name = buf;
+		name = devm_kasprintf(d->dev, GFP_KERNEL, "%08lx.adpll.%s",
+				      d->pa, postfix);
 	}
 
 	return name;
drivers/clocksource/h8300_timer8.c +1 -1
index 1d740a8c42ab..47114c2a7cb5 100644
@@ -169,7 +169,7 @@ static int __init h8300_8timer_init(struct device_node *node)
 		return PTR_ERR(clk);
 	}
 
-	ret = ENXIO;
+	ret = -ENXIO;
 	base = of_iomap(node, 0);
 	if (!base) {
 		pr_err("failed to map registers for clockevent\n");
drivers/cpufreq/powernv-cpufreq.c +8 -5
index 687c92ef7644..79942f705757 100644
@@ -903,6 +903,7 @@ static struct notifier_block powernv_cpufreq_reboot_nb = {
 void powernv_cpufreq_work_fn(struct work_struct *work)
 {
 	struct chip *chip = container_of(work, struct chip, throttle);
+	struct cpufreq_policy *policy;
 	unsigned int cpu;
 	cpumask_t mask;
 
@@ -917,12 +918,14 @@ void powernv_cpufreq_work_fn(struct work_struct *work)
 	chip->restore = false;
 	for_each_cpu(cpu, &mask) {
 		int index;
-		struct cpufreq_policy policy;
 
-		cpufreq_get_policy(&policy, cpu);
-		index = cpufreq_table_find_index_c(&policy, policy.cur);
-		powernv_cpufreq_target_index(&policy, index);
-		cpumask_andnot(&mask, &mask, policy.cpus);
+		policy = cpufreq_cpu_get(cpu);
+		if (!policy)
+			continue;
+		index = cpufreq_table_find_index_c(policy, policy->cur);
+		powernv_cpufreq_target_index(policy, index);
+		cpumask_andnot(&mask, &mask, policy->cpus);
+		cpufreq_cpu_put(policy);
 	}
 out:
 	put_online_cpus();
drivers/crypto/chelsio/chcr_algo.c +3 -2
index 9b3c259f081d..ee508bbbb750 100644
@@ -2418,8 +2418,9 @@ int chcr_aead_dma_map(struct device *dev,
 	else
 		reqctx->b0_dma = 0;
 	if (req->src == req->dst) {
-		error = dma_map_sg(dev, req->src, sg_nents(req->src),
-				   DMA_BIDIRECTIONAL);
+		error = dma_map_sg(dev, req->src,
+				sg_nents_for_len(req->src, dst_size),
+					DMA_BIDIRECTIONAL);
 		if (!error)
 			goto err;
 	} else {
drivers/crypto/chelsio/chtls/chtls_io.c +5 -5
index 1e0cc96306dd..2c1f3ddb0cc7 100644
@@ -1449,7 +1449,7 @@ static int chtls_pt_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 				      csk->wr_max_credits))
 			sk->sk_write_space(sk);
 
-		if (copied >= target && !sk->sk_backlog.tail)
+		if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
 			break;
 
 		if (copied) {
@@ -1482,7 +1482,7 @@ static int chtls_pt_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 				break;
 			}
 		}
-		if (sk->sk_backlog.tail) {
+		if (READ_ONCE(sk->sk_backlog.tail)) {
 			release_sock(sk);
 			lock_sock(sk);
 			chtls_cleanup_rbuf(sk, copied);
@@ -1627,7 +1627,7 @@ static int peekmsg(struct sock *sk, struct msghdr *msg,
 			break;
 		}
 
-		if (sk->sk_backlog.tail) {
+		if (READ_ONCE(sk->sk_backlog.tail)) {
 			/* Do not sleep, just process backlog. */
 			release_sock(sk);
 			lock_sock(sk);
@@ -1759,7 +1759,7 @@ int chtls_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 				      csk->wr_max_credits))
 			sk->sk_write_space(sk);
 
-		if (copied >= target && !sk->sk_backlog.tail)
+		if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
 			break;
 
 		if (copied) {
@@ -1790,7 +1790,7 @@ int chtls_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 			}
 		}
 
-		if (sk->sk_backlog.tail) {
+		if (READ_ONCE(sk->sk_backlog.tail)) {
 			release_sock(sk);
 			lock_sock(sk);
 			chtls_cleanup_rbuf(sk, copied);
drivers/devfreq/tegra-devfreq.c +3 -1
index 06768074d2d8..479d9575e124 100644
@@ -80,6 +80,8 @@
 
 #define KHZ							1000
 
+#define KHZ_MAX						(ULONG_MAX / KHZ)
+
 /* Assume that the bus is saturated if the utilization is 25% */
 #define BUS_SATURATION_RATIO					25
 
@@ -180,7 +182,7 @@ struct tegra_actmon_emc_ratio {
 };
 
 static struct tegra_actmon_emc_ratio actmon_emc_ratios[] = {
-	{ 1400000, ULONG_MAX },
+	{ 1400000,    KHZ_MAX },
 	{ 1200000,    750000 },
 	{ 1100000,    600000 },
 	{ 1000000,    500000 },
drivers/dma-buf/dma-fence.c +35 -43

120 lines not on this page · raw message

drivers/dma/mediatek/mtk-hsdma.c +3 -1
index b7ec56ae02a6..fca232b1d4a6 100644
@@ -997,7 +997,7 @@ static int mtk_hsdma_probe(struct platform_device *pdev)
 	if (err) {
 		dev_err(&pdev->dev,
 			"request_irq failed with err %d\n", err);
-		goto err_unregister;
+		goto err_free;
 	}
 
 	platform_set_drvdata(pdev, hsdma);
@@ -1006,6 +1006,8 @@ static int mtk_hsdma_probe(struct platform_device *pdev)
 
 	return 0;
 
+err_free:
+	of_dma_controller_free(pdev->dev.of_node);
 err_unregister:
 	dma_async_device_unregister(dd);
 
drivers/dma/stm32-dma.c +6 -3
index 4903a408fc14..ac7af440f865 100644
@@ -494,8 +494,10 @@ static int stm32_dma_terminate_all(struct dma_chan *c)
 
 	spin_lock_irqsave(&chan->vchan.lock, flags);
 
-	if (chan->busy) {
-		stm32_dma_stop(chan);
+	if (chan->desc) {
+		vchan_terminate_vdesc(&chan->desc->vdesc);
+		if (chan->busy)
+			stm32_dma_stop(chan);
 		chan->desc = NULL;
 	}
 
@@ -551,6 +553,8 @@ static void stm32_dma_start_transfer(struct stm32_dma_chan *chan)
 		if (!vdesc)
 			return;
 
+		list_del(&vdesc->node);
+
 		chan->desc = to_stm32_dma_desc(vdesc);
 		chan->next_sg = 0;
 	}
@@ -628,7 +632,6 @@ static void stm32_dma_handle_chan_done(struct stm32_dma_chan *chan)
 		} else {
 			chan->busy = false;
 			if (chan->next_sg == chan->desc->num_sgs) {
-				list_del(&chan->desc->vdesc.node);
 				vchan_cookie_complete(&chan->desc->vdesc);
 				chan->desc = NULL;
 			}
drivers/dma/stm32-mdma.c +6 -3
index 8c3c3e5b812a..9c6867916e89 100644
@@ -1137,6 +1137,8 @@ static void stm32_mdma_start_transfer(struct stm32_mdma_chan *chan)
 		return;
 	}
 
+	list_del(&vdesc->node);
+
 	chan->desc = to_stm32_mdma_desc(vdesc);
 	hwdesc = chan->desc->node[0].hwdesc;
 	chan->curr_hwdesc = 0;
@@ -1252,8 +1254,10 @@ static int stm32_mdma_terminate_all(struct dma_chan *c)
 	LIST_HEAD(head);
 
 	spin_lock_irqsave(&chan->vchan.lock, flags);
-	if (chan->busy) {
-		stm32_mdma_stop(chan);
+	if (chan->desc) {
+		vchan_terminate_vdesc(&chan->desc->vdesc);
+		if (chan->busy)
+			stm32_mdma_stop(chan);
 		chan->desc = NULL;
 	}
 	vchan_get_all_descriptors(&chan->vchan, &head);
@@ -1341,7 +1345,6 @@ static enum dma_status stm32_mdma_tx_status(struct dma_chan *c,
 
 static void stm32_mdma_xfer_end(struct stm32_mdma_chan *chan)
 {
-	list_del(&chan->desc->vdesc.node);
 	vchan_cookie_complete(&chan->desc->vdesc);
 	chan->desc = NULL;
 	chan->busy = false;
drivers/dma/tegra20-apb-dma.c +1 -2
index 15481aeaeecd..5ccd24a46e38 100644
@@ -1225,8 +1225,7 @@ static void tegra_dma_free_chan_resources(struct dma_chan *dc)
 
 	dev_dbg(tdc2dev(tdc), "Freeing channel %d\n", tdc->id);
 
-	if (tdc->busy)
-		tegra_dma_terminate_all(dc);
+	tegra_dma_terminate_all(dc);
 
 	spin_lock_irqsave(&tdc->lock, flags);
 	list_splice_init(&tdc->pending_sg_req, &sg_req_list);
drivers/dma/xilinx/zynqmp_dma.c +15 -9
index 73de6a6179fc..e002ff8413e2 100644
@@ -127,10 +127,12 @@
 /* Max transfer size per descriptor */
 #define ZYNQMP_DMA_MAX_TRANS_LEN	0x40000000
 
+/* Max burst lengths */
+#define ZYNQMP_DMA_MAX_DST_BURST_LEN    32768U
+#define ZYNQMP_DMA_MAX_SRC_BURST_LEN    32768U
+
 /* Reset values for data attributes */
 #define ZYNQMP_DMA_AXCACHE_VAL		0xF
-#define ZYNQMP_DMA_ARLEN_RST_VAL	0xF
-#define ZYNQMP_DMA_AWLEN_RST_VAL	0xF
 
 #define ZYNQMP_DMA_SRC_ISSUE_RST_VAL	0x1F
 
@@ -536,17 +538,19 @@ static void zynqmp_dma_handle_ovfl_int(struct zynqmp_dma_chan *chan, u32 status)
 
 static void zynqmp_dma_config(struct zynqmp_dma_chan *chan)
 {
-	u32 val;
+	u32 val, burst_val;
 
 	val = readl(chan->regs + ZYNQMP_DMA_CTRL0);
 	val |= ZYNQMP_DMA_POINT_TYPE_SG;
 	writel(val, chan->regs + ZYNQMP_DMA_CTRL0);
 
 	val = readl(chan->regs + ZYNQMP_DMA_DATA_ATTR);
+	burst_val = __ilog2_u32(chan->src_burst_len);
 	val = (val & ~ZYNQMP_DMA_ARLEN) |
-		(chan->src_burst_len << ZYNQMP_DMA_ARLEN_OFST);
+		((burst_val << ZYNQMP_DMA_ARLEN_OFST) & ZYNQMP_DMA_ARLEN);
+	burst_val = __ilog2_u32(chan->dst_burst_len);
 	val = (val & ~ZYNQMP_DMA_AWLEN) |
-		(chan->dst_burst_len << ZYNQMP_DMA_AWLEN_OFST);
+		((burst_val << ZYNQMP_DMA_AWLEN_OFST) & ZYNQMP_DMA_AWLEN);
 	writel(val, chan->regs + ZYNQMP_DMA_DATA_ATTR);
 }
 
@@ -562,8 +566,10 @@ static int zynqmp_dma_device_config(struct dma_chan *dchan,
 {
 	struct zynqmp_dma_chan *chan = to_chan(dchan);
 
-	chan->src_burst_len = config->src_maxburst;
-	chan->dst_burst_len = config->dst_maxburst;
+	chan->src_burst_len = clamp(config->src_maxburst, 1U,
+		ZYNQMP_DMA_MAX_SRC_BURST_LEN);
+	chan->dst_burst_len = clamp(config->dst_maxburst, 1U,
+		ZYNQMP_DMA_MAX_DST_BURST_LEN);
 
 	return 0;
 }
@@ -884,8 +890,8 @@ static int zynqmp_dma_chan_probe(struct zynqmp_dma_device *zdev,
 		return PTR_ERR(chan->regs);
 
 	chan->bus_width = ZYNQMP_DMA_BUS_WIDTH_64;
-	chan->dst_burst_len = ZYNQMP_DMA_AWLEN_RST_VAL;
-	chan->src_burst_len = ZYNQMP_DMA_ARLEN_RST_VAL;
+	chan->dst_burst_len = ZYNQMP_DMA_MAX_DST_BURST_LEN;
+	chan->src_burst_len = ZYNQMP_DMA_MAX_SRC_BURST_LEN;
 	err = of_property_read_u32(node, "xlnx,bus-width", &chan->bus_width);
 	if (err < 0) {
 		dev_err(&pdev->dev, "missing xlnx,bus-width property\n");
drivers/firmware/arm_sdei.c +14 -12
index 05b528c7ed8f..e809f4d9a9e9 100644
@@ -410,14 +410,19 @@ int sdei_event_enable(u32 event_num)
 		return -ENOENT;
 	}
 
-	spin_lock(&sdei_list_lock);
-	event->reenable = true;
-	spin_unlock(&sdei_list_lock);
 
+	cpus_read_lock();
 	if (event->type == SDEI_EVENT_TYPE_SHARED)
 		err = sdei_api_event_enable(event->event_num);
 	else
 		err = sdei_do_cross_call(_local_event_enable, event);
+
+	if (!err) {
+		spin_lock(&sdei_list_lock);
+		event->reenable = true;
+		spin_unlock(&sdei_list_lock);
+	}
+	cpus_read_unlock();
 	mutex_unlock(&sdei_events_lock);
 
 	return err;
@@ -619,21 +624,18 @@ int sdei_event_register(u32 event_num, sdei_event_callback *cb, void *arg)
 			break;
 		}
 
-		spin_lock(&sdei_list_lock);
-		event->reregister = true;
-		spin_unlock(&sdei_list_lock);
-
+		cpus_read_lock();
 		err = _sdei_event_register(event);
 		if (err) {
-			spin_lock(&sdei_list_lock);
-			event->reregister = false;
-			event->reenable = false;
-			spin_unlock(&sdei_list_lock);
-
 			sdei_event_destroy(event);
 			pr_warn("Failed to register event %u: %d\n", event_num,
 				err);
+		} else {
+			spin_lock(&sdei_list_lock);
+			event->reregister = true;
+			spin_unlock(&sdei_list_lock);
 		}
+		cpus_read_unlock();
 	} while (0);
 	mutex_unlock(&sdei_events_lock);
 
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +18 -13
index a5df80d50d44..6cf3dd5edffd 100644
@@ -191,30 +191,35 @@ static bool amdgpu_read_bios_from_rom(struct amdgpu_device *adev)
 
 static bool amdgpu_read_platform_bios(struct amdgpu_device *adev)
 {
-	uint8_t __iomem *bios;
-	size_t size;
+	phys_addr_t rom = adev->pdev->rom;
+	size_t romlen = adev->pdev->romlen;
+	void __iomem *bios;
 
 	adev->bios = NULL;
 
-	bios = pci_platform_rom(adev->pdev, &size);
-	if (!bios) {
+	if (!rom || romlen == 0)
 		return false;
-	}
 
-	adev->bios = kzalloc(size, GFP_KERNEL);
-	if (adev->bios == NULL)
+	adev->bios = kzalloc(romlen, GFP_KERNEL);
+	if (!adev->bios)
 		return false;
 
-	memcpy_fromio(adev->bios, bios, size);
+	bios = ioremap(rom, romlen);
+	if (!bios)
+		goto free_bios;
 
-	if (!check_atom_bios(adev->bios, size)) {
-		kfree(adev->bios);
-		return false;
-	}
+	memcpy_fromio(adev->bios, bios, romlen);
+	iounmap(bios);
 
-	adev->bios_size = size;
+	if (!check_atom_bios(adev->bios, romlen))
+		goto free_bios;
+
+	adev->bios_size = romlen;
 
 	return true;
+free_bios:
+	kfree(adev->bios);
+	return false;
 }
 
 #ifdef CONFIG_ACPI
drivers/gpu/drm/amd/amdgpu/atom.c +2 -2
index e9934de1b9cf..0222bb7ea49b 100644
@@ -742,8 +742,8 @@ static void atom_op_jump(atom_exec_context *ctx, int *ptr, int arg)
 			cjiffies = jiffies;
 			if (time_after(cjiffies, ctx->last_jump_jiffies)) {
 				cjiffies -= ctx->last_jump_jiffies;
-				if ((jiffies_to_msecs(cjiffies) > 5000)) {
-					DRM_ERROR("atombios stuck in loop for more than 5secs aborting\n");
+				if ((jiffies_to_msecs(cjiffies) > 10000)) {
+					DRM_ERROR("atombios stuck in loop for more than 10secs aborting\n");
 					ctx->abort = true;
 				}
 			} else {
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +2 -0
index 189212cb3547..bff39f561264 100644
@@ -1101,6 +1101,8 @@ static int stop_cpsch(struct device_queue_manager *dqm)
 	unmap_queues_cpsch(dqm, KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0);
 	dqm_unlock(dqm);
 
+	pm_release_ib(&dqm->packets);
+
 	kfd_gtt_sa_free(dqm->dev, dqm->fence_mem);
 	pm_uninit(&dqm->packets);
 
drivers/gpu/drm/amd/display/dc/core/dc_link.c +29 -38

184 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c +25 -27

93 lines not on this page · raw message

drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +7 -0
index 72c0a2ae2dd4..058898b321b8 100644
@@ -3970,6 +3970,13 @@ static int smu7_set_power_state_tasks(struct pp_hwmgr *hwmgr, const void *input)
 			"Failed to populate and upload SCLK MCLK DPM levels!",
 			result = tmp_result);
 
+	/*
+	 * If a custom pp table is loaded, set DPMTABLE_OD_UPDATE_VDDC flag.
+	 * That effectively disables AVFS feature.
+	 */
+	if (hwmgr->hardcode_pp_table != NULL)
+		data->need_update_smu7_dpm_table |= DPMTABLE_OD_UPDATE_VDDC;
+
 	tmp_result = smu7_update_avfs(hwmgr);
 	PP_ASSERT_WITH_CODE((0 == tmp_result),
 			"Failed to update avfs voltages!",
drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +7 -0
index ce459ea4ec3a..da9e6923fa65 100644
@@ -3591,6 +3591,13 @@ static int vega10_set_power_state_tasks(struct pp_hwmgr *hwmgr,
 	PP_ASSERT_WITH_CODE(!result,
 			"Failed to upload PPtable!", return result);
 
+	/*
+	 * If a custom pp table is loaded, set DPMTABLE_OD_UPDATE_VDDC flag.
+	 * That effectively disables AVFS feature.
+	 */
+	if(hwmgr->hardcode_pp_table != NULL)
+		data->need_update_dpm_table |= DPMTABLE_OD_UPDATE_VDDC;
+
 	vega10_update_avfs(hwmgr);
 
 	data->need_update_dpm_table &= DPMTABLE_OD_UPDATE_VDDC;
drivers/gpu/drm/gma500/cdv_intel_display.c +2 -0
index 17db4b4749d5..2e8479744ca4 100644
@@ -415,6 +415,8 @@ static bool cdv_intel_find_dp_pll(const struct gma_limit_t *limit,
 	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
 	struct gma_clock_t clock;
 
+	memset(&clock, 0, sizeof(clock));
+
 	switch (refclk) {
 	case 27000:
 		if (target < 200000) {
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +20 -7
index 1fc9a7fa37b4..d29a58bd2f7a 100644
@@ -1474,18 +1474,31 @@ static const struct adreno_gpu_funcs funcs = {
 static void check_speed_bin(struct device *dev)
 {
 	struct nvmem_cell *cell;
-	u32 bin, val;
+	u32 val;
+
+	/*
+	 * If the OPP table specifies a opp-supported-hw property then we have
+	 * to set something with dev_pm_opp_set_supported_hw() or the table
+	 * doesn't get populated so pick an arbitrary value that should
+	 * ensure the default frequencies are selected but not conflict with any
+	 * actual bins
+	 */
+	val = 0x80;
 
 	cell = nvmem_cell_get(dev, "speed_bin");
 
-	/* If a nvmem cell isn't defined, nothing to do */
-	if (IS_ERR(cell))
-		return;
+	if (!IS_ERR(cell)) {
+		void *buf = nvmem_cell_read(cell, NULL);
+
+		if (!IS_ERR(buf)) {
+			u8 bin = *((u8 *) buf);
 
-	bin = *((u32 *) nvmem_cell_read(cell, NULL));
-	nvmem_cell_put(cell);
+			val = (1 << bin);
+			kfree(buf);
+		}
 
-	val = (1 << bin);
+		nvmem_cell_put(cell);
+	}
 
 	dev_pm_opp_set_supported_hw(dev, &val, 1);
 }
drivers/gpu/drm/msm/msm_drv.c +4 -2
index 7f45486b6650..3ba3ae9749be 100644
@@ -495,8 +495,10 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
 	if (!dev->dma_parms) {
 		dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms),
 					      GFP_KERNEL);
-		if (!dev->dma_parms)
-			return -ENOMEM;
+		if (!dev->dma_parms) {
+			ret = -ENOMEM;
+			goto err_msm_uninit;
+		}
 	}
 	dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
 
drivers/gpu/drm/nouveau/dispnv50/disp.c +3 -1
index e06ea8c8184c..1bb0a9f6fa73 100644
@@ -909,8 +909,10 @@ nv50_mstc_detect(struct drm_connector *connector, bool force)
 		return connector_status_disconnected;
 
 	ret = pm_runtime_get_sync(connector->dev->dev);
-	if (ret < 0 && ret != -EACCES)
+	if (ret < 0 && ret != -EACCES) {
+		pm_runtime_put_autosuspend(connector->dev->dev);
 		return connector_status_disconnected;
+	}
 
 	conn_status = drm_dp_mst_detect_port(connector, mstc->port->mgr,
 					     mstc->port);
drivers/gpu/drm/nouveau/nouveau_debugfs.c +4 -1
index 9635704a1d86..4561a786fab0 100644
@@ -161,8 +161,11 @@ nouveau_debugfs_pstate_set(struct file *file, const char __user *ubuf,
 	}
 
 	ret = pm_runtime_get_sync(drm->dev);
-	if (ret < 0 && ret != -EACCES)
+	if (ret < 0 && ret != -EACCES) {
+		pm_runtime_put_autosuspend(drm->dev);
 		return ret;
+	}
+
 	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_USER, &args, sizeof(args));
 	pm_runtime_put_autosuspend(drm->dev);
 	if (ret < 0)
drivers/gpu/drm/nouveau/nouveau_gem.c +3 -1
index 791f970714ed..a98fccb0d32f 100644
@@ -82,8 +82,10 @@ nouveau_gem_object_open(struct drm_gem_object *gem, struct drm_file *file_priv)
 		return ret;
 
 	ret = pm_runtime_get_sync(dev);
-	if (ret < 0 && ret != -EACCES)
+	if (ret < 0 && ret != -EACCES) {
+		pm_runtime_put_autosuspend(dev);
 		goto out;
+	}
 
 	ret = nouveau_vma_new(nvbo, &cli->vmm, &vma);
 	pm_runtime_mark_last_busy(dev);
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowpci.c +15 -2
index 9b91da09dc5f..8d9812a51ef6 100644
@@ -101,9 +101,13 @@ platform_init(struct nvkm_bios *bios, const char *name)
 	else
 		return ERR_PTR(-ENODEV);
 
+	if (!pdev->rom || pdev->romlen == 0)
+		return ERR_PTR(-ENODEV);
+
 	if ((priv = kmalloc(sizeof(*priv), GFP_KERNEL))) {
+		priv->size = pdev->romlen;
 		if (ret = -ENODEV,
-		    (priv->rom = pci_platform_rom(pdev, &priv->size)))
+		    (priv->rom = ioremap(pdev->rom, pdev->romlen)))
 			return priv;
 		kfree(priv);
 	}
@@ -111,11 +115,20 @@ platform_init(struct nvkm_bios *bios, const char *name)
 	return ERR_PTR(ret);
 }
 
+static void
+platform_fini(void *data)
+{
+	struct priv *priv = data;
+
+	iounmap(priv->rom);
+	kfree(priv);
+}
+
 const struct nvbios_source
 nvbios_platform = {
 	.name = "PLATFORM",
 	.init = platform_init,
-	.fini = (void(*)(void *))kfree,
+	.fini = platform_fini,
 	.read = pcirom_read,
 	.rw = true,
 };
drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c +3 -1
index 3bfb95d230e0..d8fb686c1fda 100644
@@ -193,7 +193,7 @@ static int __init omapdss_boot_init(void)
 	dss = of_find_matching_node(NULL, omapdss_of_match);
 
 	if (dss == NULL || !of_device_is_available(dss))
-		return 0;
+		goto put_node;
 
 	omapdss_walk_device(dss, true);
 
@@ -218,6 +218,8 @@ static int __init omapdss_boot_init(void)
 		kfree(n);
 	}
 
+put_node:
+	of_node_put(dss);
 	return 0;
 }
 
drivers/gpu/drm/radeon/radeon_bios.c +19 -11
index 04c0ed41374f..dd0528cf9818 100644
@@ -104,25 +104,33 @@ static bool radeon_read_bios(struct radeon_device *rdev)
 
 static bool radeon_read_platform_bios(struct radeon_device *rdev)
 {
-	uint8_t __iomem *bios;
-	size_t size;
+	phys_addr_t rom = rdev->pdev->rom;
+	size_t romlen = rdev->pdev->romlen;
+	void __iomem *bios;
 
 	rdev->bios = NULL;
 
-	bios = pci_platform_rom(rdev->pdev, &size);
-	if (!bios) {
+	if (!rom || romlen == 0)
 		return false;
-	}
 
-	if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
+	rdev->bios = kzalloc(romlen, GFP_KERNEL);
+	if (!rdev->bios)
 		return false;
-	}
-	rdev->bios = kmemdup(bios, size, GFP_KERNEL);
-	if (rdev->bios == NULL) {
-		return false;
-	}
+
+	bios = ioremap(rom, romlen);
+	if (!bios)
+		goto free_bios;
+
+	memcpy_fromio(rdev->bios, bios, romlen);
+	iounmap(bios);
+
+	if (rdev->bios[0] != 0x55 || rdev->bios[1] != 0xaa)
+		goto free_bios;
 
 	return true;
+free_bios:
+	kfree(rdev->bios);
+	return false;
 }
 
 #ifdef CONFIG_ACPI
drivers/gpu/drm/sun4i/sun8i_csc.h +1 -1
index 880e8fbb0855..242752b2d328 100644
@@ -14,7 +14,7 @@ struct sun8i_mixer;
 
 /* VI channel CSC units offsets */
 #define CCSC00_OFFSET 0xAA050
-#define CCSC01_OFFSET 0xFA000
+#define CCSC01_OFFSET 0xFA050
 #define CCSC10_OFFSET 0xA0000
 #define CCSC11_OFFSET 0xF0000
 
drivers/gpu/drm/vc4/vc4_hdmi.c +1 -0
index 86b98856756d..116166266457 100644
@@ -1134,6 +1134,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *hdmi)
 	card->num_links = 1;
 	card->name = "vc4-hdmi";
 	card->dev = dev;
+	card->owner = THIS_MODULE;
 
 	/*
 	 * Be careful, snd_soc_register_card() calls dev_set_drvdata() and
drivers/i2c/i2c-core-base.c +1 -1
index f225bef1e043..41dd0a08a625 100644
@@ -1292,8 +1292,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
 
 	/* create pre-declared device nodes */
 	of_i2c_register_devices(adap);
-	i2c_acpi_register_devices(adap);
 	i2c_acpi_install_space_handler(adap);
+	i2c_acpi_register_devices(adap);
 
 	if (adap->nr < __i2c_first_dynamic_bus_num)
 		i2c_scan_static_board_info(adap);
drivers/infiniband/core/cm.c +15 -10
index 64f206e11d49..4ebf63360a69 100644
@@ -1100,14 +1100,22 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
 		break;
 	}
 
-	spin_lock_irq(&cm.lock);
+	spin_lock_irq(&cm_id_priv->lock);
+	spin_lock(&cm.lock);
+	/* Required for cleanup paths related cm_req_handler() */
+	if (cm_id_priv->timewait_info) {
+		cm_cleanup_timewait(cm_id_priv->timewait_info);
+		kfree(cm_id_priv->timewait_info);
+		cm_id_priv->timewait_info = NULL;
+	}
 	if (!list_empty(&cm_id_priv->altr_list) &&
 	    (!cm_id_priv->altr_send_port_not_ready))
 		list_del(&cm_id_priv->altr_list);
 	if (!list_empty(&cm_id_priv->prim_list) &&
 	    (!cm_id_priv->prim_send_port_not_ready))
 		list_del(&cm_id_priv->prim_list);
-	spin_unlock_irq(&cm.lock);
+	spin_unlock(&cm.lock);
+	spin_unlock_irq(&cm_id_priv->lock);
 
 	cm_free_id(cm_id->local_id);
 	cm_deref_id(cm_id_priv);
@@ -1424,7 +1432,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
 	/* Verify that we're not in timewait. */
 	cm_id_priv = container_of(cm_id, struct cm_id_private, id);
 	spin_lock_irqsave(&cm_id_priv->lock, flags);
-	if (cm_id->state != IB_CM_IDLE) {
+	if (cm_id->state != IB_CM_IDLE || WARN_ON(cm_id_priv->timewait_info)) {
 		spin_unlock_irqrestore(&cm_id_priv->lock, flags);
 		ret = -EINVAL;
 		goto out;
@@ -1442,12 +1450,12 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
 				 param->ppath_sgid_attr, &cm_id_priv->av,
 				 cm_id_priv);
 	if (ret)
-		goto error1;
+		goto out;
 	if (param->alternate_path) {
 		ret = cm_init_av_by_path(param->alternate_path, NULL,
 					 &cm_id_priv->alt_av, cm_id_priv);
 		if (ret)
-			goto error1;
+			goto out;
 	}
 	cm_id->service_id = param->service_id;
 	cm_id->service_mask = ~cpu_to_be64(0);
@@ -1465,7 +1473,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
 
 	ret = cm_alloc_msg(cm_id_priv, &cm_id_priv->msg);
 	if (ret)
-		goto error1;
+		goto out;
 
 	req_msg = (struct cm_req_msg *) cm_id_priv->msg->mad;
 	cm_format_req(req_msg, cm_id_priv, param);
@@ -1488,7 +1496,6 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
 	return 0;
 
 error2:	cm_free_msg(cm_id_priv->msg);
-error1:	kfree(cm_id_priv->timewait_info);
 out:	return ret;
 }
 EXPORT_SYMBOL(ib_send_cm_req);
@@ -1973,7 +1980,7 @@ static int cm_req_handler(struct cm_work *work)
 		pr_debug("%s: local_id %d, no listen_cm_id_priv\n", __func__,
 			 be32_to_cpu(cm_id->local_id));
 		ret = -EINVAL;
-		goto free_timeinfo;
+		goto destroy;
 	}
 
 	cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler;
@@ -2057,8 +2064,6 @@ static int cm_req_handler(struct cm_work *work)
 rejected:
 	atomic_dec(&cm_id_priv->refcount);
 	cm_deref_id(listen_cm_id_priv);
-free_timeinfo:
-	kfree(cm_id_priv->timewait_info);
 destroy:
 	ib_destroy_cm_id(cm_id);
 	return ret;
drivers/infiniband/hw/cxgb4/cm.c +2 -2
index 16145b0a1458..3fd3dfa3478b 100644
@@ -3293,7 +3293,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 		if (raddr->sin_addr.s_addr == htonl(INADDR_ANY)) {
 			err = pick_local_ipaddrs(dev, cm_id);
 			if (err)
-				goto fail2;
+				goto fail3;
 		}
 
 		/* find a route */
@@ -3315,7 +3315,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 		if (ipv6_addr_type(&raddr6->sin6_addr) == IPV6_ADDR_ANY) {
 			err = pick_local_ip6addrs(dev, cm_id);
 			if (err)
-				goto fail2;
+				goto fail3;
 		}
 
 		/* find a route */
drivers/infiniband/hw/i40iw/i40iw_cm.c +1 -1
index 4321b9e3dbb4..0273d0404e74 100644
@@ -2071,9 +2071,9 @@ static int i40iw_addr_resolve_neigh_ipv6(struct i40iw_device *iwdev,
 	dst = i40iw_get_dst_ipv6(&src_addr, &dst_addr);
 	if (!dst || dst->error) {
 		if (dst) {
-			dst_release(dst);
 			i40iw_pr_err("ip6_route_output returned dst->error = %d\n",
 				     dst->error);
+			dst_release(dst);
 		}
 		return rc;
 	}
drivers/infiniband/hw/qedr/qedr_iw_cm.c +1 -1
index 256671577367..e908dfbaa137 100644
@@ -460,10 +460,10 @@ qedr_addr6_resolve(struct qedr_dev *dev,
 
 	if ((!dst) || dst->error) {
 		if (dst) {
-			dst_release(dst);
 			DP_ERR(dev,
 			       "ip6_route_output returned dst->error = %d\n",
 			       dst->error);
+			dst_release(dst);
 		}
 		return -EINVAL;
 	}
drivers/infiniband/sw/rxe/rxe.c +2 -0
index 94dedabe648c..6589ff51eaf5 100644
@@ -121,6 +121,8 @@ static void rxe_init_device_param(struct rxe_dev *rxe)
 	rxe->attr.max_fast_reg_page_list_len	= RXE_MAX_FMR_PAGE_LIST_LEN;
 	rxe->attr.max_pkeys			= RXE_MAX_PKEYS;
 	rxe->attr.local_ca_ack_delay		= RXE_LOCAL_CA_ACK_DELAY;
+	addrconf_addr_eui48((unsigned char *)&rxe->attr.sys_image_guid,
+			rxe->ndev->dev_addr);
 
 	rxe->max_ucontext			= RXE_MAX_UCONTEXT;
 }
drivers/infiniband/sw/rxe/rxe_qp.c +4 -3
index 230697fa31fe..8a22ab8b29e9 100644
@@ -583,15 +583,16 @@ int rxe_qp_from_attr(struct rxe_qp *qp, struct ib_qp_attr *attr, int mask,
 	int err;
 
 	if (mask & IB_QP_MAX_QP_RD_ATOMIC) {
-		int max_rd_atomic = __roundup_pow_of_two(attr->max_rd_atomic);
+		int max_rd_atomic = attr->max_rd_atomic ?
+			roundup_pow_of_two(attr->max_rd_atomic) : 0;
 
 		qp->attr.max_rd_atomic = max_rd_atomic;
 		atomic_set(&qp->req.rd_atomic, max_rd_atomic);
 	}
 
 	if (mask & IB_QP_MAX_DEST_RD_ATOMIC) {
-		int max_dest_rd_atomic =
-			__roundup_pow_of_two(attr->max_dest_rd_atomic);
+		int max_dest_rd_atomic = attr->max_dest_rd_atomic ?
+			roundup_pow_of_two(attr->max_dest_rd_atomic) : 0;
 
 		qp->attr.max_dest_rd_atomic = max_dest_rd_atomic;
 
drivers/leds/leds-mlxreg.c +2 -2
index 1ee48cb21df9..022e973dc7c3 100644
@@ -209,8 +209,8 @@ static int mlxreg_led_config(struct mlxreg_led_priv_data *priv)
 			brightness = LED_OFF;
 			led_data->base_color = MLXREG_LED_GREEN_SOLID;
 		}
-		sprintf(led_data->led_cdev_name, "%s:%s", "mlxreg",
-			data->label);
+		snprintf(led_data->led_cdev_name, sizeof(led_data->led_cdev_name),
+			 "mlxreg:%s", data->label);
 		led_cdev->name = led_data->led_cdev_name;
 		led_cdev->brightness = brightness;
 		led_cdev->max_brightness = LED_ON;
drivers/md/bcache/bcache.h +1 -0
index 1cc6ae3e058c..6a380ed4919a 100644
@@ -585,6 +585,7 @@ struct cache_set {
 	 */
 	wait_queue_head_t	btree_cache_wait;
 	struct task_struct	*btree_cache_alloc_lock;
+	spinlock_t		btree_cannibalize_lock;
 
 	/*
 	 * When we free a btree node, we increment the gen of the bucket the
drivers/md/bcache/btree.c +8 -4
index d320574b9a4c..e388e7bb7b5d 100644
@@ -876,15 +876,17 @@ static struct btree *mca_find(struct cache_set *c, struct bkey *k)
 
 static int mca_cannibalize_lock(struct cache_set *c, struct btree_op *op)
 {
-	struct task_struct *old;
-
-	old = cmpxchg(&c->btree_cache_alloc_lock, NULL, current);
-	if (old && old != current) {
+	spin_lock(&c->btree_cannibalize_lock);
+	if (likely(c->btree_cache_alloc_lock == NULL)) {
+		c->btree_cache_alloc_lock = current;
+	} else if (c->btree_cache_alloc_lock != current) {
 		if (op)
 			prepare_to_wait(&c->btree_cache_wait, &op->wait,
 					TASK_UNINTERRUPTIBLE);
+		spin_unlock(&c->btree_cannibalize_lock);
 		return -EINTR;
 	}
+	spin_unlock(&c->btree_cannibalize_lock);
 
 	return 0;
 }
@@ -919,10 +921,12 @@ static struct btree *mca_cannibalize(struct cache_set *c, struct btree_op *op,
  */
 static void bch_cannibalize_unlock(struct cache_set *c)
 {
+	spin_lock(&c->btree_cannibalize_lock);
 	if (c->btree_cache_alloc_lock == current) {
 		c->btree_cache_alloc_lock = NULL;
 		wake_up(&c->btree_cache_wait);
 	}
+	spin_unlock(&c->btree_cannibalize_lock);
 }
 
 static struct btree *mca_alloc(struct cache_set *c, struct btree_op *op,
drivers/md/bcache/super.c +1 -0
index 825bfde10c69..7787ec42f81e 100644
@@ -1737,6 +1737,7 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb)
 	sema_init(&c->sb_write_mutex, 1);
 	mutex_init(&c->bucket_lock);
 	init_waitqueue_head(&c->btree_cache_wait);
+	spin_lock_init(&c->btree_cannibalize_lock);
 	init_waitqueue_head(&c->bucket_wait);
 	init_waitqueue_head(&c->gc_wait);
 	sema_init(&c->uuid_write_mutex, 1);
drivers/media/dvb-frontends/tda10071.c +5 -4
index 097c42d3f8c2..df0c7243eafe 100644
@@ -483,10 +483,11 @@ static int tda10071_read_status(struct dvb_frontend *fe, enum fe_status *status)
 			goto error;
 
 		if (dev->delivery_system == SYS_DVBS) {
-			dev->dvbv3_ber = buf[0] << 24 | buf[1] << 16 |
-					 buf[2] << 8 | buf[3] << 0;
-			dev->post_bit_error += buf[0] << 24 | buf[1] << 16 |
-					       buf[2] << 8 | buf[3] << 0;
+			u32 bit_error = buf[0] << 24 | buf[1] << 16 |
+					buf[2] << 8 | buf[3] << 0;
+
+			dev->dvbv3_ber = bit_error;
+			dev->post_bit_error += bit_error;
 			c->post_bit_error.stat[0].scale = FE_SCALE_COUNTER;
 			c->post_bit_error.stat[0].uvalue = dev->post_bit_error;
 			dev->block_error += buf[4] << 8 | buf[5] << 0;
drivers/media/i2c/smiapp/smiapp-core.c +2 -1
index 4731e1c72f96..0a434bdce3b3 100644
@@ -2337,11 +2337,12 @@ smiapp_sysfs_nvm_read(struct device *dev, struct device_attribute *attr,
 		if (rval < 0) {
 			if (rval != -EBUSY && rval != -EAGAIN)
 				pm_runtime_set_active(&client->dev);
-			pm_runtime_put(&client->dev);
+			pm_runtime_put_noidle(&client->dev);
 			return -ENODEV;
 		}
 
 		if (smiapp_read_nvm(sensor, sensor->nvm)) {
+			pm_runtime_put(&client->dev);
 			dev_err(&client->dev, "nvm read failed\n");
 			return -ENODEV;
 		}
drivers/media/media-device.c +33 -32

83 lines not on this page · raw message

drivers/media/platform/ti-vpe/cal.c +4 -2
index be3155275a6b..d945323fc437 100644
@@ -684,12 +684,13 @@ static void pix_proc_config(struct cal_ctx *ctx)
 }
 
 static void cal_wr_dma_config(struct cal_ctx *ctx,
-			      unsigned int width)
+			      unsigned int width, unsigned int height)
 {
 	u32 val;
 
 	val = reg_read(ctx->dev, CAL_WR_DMA_CTRL(ctx->csi2_port));
 	set_field(&val, ctx->csi2_port, CAL_WR_DMA_CTRL_CPORT_MASK);
+	set_field(&val, height, CAL_WR_DMA_CTRL_YSIZE_MASK);
 	set_field(&val, CAL_WR_DMA_CTRL_DTAG_PIX_DAT,
 		  CAL_WR_DMA_CTRL_DTAG_MASK);
 	set_field(&val, CAL_WR_DMA_CTRL_MODE_CONST,
@@ -1315,7 +1316,8 @@ static int cal_start_streaming(struct vb2_queue *vq, unsigned int count)
 	csi2_lane_config(ctx);
 	csi2_ctx_config(ctx);
 	pix_proc_config(ctx);
-	cal_wr_dma_config(ctx, ctx->v_fmt.fmt.pix.bytesperline);
+	cal_wr_dma_config(ctx, ctx->v_fmt.fmt.pix.bytesperline,
+			  ctx->v_fmt.fmt.pix.height);
 	cal_wr_dma_addr(ctx, addr);
 	csi2_ppi_enable(ctx);
 
drivers/media/usb/go7007/go7007-usb.c +3 -1
index 19c6a0354ce0..b84a6f654861 100644
@@ -1052,6 +1052,7 @@ static int go7007_usb_probe(struct usb_interface *intf,
 	struct go7007_usb *usb;
 	const struct go7007_usb_board *board;
 	struct usb_device *usbdev = interface_to_usbdev(intf);
+	struct usb_host_endpoint *ep;
 	unsigned num_i2c_devs;
 	char *name;
 	int video_pipe, i, v_urb_len;
@@ -1148,7 +1149,8 @@ static int go7007_usb_probe(struct usb_interface *intf,
 	if (usb->intr_urb->transfer_buffer == NULL)
 		goto allocfail;
 
-	if (go->board_id == GO7007_BOARDID_SENSORAY_2250)
+	ep = usb->usbdev->ep_in[4];
+	if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK)
 		usb_fill_bulk_urb(usb->intr_urb, usb->usbdev,
 			usb_rcvbulkpipe(usb->usbdev, 4),
 			usb->intr_urb->transfer_buffer, 2*sizeof(u16),
drivers/mfd/mfd-core.c +10 -0
index 182973df1aed..77c965c6a65f 100644
@@ -32,6 +32,11 @@ int mfd_cell_enable(struct platform_device *pdev)
 	const struct mfd_cell *cell = mfd_get_cell(pdev);
 	int err = 0;
 
+	if (!cell->enable) {
+		dev_dbg(&pdev->dev, "No .enable() call-back registered\n");
+		return 0;
+	}
+
 	/* only call enable hook if the cell wasn't previously enabled */
 	if (atomic_inc_return(cell->usage_count) == 1)
 		err = cell->enable(pdev);
@@ -49,6 +54,11 @@ int mfd_cell_disable(struct platform_device *pdev)
 	const struct mfd_cell *cell = mfd_get_cell(pdev);
 	int err = 0;
 
+	if (!cell->disable) {
+		dev_dbg(&pdev->dev, "No .disable() call-back registered\n");
+		return 0;
+	}
+
 	/* only disable if no other clients are using it */
 	if (atomic_dec_return(cell->usage_count) == 0)
 		err = cell->disable(pdev);
drivers/mmc/core/mmc.c +4 -5
index 5ca53e225382..4b18034537f5 100644
@@ -300,7 +300,7 @@ static void mmc_manage_enhanced_area(struct mmc_card *card, u8 *ext_csd)
 	}
 }
 
-static void mmc_part_add(struct mmc_card *card, unsigned int size,
+static void mmc_part_add(struct mmc_card *card, u64 size,
 			 unsigned int part_cfg, char *name, int idx, bool ro,
 			 int area_type)
 {
@@ -316,7 +316,7 @@ static void mmc_manage_gp_partitions(struct mmc_card *card, u8 *ext_csd)
 {
 	int idx;
 	u8 hc_erase_grp_sz, hc_wp_grp_sz;
-	unsigned int part_size;
+	u64 part_size;
 
 	/*
 	 * General purpose partition feature support --
@@ -346,8 +346,7 @@ static void mmc_manage_gp_partitions(struct mmc_card *card, u8 *ext_csd)
 				(ext_csd[EXT_CSD_GP_SIZE_MULT + idx * 3 + 1]
 				<< 8) +
 				ext_csd[EXT_CSD_GP_SIZE_MULT + idx * 3];
-			part_size *= (size_t)(hc_erase_grp_sz *
-				hc_wp_grp_sz);
+			part_size *= (hc_erase_grp_sz * hc_wp_grp_sz);
 			mmc_part_add(card, part_size << 19,
 				EXT_CSD_PART_CONFIG_ACC_GP0 + idx,
 				"gp%d", idx, false,
@@ -365,7 +364,7 @@ static void mmc_manage_gp_partitions(struct mmc_card *card, u8 *ext_csd)
 static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
 {
 	int err = 0, idx;
-	unsigned int part_size;
+	u64 part_size;
 	struct device_node *np;
 	bool broken_hpi = false;
 
drivers/mtd/chips/cfi_cmdset_0002.c +0 -1
index 1dbc9554a078..3ab75d3e2ce3 100644
@@ -727,7 +727,6 @@ static struct mtd_info *cfi_amdstd_setup(struct mtd_info *mtd)
 	kfree(mtd->eraseregions);
 	kfree(mtd);
 	kfree(cfi->cmdset_priv);
-	kfree(cfi->cfiq);
 	return NULL;
 }
 
drivers/mtd/cmdlinepart.c +20 -3
index 3ea44cff9b75..c29205ee82e2 100644
@@ -231,12 +231,29 @@ static int mtdpart_setup_real(char *s)
 		struct cmdline_mtd_partition *this_mtd;
 		struct mtd_partition *parts;
 		int mtd_id_len, num_parts;
-		char *p, *mtd_id;
+		char *p, *mtd_id, *semicol;
+
+		/*
+		 * Replace the first ';' by a NULL char so strrchr can work
+		 * properly.
+		 */
+		semicol = strchr(s, ';');
+		if (semicol)
+			*semicol = '\0';
 
 		mtd_id = s;
 
-		/* fetch <mtd-id> */
-		p = strchr(s, ':');
+		/*
+		 * fetch <mtd-id>. We use strrchr to ignore all ':' that could
+		 * be present in the MTD name, only the last one is interpreted
+		 * as an <mtd-id>/<part-definition> separator.
+		 */
+		p = strrchr(s, ':');
+
+		/* Restore the ';' now. */
+		if (semicol)
+			*semicol = ';';
+
 		if (!p) {
 			pr_err("no mtd-id\n");
 			return -EINVAL;
drivers/mtd/nand/raw/omap_elm.c +1 -0
index a3f32f939cc1..6736777a4156 100644
@@ -421,6 +421,7 @@ static int elm_probe(struct platform_device *pdev)
 	pm_runtime_enable(&pdev->dev);
 	if (pm_runtime_get_sync(&pdev->dev) < 0) {
[… more lines in the raw message]

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

drivers/mtd/ubi/fastmap-wl.c +31 -15

46 lines not on this page · raw message

drivers/mtd/ubi/fastmap.c +5 -9
index 8e292992f84c..b88ef875236c 100644

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

drivers/mtd/ubi/ubi.h +4 -2
index d47b9e436e67..d248ec371cc1 100644

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

drivers/mtd/ubi/wl.c +14 -18
index 6f2ac865ff05..80d64d7e7a8b 100644

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

drivers/mtd/ubi/wl.h +0 -1
index a9e2d669acd8..c93a53293786 100644

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

drivers/net/ethernet/intel/e1000/e1000_main.c +14 -4
index 47b867c64b14..195108858f38 100644

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

drivers/net/ethernet/qlogic/qed/qed_sriov.c +1 -0
index 71a7af134dd8..886c7aae662f 100644

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

drivers/net/ieee802154/adf7242.c +3 -1
index 71be8524cca8..a686926bba71 100644

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

drivers/net/ieee802154/ca8210.c +1 -0
index 38a41651e451..deace0aadad2 100644

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

drivers/net/wireless/ath/ar5523/ar5523.c +2 -0
index da2d179430ca..4c57e79e5779 100644

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

drivers/net/wireless/ath/ath10k/debug.c +2 -1
index 0baaad90b8d1..4e980e78ba95 100644

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

drivers/net/wireless/ath/ath10k/sdio.c +14 -4
index 0ecaba824fb2..0cdaecb0e28a 100644

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

drivers/net/wireless/ath/ath10k/wmi.c +31 -18

49 lines not on this page · raw message

drivers/net/wireless/marvell/mwifiex/fw.h +1 -1
index 1fb76d2f5d3f..8b9d0809daf6 100644

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

drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c +2 -2
index 797c2e978394..7003767eef42 100644

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

drivers/net/wireless/mediatek/mt76/agg-rx.c +1 -0
index d44d57e6eb27..97df6b3a472b 100644

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

drivers/net/wireless/ti/wlcore/main.c +3 -1
index 2ca5658bbc2a..43c7b37dec0c 100644

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

drivers/net/wireless/ti/wlcore/tx.c +1 -0
index b6e19c2d66b0..250bcbf4ea2f 100644

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

drivers/nvme/host/core.c +7 -5
index 0d60f2f8f3ee..33dad9774da0 100644

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

drivers/nvme/host/multipath.c +9 -12
index 2e63c1106030..e71075338ff5 100644

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

drivers/nvme/host/nvme.h +17 -2
index cc4273f11989..9c2e7a151e40 100644

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

drivers/nvme/target/rdma.c +18 -12
index 08f997a390d5..cfd26437aeae 100644

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

drivers/pci/controller/pci-tegra.c +1 -2
index 6f86583605a4..097c02197ec8 100644

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

drivers/pci/hotplug/pciehp_hpc.c +20 -6
index 07940d1d83b7..005817e40ad3 100644

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

drivers/pci/rom.c +0 -17
index 137bf0cee897..8fc9a4e911e3 100644

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

drivers/phy/samsung/phy-s5pv210-usb2.c +4 -0
index f6f72339bbc3..bb7fdf491c1c 100644

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

drivers/power/supply/max17040_battery.c +1 -1
index 33c40f79d23d..2c35c13ad546 100644

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

drivers/rapidio/devices/rio_mport_cdev.c +7 -7
index 5940780648e0..f36a8a5261a1 100644

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

drivers/rtc/rtc-ds1374.c +9 -6
index 38a2e9e684df..77a106e90124 100644

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

drivers/rtc/rtc-sa1100.c +10 -8
index 304d905cb23f..56f625371735 100644

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

drivers/s390/block/dasd_fba.c +8 -1
index 56007a3e7f11..fab09455ba94 100644

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

drivers/s390/crypto/zcrypt_api.c +2 -1
index 23c24a699cef..b7cb897cd83e 100644

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

drivers/scsi/aacraid/aachba.c +4 -4
index 6e356325d8d9..54717fb84a54 100644

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

drivers/scsi/aacraid/commsup.c +1 -1
index b7588de4484e..4cb6ee6e1212 100644

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

drivers/scsi/aacraid/linit.c +33 -13

46 lines not on this page · raw message

drivers/scsi/cxlflash/main.c +1 -0
index f987c40c47a1..443813feaef4 100644

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

drivers/scsi/fnic/fnic_scsi.c +2 -1
index 73ffc16ec022..b521fc7650cb 100644

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

drivers/scsi/hpsa.c +57 -23

80 lines not on this page · raw message

drivers/scsi/libfc/fc_rport.c +8 -5
index 90a748551ede..2b3239765c24 100644

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

drivers/scsi/lpfc/lpfc_attr.c +18 -17
index fe084d47ed9e..3447d19d4147 100644

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

drivers/scsi/lpfc/lpfc_ct.c +69 -68

137 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_hw.h +16 -20
index 009aa0eee040..48d4d576d588 100644

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

drivers/scsi/lpfc/lpfc_sli.c +4 -0
index a56a939792ac..2ab351260e81 100644

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

drivers/scsi/pm8001/pm8001_sas.c +37 -13

50 lines not on this page · raw message

drivers/scsi/qedi/qedi_iscsi.c +3 -0
index 751941a3ed30..aa451c8b49e5 100644

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

drivers/scsi/ufs/ufshcd.c +7 -7
index eb10a5cacd90..b2cbdd01ab10 100644

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

drivers/staging/media/imx/imx-media-capture.c +1 -1
index 256039ce561e..81a3370551db 100644

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

drivers/staging/rtl8188eu/core/rtw_recv.c +6 -13
index 17b4b9257b49..0ddf41b5a734 100644

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

drivers/thermal/rcar_thermal.c +4 -2
index 4dc30e7890f6..140386d7c75a 100644

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

drivers/tty/serial/8250/8250_omap.c +5 -3
index a019286f8bb6..cbd006fb7fbb 100644

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

drivers/tty/serial/8250/8250_port.c +15 -1
index 09f0dc3b967b..60ca19eca1f6 100644

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

drivers/tty/serial/samsung.c +4 -4
index fcb89bf2524d..1528a7ba2bf4 100644

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

drivers/tty/serial/xilinx_uartps.c +8 -0
index 31950a38f0fb..23f9b0cdff08 100644

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

drivers/tty/vcc.c +1 -0
index 58b454c34560..10a832a2135e 100644

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

drivers/usb/dwc3/gadget.c +1 -1
index 7bf2573dd459..37cc3fd7c3ca 100644

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

drivers/usb/host/ehci-mv.c +3 -5
index de764459e05a..9d93e7441bbc 100644

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

drivers/vfio/pci/vfio_pci.c +13 -0
index 9f72a6ee13b5..58e7336b2748 100644

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

fs/block_dev.c +10 -0
index 8ac8f7469354..9f3faac49025 100644

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

fs/btrfs/extent-tree.c +0 -2
index 319a89d4d073..ce5e0f6c6af4 100644

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

fs/btrfs/inode.c +10 -13
index bdfe159a60da..64d459ca76d0 100644

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

fs/ceph/caps.c +13 -1
index a2d4eed27f80..c0dbf8b7762b 100644

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

fs/ceph/inode.c +4 -1
index 1e438e0faf77..3c24fb77ef32 100644

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

fs/cifs/cifsglob.h +6 -3
index 71c2dd0c7f03..2c632793c88c 100644

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

fs/cifs/file.c +14 -7
index 128cbd69911b..5cb15649adb0 100644

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

fs/cifs/misc.c +3 -14
index e45f8e321371..dd67f56ea61e 100644

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

fs/cifs/smb1ops.c +3 -5
index c7f0c8566442..0b7f92451284 100644

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

fs/cifs/smb2misc.c +7 -25
index 2fc96f7923ee..7d875a47d022 100644

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

fs/cifs/smb2ops.c +30 -14

44 lines not on this page · raw message

fs/cifs/smb2pdu.h +1 -1
index 308c682fa4d3..44501f8cbd75 100644

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

fs/dcache.c +3 -1
index 6e0022326afe..20370a0997bf 100644

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

fs/ext4/inode.c +1 -1
index cd833f4e64ef..52be4c965024 100644

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

fs/ext4/mballoc.c +9 -2
index 8dd54a8a0361..054cfdd007d6 100644

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

fs/fuse/dev.c +0 -1
index 01e6ea11822b..c51c9a6881e4 100644

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

fs/gfs2/inode.c +7 -6
index d968b5c5df21..a52b8b0dceeb 100644

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

fs/nfs/pagelist.c +45 -22

67 lines not on this page · raw message

fs/nfs/write.c +8 -2
index 63d20308a9bb..d419d89b91f7 100644

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

fs/nfsd/nfs4state.c +43 -30

73 lines not on this page · raw message

fs/ubifs/io.c +14 -2
index 099bec94b820..fab29f899f91 100644

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

fs/xfs/libxfs/xfs_attr_leaf.c +3 -1
index bd37f4a292c3..efb586ea508b 100644

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

fs/xfs/libxfs/xfs_dir2_node.c +1 -0
index f1bb3434f51c..01e99806b941 100644

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

fs/xfs/libxfs/xfs_trans_resv.c +77 -19

96 lines not on this page · raw message

fs/xfs/scrub/dir.c +3 -0
index cd3e4d768a18..33dfcba72c7a 100644

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

include/linux/debugfs.h +3 -2
index 3b0ba54cc4d5..3bc1034c57e6 100644

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

include/linux/libata.h +7 -6
index afc1d72161ba..3d076aca7ac2 100644

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

include/linux/mmc/card.h +1 -1
index 8ef330027b13..3f8e84a80b4a 100644

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

include/linux/nfs_page.h +2 -0
index ad69430fd0eb..5162fc1533c2 100644

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

include/linux/pci.h +0 -1
index 2517492dd185..2fda9893962d 100644

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

include/linux/seqlock.h +9 -2
index bcf4cf26b8c8..a42a29952889 100644

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

include/linux/skbuff.h +13 -1
index cbc0294f3989..703ce71caeac 100644

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

include/net/sock.h +2 -2
index 77f36257cac9..bc752237dff3 100644

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

include/trace/events/sctp.h +0 -9
index 7475c7be165a..d4aac3436595 100644

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

kernel/audit_watch.c +0 -2
index 4f7262eba73d..50952d6d8120 100644

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

kernel/bpf/hashtab.c +0 -8
index 1b28fb006763..3f3ed33bd2fd 100644

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

kernel/bpf/inode.c +3 -1
index c04815bb15cc..11fade89c1f3 100644

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

kernel/kprobes.c +17 -5
index 230d9d599b5a..2161f519d481 100644

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

kernel/printk/printk.c +3 -0
index 3cb0e5b479ff..cf272aba362b 100644

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

kernel/sys.c +3 -1
index 096932a45046..baf60a3aa34b 100644

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

kernel/time/timekeeping.c +1 -2
index 81ee5b83c920..c66fd11d94bc 100644

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

kernel/trace/trace.c +4 -1
index 4966410bb0f4..6bf617ff0369 100644

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

kernel/trace/trace_entries.h +1 -1
index 06bb2fd9a56c..a97aad105d36 100644

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

kernel/trace/trace_events.c +2 -0
index 27726121d332..0fc06a7da87f 100644

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

kernel/trace/trace_events_hist.c +0 -1
index dbd3c97d1501..3ed2d7f7e571 100644

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

kernel/trace/trace_preemptirq.c +2 -2
index 71f553cceb3c..0e373cb0106b 100644

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

lib/string.c +24 -0
index 72125fd5b4a6..edf4907ec946 100644

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

mm/filemap.c +8 -0
index 45f1c6d73b5b..f2e777003b90 100644

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

mm/kmemleak.c +1 -1
index 5eeabece0c17..f54734abf946 100644

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

mm/memory.c +107 -14

121 lines not on this page · raw message

mm/mmap.c +2 -0
index e84fd3347a51..f875386e7acd 100644

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

mm/pagewalk.c +2 -2
index c3084ff2569d..3c0930d94a29 100644

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

mm/swap_state.c +3 -2
index 09731f4174c7..3febffe0fca4 100644

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

mm/swapfile.c +2 -2
index 0047dcaf9369..adeb49fcad23 100644

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

mm/vmscan.c +26 -19

45 lines not on this page · raw message

net/atm/lec.c +6 -0
index ad4f829193f0..5a6186b80987 100644

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

net/batman-adv/bridge_loop_avoidance.c +117 -28

145 lines not on this page · raw message

net/batman-adv/bridge_loop_avoidance.h +2 -2
index 71f95a3e4d3f..af28fdb01467 100644

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

net/batman-adv/routing.c +4 -0
index cc3ed93a6d51..98af41e3810d 100644

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

net/batman-adv/soft-interface.c +3 -3
index a2976adeeedc..6ff78080ec7f 100644

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

net/bluetooth/hci_event.c +23 -2
index 2b4a7cf03041..310622086f74 100644

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

net/bluetooth/l2cap_core.c +17 -12
index 0d84d1f820d4..c04107d44601 100644

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

net/bluetooth/l2cap_sock.c +15 -3
index a3a2cd55e23a..5572042f0453 100644

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

net/core/filter.c +2 -2
index 25a2c3186e14..557bd5cc8f94 100644

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

net/core/neighbour.c +1 -0
index bf738ec68cb5..6e890f51b7d8 100644

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

net/ipv4/route.c +1 -0
index 84de87b7eedc..3db428242b22 100644

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

net/ipv4/tcp.c +1 -1
index 616ff2970f4f..4ce3397e6fcf 100644

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

net/ipv6/ip6_fib.c +2 -5
index 05a206202e23..b924941b96a3 100644

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

net/llc/af_llc.c +1 -1
index 6ead3c39f356..bcba579e292f 100644

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

net/mac802154/tx.c +5 -3
index bcd1a5e6ebf4..2f873a0dc583 100644

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

net/openvswitch/meter.c +2 -2
index c038e021a591..5ea2471ffc03 100644

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

net/openvswitch/meter.h +1 -1
index 964ace2650f8..970557ed5b5b 100644

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

net/sctp/outqueue.c +6 -0
index 7bb8e5603298..d6e83a37a1ad 100644

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

net/sunrpc/svc_xprt.c +14 -5
index c8ee8e801edb..709c082dc905 100644

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

net/sunrpc/xprtrdma/svc_rdma_backchannel.c +1 -0
index b9827665ff35..d183d4aee822 100644

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

net/tipc/topsrv.c +3 -1
index 41f4464ac6cc..ec9a7137d267 100644

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

net/unix/af_unix.c +9 -2
index 2318e2e2748f..2020306468af 100644

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

security/selinux/hooks.c +12 -0
index 452254fd89f8..250b725f5754 100644

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

security/selinux/selinuxfs.c +1 -0
index f3a5a138a096..60b3f16bb5c7 100644

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

sound/hda/hdac_bus.c +4 -0
index 714a51721a31..ab9236e4c157 100644

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

sound/pci/asihpi/hpioctl.c +2 -2
index 7d049569012c..3f06986fbecf 100644

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

sound/pci/hda/hda_controller.c +9 -2
index fa261b27d858..8198d2e53b7d 100644

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

sound/pci/hda/patch_realtek.c +12 -1
index 9c5b3d19bfa7..24bc9e446047 100644

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

sound/soc/codecs/max98090.c +7 -1
index 89b6e187ac23..a5b0c40ee545 100644

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

sound/soc/codecs/wm8994.c +10 -0
index 01acb8da2f48..e3e069277a3f 100644

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

sound/soc/codecs/wm_hubs.c +3 -0
index fed6ea9b019f..da7fa6f5459e 100644

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

sound/soc/codecs/wm_hubs.h +1 -0
index ee339ad8514d..1433d73e09bf 100644

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

sound/soc/img/img-i2s-out.c +6 -2
index fc2d1dac6333..798ab579564c 100644

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

sound/soc/intel/boards/bytcr_rt5640.c +10 -0
index 0dcd249877c5..ec630127ef2f 100644

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

sound/soc/kirkwood/kirkwood-dma.c +1 -1
index c6a58520d377..255cc45905b8 100644

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

sound/usb/midi.c +24 -5
index 28a3ad8b1d74..137e1e8718d6 100644

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

sound/usb/mixer.c +10 -0
index 45bd3d54be54..451b8ea383c6 100644

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

sound/usb/quirks.c +4 -3
index 8d9117312e30..e6dea1c7112b 100644

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

tools/gpio/gpio-hammer.c +16 -1
index 4bcb234c0fca..3da5462a0c7d 100644

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

tools/objtool/check.c +1 -1
index fd3071d83dea..c0ab27368a34 100644

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

tools/perf/builtin-stat.c +1 -1
index 6aae10ff954c..adabe9d4dc86 100644

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

tools/perf/pmu-events/jevents.c +9 -6
index c17e59404171..6631970f9683 100644

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

tools/perf/tests/shell/lib/probe_vfs_getname.sh +1 -1
index 7cb99b433888..c2cc42daf924 100644

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

tools/perf/trace/beauty/arch_errno_names.sh +1 -1
index 22c9fc900c84..f8c44a85650b 100755

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

tools/perf/util/cpumap.c +5 -5
index f93846edc1e0..827d844f4efb 100644

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

tools/perf/util/evsel.c +3 -0
index 4fad92213609..11a2aa80802d 100644

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

tools/perf/util/mem2node.c +2 -1
index c6fd81c02586..81c5a2e438b7 100644

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

tools/perf/util/metricgroup.c +3 -0
index 8b3dafe3fac3..6dcc6e1182a5 100644

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

tools/perf/util/parse-events.c +4 -5
index 95043cae5774..0eff0c3ba9ee 100644

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

tools/perf/util/sort.c +1 -1
index 46daa22b86e3..85ff4f68adc0 100644

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

tools/perf/util/symbol-elf.c +7 -0
index a701a8a48f00..166c621e0223 100644

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

tools/power/x86/intel_pstate_tracer/intel_pstate_tracer.py +11 -11
index 2fa3c5757bcb..dbed3d213bf1 100755

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

tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc +1 -1
index 27a54a17da65..f4e92afab14b 100644

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

tools/testing/selftests/x86/syscall_nt.c +1 -0
index 43fcab367fb0..74e6b3fc2d09 100644

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

virt/kvm/arm/mmio.c +1 -1
index 878e0edb2e1b..ff0a1c608371 100644

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

virt/kvm/arm/mmu.c +4 -1
index 41d6285c3da9..787f7329d1b7 100644

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

virt/kvm/arm/vgic/vgic-init.c +1 -0
index cd75df25fe14..2fc1777da50d 100644

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

virt/kvm/arm/vgic/vgic-its.c +9 -2
index 9295addea7ec..f139b1c62ca3 100644

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

virt/kvm/kvm_main.c +1 -0
index 6bd01d12df2e..9312c7e750ed 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.