Linux 4.19.149
Greg Kroah-Hartman
maintainerI'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
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/sound/wm8994.txt +12 -6
@@ -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 = <®ulator>; AVDD2-supply = <®ulator>; CPVDD-supply = <®ulator>; - DBVDD1-supply = <®ulator>; - DBVDD2-supply = <®ulator>; - DBVDD3-supply = <®ulator>; + DBVDD-supply = <®ulator>; + DCVDD-supply = <®ulator>; SPKVDD1-supply = <®ulator>; SPKVDD2-supply = <®ulator>; };
Documentation/driver-api/libata.rst +1 -1
@@ -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
@@ -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
@@ -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
@@ -115,6 +115,8 @@ static int save_trace(struct stackframe *frame, void *d)return 0 ; regs = (struct pt_regs *)frame->sp; +if ((unsigned long )®s[1 ] >ALIGN (frame->sp,THREAD_SIZE )) +return 0 ; trace->entries[trace->nr_entries++] = regs->ARM_pc;
arch/arm/kernel/traps.c +4 -2
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -155,7 +155,7 @@ static int pdc_sata_scr_write(struct ata_link *link, unsigned int sc_reg, u32 vastatic 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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, ®, 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 ) {
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/net/ethernet/intel/e1000/e1000_main.c +14 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_sriov.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ar5523/ar5523.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath10k/debug.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath10k/sdio.c +14 -4
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
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/agg-rx.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/power/supply/max17040_battery.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/rapidio/devices/rio_mport_cdev.c +7 -7
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/hpsa.c +57 -23
80 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_ct.c +69 -68
137 lines not on this page · raw message
drivers/scsi/pm8001/pm8001_sas.c +37 -13
50 lines not on this page · raw message
drivers/staging/media/imx/imx-media-capture.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8188eu/core/rtw_recv.c +6 -13
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/nfs/pagelist.c +45 -22
67 lines not on this page · raw message
fs/nfsd/nfs4state.c +43 -30
73 lines not on this page · raw message
fs/xfs/libxfs/xfs_trans_resv.c +77 -19
96 lines not on this page · raw message
mm/memory.c +107 -14
121 lines not on this page · raw message
mm/vmscan.c +26 -19
45 lines not on this page · raw message
net/batman-adv/bridge_loop_avoidance.c +117 -28
145 lines not on this page · raw message
net/sunrpc/xprtrdma/svc_rdma_backchannel.c +1 -0
Lines of this file are not shown. View the raw message.
tools/perf/tests/shell/lib/probe_vfs_getname.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/perf/trace/beauty/arch_errno_names.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/power/x86/intel_pstate_tracer/intel_pstate_tracer.py +11 -11
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/x86/syscall_nt.c +1 -0
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.