Linux 4.19.103
Greg KH
maintainerI'm announcing the release of the 4.19.103 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
------------
Makefile | 2 arch/arm/include/asm/kvm_emulate.h | 22 arch/arm/include/asm/kvm_mmio.h | 2 arch/arm/mach-tegra/sleep-tegra30.S | 11 arch/arm64/include/asm/kvm_emulate.h | 37 arch/arm64/include/asm/kvm_mmio.h | 6 arch/arm64/include/asm/ptrace.h | 1 arch/arm64/include/uapi/asm/ptrace.h | 1 arch/arm64/kvm/inject_fault.c | 70 arch/mips/Makefile.postlink | 2 arch/mips/boot/Makefile | 2 arch/powerpc/Kconfig | 1 arch/powerpc/boot/4xx.c | 2 arch/powerpc/kvm/book3s_hv.c | 4 arch/powerpc/kvm/book3s_pr.c | 4 arch/powerpc/platforms/pseries/hotplug-memory.c | 4 arch/powerpc/xmon/xmon.c | 9 arch/s390/include/asm/page.h | 2 arch/s390/kvm/kvm-s390.c | 6 arch/s390/mm/hugetlbpage.c | 100 arch/sparc/include/uapi/asm/ipcbuf.h | 22 arch/x86/include/asm/apic.h | 8 arch/x86/include/asm/kvm_host.h | 8 arch/x86/kernel/apic/msi.c | 128 arch/x86/kernel/cpu/tsx.c | 13 arch/x86/kvm/emulate.c | 27 arch/x86/kvm/hyperv.c | 10 arch/x86/kvm/i8259.c | 6 arch/x86/kvm/ioapic.c | 15 arch/x86/kvm/lapic.c | 13 arch/x86/kvm/mmu.c | 78 arch/x86/kvm/mmutrace.h | 12 arch/x86/kvm/mtrr.c | 8 arch/x86/kvm/paging_tmpl.h | 25 arch/x86/kvm/pmu.h | 18 arch/x86/kvm/pmu_intel.c | 24 arch/x86/kvm/vmx.c | 4 arch/x86/kvm/vmx/vmx.c | 8033 ++++++++++++++ arch/x86/kvm/x86.c | 101 arch/x86/kvm/x86.h | 2 crypto/algapi.c | 22 crypto/api.c | 3 crypto/internal.h | 1 crypto/pcrypt.c | 1 drivers/acpi/battery.c | 75 drivers/acpi/video_detect.c | 13 drivers/base/power/main.c | 42 drivers/clk/tegra/clk-tegra-periph.c | 6 drivers/crypto/atmel-aes.c | 37 drivers/crypto/ccp/ccp-dev-v3.c | 1 drivers/crypto/ccree/cc_driver.h | 1 drivers/crypto/ccree/cc_pm.c | 30 drivers/crypto/ccree/cc_request_mgr.c | 51 drivers/crypto/ccree/cc_request_mgr.h | 8 drivers/crypto/geode-aes.c | 442 drivers/crypto/geode-aes.h | 15 drivers/crypto/picoxcell_crypto.c | 15 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 13 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 8 drivers/gpu/drm/drm_dp_mst_topology.c | 12 drivers/gpu/drm/drm_rect.c | 7 drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c | 2 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 3 drivers/hv/hv_balloon.c | 13 drivers/infiniband/core/umem_odp.c | 2 drivers/infiniband/hw/mlx5/gsi.c | 3 drivers/md/bcache/bcache.h | 3 drivers/md/bcache/request.c | 17 drivers/md/bcache/sysfs.c | 22 drivers/md/dm-crypt.c | 10 drivers/md/dm-writecache.c | 41 drivers/md/dm-zoned-metadata.c | 23 drivers/md/dm.c | 9 drivers/md/persistent-data/dm-space-map-common.c | 27 drivers/md/persistent-data/dm-space-map-common.h | 2 drivers/md/persistent-data/dm-space-map-disk.c | 6 drivers/md/persistent-data/dm-space-map-metadata.c | 5 drivers/media/rc/iguanair.c | 2 drivers/media/rc/rc-main.c | 27 drivers/media/usb/uvc/uvc_driver.c | 12 drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 148 drivers/media/v4l2-core/videobuf-dma-sg.c | 5 drivers/mfd/axp20x.c | 2 drivers/mfd/da9062-core.c | 2 drivers/mfd/dln2.c | 13 drivers/mfd/rn5t618.c | 1 drivers/mmc/host/mmc_spi.c | 11 drivers/mmc/host/sdhci-of-at91.c | 9 drivers/mtd/ubi/fastmap.c | 23 drivers/net/bonding/bond_alb.c | 44 drivers/net/dsa/b53/b53_common.c | 2 drivers/net/dsa/bcm_sf2.c | 4 drivers/net/ethernet/broadcom/bcmsysport.c | 3 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 drivers/net/ethernet/cadence/macb_main.c | 14 drivers/net/ethernet/dec/tulip/dmfe.c | 7 drivers/net/ethernet/dec/tulip/uli526x.c | 4 drivers/net/ethernet/marvell/mvneta.c | 27 drivers/net/ethernet/mellanox/mlx5/core/fpga/ipsec.c | 3 drivers/net/ethernet/smsc/smc911x.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 drivers/net/gtp.c | 4 drivers/net/ppp/ppp_async.c | 18 drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 1 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 10 drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 1 drivers/nfc/pn544/pn544.c | 2 drivers/of/Kconfig | 4 drivers/of/address.c | 6 drivers/pci/controller/dwc/pci-keystone-dw.c | 2 drivers/pci/controller/pci-tegra.c | 2 drivers/phy/qualcomm/phy-qcom-apq8064-sata.c | 2 drivers/platform/x86/intel_scu_ipc.c | 21 drivers/power/supply/ltc2941-battery-gauge.c | 2 drivers/scsi/csiostor/csio_scsi.c | 2 drivers/scsi/qla2xxx/qla_dbg.c | 6 drivers/scsi/qla2xxx/qla_dbg.h | 6 drivers/scsi/qla2xxx/qla_isr.c | 12 drivers/scsi/qla2xxx/qla_mbx.c | 3 drivers/scsi/qla2xxx/qla_nx.c | 7 drivers/scsi/qla4xxx/ql4_os.c | 2 drivers/scsi/ufs/ufshcd.c | 3 drivers/usb/gadget/function/f_ecm.c | 16 drivers/usb/gadget/function/f_ncm.c | 17 drivers/usb/gadget/legacy/cdc2.c | 2 drivers/usb/gadget/legacy/g_ffs.c | 2 drivers/usb/gadget/legacy/multi.c | 2 drivers/usb/gadget/legacy/ncm.c | 2 drivers/usb/typec/tcpci.c | 6 drivers/watchdog/watchdog_core.c | 35 drivers/watchdog/watchdog_dev.c | 36 drivers/xen/xen-balloon.c | 2 fs/aio.c | 20 fs/btrfs/ctree.c | 8 fs/btrfs/ctree.h | 6 fs/btrfs/delayed-ref.c | 8 fs/btrfs/disk-io.c | 22 fs/btrfs/extent_io.c | 8 fs/btrfs/tests/btrfs-tests.c | 1 fs/btrfs/transaction.c | 8 fs/btrfs/tree-log.c | 388 fs/cifs/smb2pdu.c | 14 fs/eventfd.c | 15 fs/ext2/super.c | 6 fs/ext4/page-io.c | 19 fs/f2fs/super.c | 14 fs/gfs2/file.c | 72 fs/jbd2/journal.c | 1 fs/nfs/dir.c | 47 fs/nfsd/nfs4layouts.c | 2 fs/nfsd/nfs4state.c | 2 fs/nfsd/state.h | 2 fs/nfsd/vfs.c | 1 fs/ocfs2/file.c | 14 fs/overlayfs/file.c | 2 fs/overlayfs/readdir.c | 8 fs/ubifs/dir.c | 2 fs/ubifs/file.c | 4 fs/ubifs/ioctl.c | 11 fs/udf/super.c | 1 include/linux/eventfd.h | 14 include/linux/irq.h | 18 include/linux/irqdomain.h | 7 include/linux/kvm_host.h | 8 include/linux/memblock.h | 15 include/linux/percpu-defs.h | 3 include/media/v4l2-rect.h | 8 include/net/ipx.h | 5 ipc/msg.c | 19 kernel/events/core.c | 10 kernel/irq/debugfs.c | 1 kernel/irq/irqdomain.c | 1 kernel/irq/msi.c | 5 kernel/module.c | 2 kernel/padata.c | 46 kernel/printk/printk.c | 4 kernel/rcu/tree_plugin.h | 11 kernel/time/alarmtimer.c | 8 kernel/time/clocksource.c | 11 kernel/trace/ftrace.c | 15 kernel/trace/trace.h | 29 kernel/trace/trace_sched_switch.c | 4 lib/test_kasan.c | 1 mm/memory_hotplug.c | 9 mm/migrate.c | 25 mm/page_alloc.c | 64 net/hsr/hsr_slave.c | 2 net/ipv4/tcp.c | 6 net/l2tp/l2tp_core.c | 7 net/rxrpc/af_rxrpc.c | 2 net/rxrpc/ar-internal.h | 11 net/rxrpc/call_object.c | 4 net/rxrpc/conn_client.c | 3 net/rxrpc/conn_event.c | 31 net/rxrpc/conn_object.c | 3 net/rxrpc/input.c | 6 net/rxrpc/local_object.c | 23 net/rxrpc/output.c | 27 net/rxrpc/peer_event.c | 42 net/sched/cls_rsvp.h | 6 net/sched/cls_tcindex.c | 43 net/sunrpc/auth_gss/svcauth_gss.c | 4 samples/bpf/Makefile | 2 scripts/find-unused-docs.sh | 2 sound/drivers/dummy.c | 2 sound/pci/hda/hda_intel.c | 2 sound/usb/validate.c | 6 tools/kvm/kvm_stat/kvm_stat | 8 virt/kvm/arm/aarch32.c | 117 virt/kvm/arm/mmio.c | 6 virt/kvm/async_pf.c | 10 virt/kvm/kvm_main.c | 4 213 files changed, 10302 insertions(+), 1569 deletions(-)
Alexander Lobakin (2):
MIPS: fix indentation of the 'RELOCS' message
MIPS: boot: fix typo in 'vmlinux.lzma.its' target
Amir Goldstein (1):
ovl: fix wrong WARN_ON() in ovl_cache_update_ino()
Amol Grover (2):
tracing: Annotate ftrace_graph_hash pointer with __rcu
tracing: Annotate ftrace_graph_notrace_hash pointer with __rcu
Anand Jain (1):
btrfs: use bool argument in free_root_pointers()
Andreas Gruenbacher (1):
gfs2: fix O_SYNC write handling
Andreas Kemnade (1):
mfd: rn5t618: Mark ADC control register volatile
Ard Biesheuvel (1):
crypto: ccp - set max RSA modulus size for v3 platform devices as well
Arnd Bergmann (4):
sparc32: fix struct ipc64_perm type definition
media: v4l2-core: compat: ignore native command codes
nfsd: fix delay timer on 32-bit architectures
nfsd: fix jiffies/time_t mixup in LRU list
Arun Easi (1):
scsi: qla2xxx: Fix unbound NVME response length
Asutosh Das (1):
scsi: ufs: Recheck bkops level if bkops is disabled
Bart Van Assche (1):
scsi: qla2xxx: Fix the endianness of the qla82xx_get_fw_size() return type
Boris Ostrovsky (1):
x86/kvm: Be careful not to clear KVM_VCPU_FLUSH_TLB bit
Brian Norris (1):
mwifiex: fix unbalanced locking in mwifiex_process_country_ie()
Bryan O'Donoghue (2):
usb: gadget: f_ncm: Use atomic_t to track in-flight request
usb: gadget: f_ecm: Use atomic_t to track in-flight request
Chengguang Xu (3):
f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project()
f2fs: fix miscounted block limit in f2fs_statfs_project()
f2fs: code cleanup for f2fs_statfs_project()
Christian Borntraeger (1):
KVM: s390: do not clobber registers during guest reset/store status
Christoffer Dall (1):
KVM: arm64: Only sign-extend MMIO up to register width
Christoph Hellwig (1):
gfs2: move setting current->backing_dev_info
Chuhong Yuan (1):
crypto: picoxcell - adjust the position of tasklet_init and fix missed tasklet_kill
Claudiu Beznea (1):
drm: atmel-hlcdc: enable clock before configuring timing engine
Coly Li (1):
bcache: add readahead cache policy options via sysfs interface
Cong Wang (2):
net_sched: fix an OOB access in cls_tcindex
net_sched: fix a resource leak in tcindex_set_parms()
Dan Carpenter (1):
ubi: Fix an error pointer dereference in error handling code
Dan Williams (1):
mm/memory_hotplug: fix remove_memory() lockdep splat
David Engraf (1):
PCI: tegra: Fix return value check of pm_runtime_get_sync()
David Hildenbrand (1):
mm/page_alloc.c: fix uninitialized memmaps on a partially populated last section
David Howells (5):
rxrpc: Fix use-after-free in rxrpc_put_local()
rxrpc: Fix insufficient receive notification generation
rxrpc: Fix missing active use pinning of rxrpc_local object
rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect
rxrpc: Fix service call disconnection
Dmitry Fomichev (1):
dm zoned: support zone sizes smaller than 128MiB
Erdem Aktas (1):
percpu: Separate decrypted varaibles anytime encryption can be enabled
Eric Biggers (4):
ubifs: don't trigger assertion on invalid no-key filename
ubifs: Fix FS_IOC_SETFLAGS unexpectedly clearing encrypt flag
crypto: geode-aes - convert to skcipher API and make thread-safe
ext4: fix deadlock allocating crypto bounce page from mempool
Eric Dumazet (8):
cls_rsvp: fix rsvp_policy
net: hsr: fix possible NULL deref in hsr_handle_frame()
tcp: clear tp->total_retrans in tcp_disconnect()
tcp: clear tp->delivered in tcp_disconnect()
tcp: clear tp->data_segs{in|out} in tcp_disconnect()
tcp: clear tp->segs_{in|out} in tcp_disconnect()
rcu: Avoid data-race in rcu_gp_fqs_check_wake() bonding/alb: properly access headers in bond_alb_xmit()
Filipe Manana (2):
Btrfs: fix missing hole after hole punching and fsync when using NO_HOLES
Btrfs: fix race between adding and putting tree mod seq elements and nodes
Florian Fainelli (3):
net: dsa: bcm_sf2: Only 7278 supports 2Gb/sec IMP port
net: systemport: Avoid RBUF stuck in Wake-on-LAN mode
net: dsa: b53: Always use dev->vlan_enabled in b53_configure_vlan()
Gang He (1):
ocfs2: fix oops when writing cloned file
Gavin Shan (1):
tools/kvm_stat: Fix kvm_exit filter name
Geert Uytterhoeven (1):
scripts/find-unused-docs: Fix massive false positives
Gerald Schaefer (1):
s390/mm: fix dynamic pagetable upgrade for hugetlbfs
Gilad Ben-Yossef (3):
crypto: ccree - fix backlog memory leak
crypto: ccree - fix pm wrongful error reporting
crypto: ccree - fix PM race condition
Greg Kroah-Hartman (1):
Linux 4.19.103
Gustavo A. R. Silva (1):
lib/test_kasan.c: fix memory leak in kmalloc_oob_krealloc_more()
Hans de Goede (5):
ALSA: hda: Add Clevo W65_67SB the power_save blacklist
ACPI: video: Do not export a non working backlight interface on MSI MS-7721 boards ACPI / battery: Deal with design or full capacity being reported as -1 ACPI / battery: Use design-cap for capacity calculations if full-cap is not available ACPI / battery: Deal better with neither design nor full capacity not being reported
Harini Katakam (2):
net: macb: Remove unnecessary alignment check for TSO
net: macb: Limit maximum GEM TX length in TSO
Helen Koike (1):
media: v4l2-rect.h: fix v4l2_rect_map_inside() top/left adjustments
Herbert Xu (4):
crypto: api - Check spawn->alg under lock in crypto_drop_spawn
padata: Remove broken queue flushing
crypto: pcrypt - Do not clear MAY_SLEEP flag in original request
crypto: api - Fix race condition in crypto_spawn_alg
Hou Tao (1):
ubifs: Reject unsupported ioctl flags explicitly
Icenowy Zheng (1):
Revert "drm/sun4i: dsi: Change the start delay calculation"
Jan Kara (1):
udf: Allow writing to 'Rewritable' partitions
Jens Axboe (2):
eventfd: track eventfd_signal() recursion depth
aio: prevent potential eventfd recursion on poll
Joe Thornber (1):
dm space map common: fix to ensure new block isn't already in use
Johan Hovold (1):
media: iguanair: fix endpoint sanity check
John Hubbard (1):
media/v4l2-core: set pages dirty upon releasing DMA buffers
John Ogness (1):
printk: fix exclusive_console replaying
Josef Bacik (3):
btrfs: set trans->drity in btrfs_commit_transaction
btrfs: free block groups after free'ing fs trees
btrfs: flush write bio if we loop in extent_write_cache_pages
Juergen Gross (1):
xen/balloon: Support xend-based toolstack take two
Jun Li (1):
usb: typec: tcpci: mask event interrupts when remove driver
Kevin Hao (1):
irqdomain: Fix a memory leak in irq_domain_push_irq()
Konstantin Khlebnikov (1):
clocksource: Prevent double add_timer_on() for watchdog_timer
Linus Walleij (1):
mmc: spi: Toggle SPI polarity, do not hardcode it
Lorenzo Bianconi (1):
net: mvneta: move rx_dropped and rx_errors in per-cpu stats
Lu Shuaibing (1):
ipc/msg.c: consolidate all xxxctl_down() functions
Luca Coelho (2):
iwlwifi: mvm: fix NVM check for 3168 devices
iwlwifi: don't throw error when trying to remove IGTK
Lyude Paul (1):
drm/amd/dm/mst: Ignore payload update failures
Marco Felsch (1):
mfd: da9062: Fix watchdog compatible string
Marios Pomonis (12):
KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks
KVM: x86: Refactor prefix decoding to prevent Spectre-v1/L1TF attacks
KVM: x86: Protect pmu_intel.c from Spectre-v1/L1TF attacks
KVM: x86: Protect DR-based index computations from Spectre-v1/L1TF attacks
KVM: x86: Protect kvm_lapic_reg_write() from Spectre-v1/L1TF attacks
KVM: x86: Protect kvm_hv_msr_[get|set]_crash_data() from Spectre-v1/L1TF attacks
KVM: x86: Protect ioapic_write_indirect() from Spectre-v1/L1TF attacks
KVM: x86: Protect MSR-based index computations in pmu.h from Spectre-v1/L1TF attacks
KVM: x86: Protect ioapic_read_indirect() from Spectre-v1/L1TF attacks
KVM: x86: Protect MSR-based index computations from Spectre-v1/L1TF attacks in x86.c
KVM: x86: Protect x86_decode_insn from Spectre-v1/L1TF attacks
KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks
Mark Rutland (3):
KVM: arm64: Correct PSTATE on exception entry
KVM: arm/arm64: Correct CPSR on exception entry
KVM: arm/arm64: Correct AArch32 SPSR on exception entry
Mathieu Desnoyers (1):
tracing: Fix sched switch start/stop refcount racy updates
Miaohe Lin (1):
KVM: nVMX: vmread should not set rflags to specify success in case of #PF
Michael Chan (1):
bnxt_en: Fix TC queue mapping.
Michael Ellerman (1):
of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc
Michał Mirosław (1):
mmc: sdhci-of-at91: fix memleak on clk_get failure
Mika Westerberg (1):
platform/x86: intel_scu_ipc: Fix interrupt support
Mike Snitzer (1):
dm: fix potential for q->make_request_fn NULL pointer
Miklos Szeredi (1):
ovl: fix lseek overflow on 32bit
Mikulas Patocka (1):
dm writecache: fix incorrect flush sequence when doing SSD mode commit
Milan Broz (1):
dm crypt: fix benbi IV constructor crash if used in authenticated mode
Naoya Horiguchi (1):
mm: zero remaining unavailable struct pages
Nathan Chancellor (10):
scsi: csiostor: Adjust indentation in csio_device_reset
scsi: qla4xxx: Adjust indentation in qla4xxx_mem_free
phy: qualcomm: Adjust indentation in read_poll_timeout
ext2: Adjust indentation in ext2_fill_super powerpc/44x: Adjust indentation in ibm4xx_denali_fixup_memsize
drm: msm: mdp4: Adjust indentation in mdp4_dsi_encoder_enable
NFC: pn544: Adjust indentation in pn544_hci_check_presence
ppp: Adjust indentation into ppp_async_input
net: smc911x: Adjust indentation in smc911x_phy_configure
net: tulip: Adjust indentation in {dmfe, uli526x}_init_module
Navid Emamdoost (1):
brcmfmac: Fix memory leak in brcmf_usbdev_qinit
Nicolin Chen (1):
net: stmmac: Delete txtimer in suspend()
Oliver Neukum (1):
mfd: dln2: More sanity checking for endpoints
Pavel Tatashin (1):
mm: return zero_resv_unavail optimization
Pawan Gupta (1):
x86/cpu: Update cached HLE state on write to TSX_CTRL_CPUID_CLEAR
Pingfan Liu (1):
powerpc/pseries: Advance pfn if section is not present in lmb_is_removable()
Prabhath Sajeepa (1):
IB/mlx5: Fix outstanding_pi index for GSI qps
Quinn Tran (1):
scsi: qla2xxx: Fix mtcp dump collection failure
Raed Salem (2):
net/mlx5: IPsec, Fix esp modify function attribute net/mlx5: IPsec, fix memory leak at mlx5_fpga_ipsec_delete_sa_ctx
Rafael J. Wysocki (1):
PM: core: Fix handling of devices deleted during system-wide resume
Ridge Kennedy (1):
l2tp: Allow duplicate session creation with UDP
Roberto Bergantinos Corpas (1):
sunrpc: expiry_time should be seconds not timeval
Roger Quadros (1):
usb: gadget: legacy: set max_speed to super-speed
Ronnie Sahlberg (1):
cifs: fail i/o on soft mounts if sessionsetup errors out
Samuel Holland (1):
mfd: axp20x: Mark AXP20X_VBUS_IPSOUT_MGMT as volatile
Sascha Hauer (1):
ubi: fastmap: Fix inverted logic in seen selfcheck
Sean Christopherson (10):
KVM: x86: Fix potential put_fpu() w/o load_fpu() on MPX platform
KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails
KVM: PPC: Book3S PR: Free shared page if mmu initialization fails
KVM: x86: Don't let userspace set host-reserved cr4 bits
KVM: x86: Free wbinvd_dirty_mask if vCPU creation fails
KVM: x86/mmu: Apply max PA check for MMIO sptes to 32-bit KVM
KVM: x86: Use gpa_t for cr2/gpa to fix TDP support on 32-bit KVM
KVM: VMX: Add non-canonical check on writes to RTIT address MSRs
KVM: Use vcpu-specific gva->hva translation when querying host page size
KVM: Play nice with read-only memslots when querying host page size
Sean Young (1):
media: rc: ensure lirc is initialized before registering input device
Song Liu (1):
perf/core: Fix mlock accounting in perf_mmap()
Stephen Boyd (1):
alarmtimer: Unregister wakeup source when module get fails
Stephen Warren (2):
ARM: tegra: Enable PLLP bypass during Tegra124 LP1
clk: tegra: Mark fuse clock as critical
Steve French (1):
smb3: fix signing verification of large reads
Steven Rostedt (VMware) (2):
ftrace: Add comment to why rcu_dereference_sched() is open coded
ftrace: Protect ftrace_graph_hash with ftrace_sync
Sukadev Bhattiprolu (1):
powerpc/xmon: don't access ASDR in VMs
Sven Van Asbroeck (1):
power: supply: ltc2941-battery-gauge: fix use-after-free
Taehee Yoo (1):
gtp: use __GFP_NOWARN to avoid memalloc warning
Takashi Iwai (2):
ALSA: usb-audio: Fix endianess in descriptor validation
ALSA: dummy: Fix PCM format loop in proc output
Thomas Gleixner (1):
x86/apic/msi: Plug non-maskable MSI affinity race
Tianyu Lan (1):
hv_balloon: Balloon up according to request page number
Toke Høiland-Jørgensen (1):
samples/bpf: Don't try to remove user's homedir on clean
Trond Myklebust (3):
NFS: Fix memory leaks and corruption in readdir
NFS: Directory page cache pages need to be locked when read
nfsd: Return the correct number of bytes written to the file
Tudor Ambarus (1):
crypto: atmel-aes - Fix counter overflow in CTR mode
Vasily Averin (1):
jbd2_seq_info_next should increase position index
Ville Syrjälä (1):
drm/rect: Avoid division by zero
Vladis Dronov (1):
watchdog: fix UAF in reboot notifier handling in watchdog core code
Wayne Lin (1):
drm/dp_mst: Remove VCPI while disabling topology mgr
Will Deacon (1):
media: uvcvideo: Avoid cyclic entity chains due to malformed USB descriptors
Yang Shi (1):
mm: move_pages: report the number of non-attempted pages
Yishai Hadas (1):
IB/core: Fix ODP get user pages flow
YueHaibing (1):
kernel/module: Fix memleak in module_add_modinfo_attrs()
Yurii Monakov (1):
PCI: keystone: Fix link training retries initiation
Zhihao Cheng (1):
ubifs: Fix deadlock in concurrent bulk-read and writepage
Greg KH
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 102 +SUBLEVEL = 103 EXTRAVERSION = NAME = "People's Front"
arch/arm/include/asm/kvm_emulate.h +22 -0
@@ -26,13 +26,25 @@#include <asm/cputype.h> /* arm64 compatibility macros */ +#define PSR_AA32_MODE_FIQ FIQ_MODE +#define PSR_AA32_MODE_SVC SVC_MODE#define PSR_AA32_MODE_ABT ABT_MODE#define PSR_AA32_MODE_UND UND_MODE#define PSR_AA32_T_BIT PSR_T_BIT +#define PSR_AA32_F_BIT PSR_F_BIT#define PSR_AA32_I_BIT PSR_I_BIT#define PSR_AA32_A_BIT PSR_A_BIT#define PSR_AA32_E_BIT PSR_E_BIT#define PSR_AA32_IT_MASK PSR_IT_MASK +#define PSR_AA32_GE_MASK 0x000f0000 +#define PSR_AA32_DIT_BIT 0x00200000 +#define PSR_AA32_PAN_BIT 0x00400000 +#define PSR_AA32_SSBS_BIT 0x00800000 +#define PSR_AA32_Q_BIT PSR_Q_BIT +#define PSR_AA32_V_BIT PSR_V_BIT +#define PSR_AA32_C_BIT PSR_C_BIT +#define PSR_AA32_Z_BIT PSR_Z_BIT +#define PSR_AA32_N_BIT PSR_N_BITunsigned long *vcpu_reg (struct kvm_vcpu *vcpu,u8 reg_num);
@@ -53,6 +65,11 @@ static inline void vcpu_write_spsr(struct kvm_vcpu *vcpu, unsigned long v) *__vcpu_spsr (vcpu) = v; } +static inline unsigned long host_spsr_to_spsr32 (unsigned long spsr) +{ +return spsr; +} +static inline unsigned long vcpu_get_reg (struct kvm_vcpu *vcpu,u8 reg_num) {
@@ -189,6 +206,11 @@ static inline bool kvm_vcpu_dabt_issext(struct kvm_vcpu *vcpu)return kvm_vcpu_get_hsr (vcpu) &HSR_SSE ; } +static inline bool kvm_vcpu_dabt_issf (const struct kvm_vcpu *vcpu) +{ +return false; +} +static inline int kvm_vcpu_dabt_get_rd (struct kvm_vcpu *vcpu) {return (kvm_vcpu_get_hsr (vcpu) &HSR_SRT_MASK ) >>HSR_SRT_SHIFT ;
arch/arm/include/asm/kvm_mmio.h +2 -0
@@ -26,6 +26,8 @@struct kvm_decode {unsigned long rt;bool sign_extend; +/* Not used on 32-bit arm */ +bool sixty_four; };void kvm_mmio_write_buf (void *buf,unsigned int len,unsigned long data);
arch/arm/mach-tegra/sleep-tegra30.S +11 -0
@@ -382,6 +382,14 @@ _pll_m_c_x_done: pll_locked r1, r0, CLK_RESET_PLLC_BASE pll_locked r1, r0, CLK_RESET_PLLX_BASE + tegra_get_soc_id TEGRA_APB_MISC_BASE, r1 + cmp r1, #TEGRA30 + beq 1f + ldr r1, [r0, #CLK_RESET_PLLP_BASE] + bic r1, r1, #(1<<31) @ disable PllP bypass + str r1, [r0, #CLK_RESET_PLLP_BASE] +1: + mov32 r7, TEGRA_TMRUS_BASE ldr r1, [r7] add r1, r1, #LOCK_DELAY
@@ -641,7 +649,10 @@ tegra30_switch_cpu_to_clk32k: str r0, [r4, #PMC_PLLP_WB0_OVERRIDE] /* disable PLLP, PLLA, PLLC and PLLX */ + tegra_get_soc_id TEGRA_APB_MISC_BASE, r1 + cmp r1, #TEGRA30 ldr r0, [r5, #CLK_RESET_PLLP_BASE] + orrne r0, r0, #(1 << 31) @ enable PllP bypass on fast cluster bic r0, r0, #(1 << 30) str r0, [r5, #CLK_RESET_PLLP_BASE] ldr r0, [r5, #CLK_RESET_PLLA_BASE]
arch/arm64/include/asm/kvm_emulate.h +37 -0
@@ -202,6 +202,38 @@ static inline void vcpu_write_spsr(struct kvm_vcpu *vcpu, unsigned long v)vcpu_gp_regs (vcpu)->spsr[KVM_SPSR_EL1 ] = v; } +/* +* The layout of SPSR for an AArch32 state is different when observed from an +* AArch64 SPSR_ELx or an AArch32 SPSR_*. This function generates the AArch32 +* view given an AArch64 view. +* +* In ARM DDI 0487E.a see: +* +* - The AArch64 view (SPSR_EL2) in section C5.2.18, page C5-426 +* - The AArch32 view (SPSR_abt) in section G8.2.126, page G8-6256 +* - The AArch32 view (SPSR_und) in section G8.2.132, page G8-6280 +* +* Which show the following differences: +* +* | Bit | AA64 | AA32 | Notes | +* +-----+------+------+-----------------------------| +* | 24 | DIT | J | J is RES0 in ARMv8 | +* | 21 | SS | DIT | SS doesn't exist in AArch32 | +* +* ... and all other bits are (currently) common. +*/ +static inline unsigned long host_spsr_to_spsr32 (unsigned long spsr) +{ +const unsigned long overlap =BIT (24 ) |BIT (21 ); +unsigned long dit = !!(spsr &PSR_AA32_DIT_BIT ); + + spsr &= ~overlap; + + spsr |= dit <<21 ; + +return spsr; +} +static inline bool vcpu_mode_priv (const struct kvm_vcpu *vcpu) {u32 mode;
@@ -261,6 +293,11 @@ static inline bool kvm_vcpu_dabt_issext(const struct kvm_vcpu *vcpu)return !!(kvm_vcpu_get_hsr (vcpu) & ESR_ELx_SSE); } +static inline bool kvm_vcpu_dabt_issf (const struct kvm_vcpu *vcpu) +{ +return !!(kvm_vcpu_get_hsr (vcpu) & ESR_ELx_SF); +} +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;
arch/arm64/include/asm/kvm_mmio.h +2 -4
@@ -21,13 +21,11 @@#include <linux/kvm_host.h> #include <asm/kvm_arm.h> -/* -* This is annoying. The mmio code requires this, even if we don't -* need any decoding. To be fixed. -*/ struct kvm_decode {unsigned long rt;bool sign_extend; +/* Witdth of the register accessed by the faulting instruction is 64-bits */ +bool sixty_four; };void kvm_mmio_write_buf (void *buf,unsigned int len,unsigned long data);
arch/arm64/include/asm/ptrace.h +1 -0
@@ -50,6 +50,7 @@#define PSR_AA32_I_BIT 0x00000080#define PSR_AA32_A_BIT 0x00000100#define PSR_AA32_E_BIT 0x00000200 +#define PSR_AA32_PAN_BIT 0x00400000#define PSR_AA32_SSBS_BIT 0x00800000#define PSR_AA32_DIT_BIT 0x01000000#define PSR_AA32_Q_BIT 0x08000000
arch/arm64/include/uapi/asm/ptrace.h +1 -0
@@ -49,6 +49,7 @@#define PSR_SSBS_BIT 0x00001000#define PSR_PAN_BIT 0x00400000#define PSR_UAO_BIT 0x00800000 +#define PSR_DIT_BIT 0x01000000#define PSR_V_BIT 0x10000000#define PSR_C_BIT 0x20000000#define PSR_Z_BIT 0x40000000
arch/arm64/kvm/inject_fault.c +65 -5
94 lines not on this page · raw message
arch/mips/Makefile.postlink +1 -1
@@ -12,7 +12,7 @@ __archpost: include scripts/Kbuild.include CMD_RELOCS = arch/mips/boot/tools/relocs -quiet_cmd_relocs = RELOCS $@ +quiet_cmd_relocs = RELOCS $@ cmd_relocs = $(CMD_RELOCS) $@ # `@true` prevents complaint when there is nothing to be done
arch/mips/boot/Makefile +1 -1
@@ -123,7 +123,7 @@ $(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS targets += vmlinux.its targets += vmlinux.gz.its targets += vmlinux.bz2.its -targets += vmlinux.lzmo.its +targets += vmlinux.lzma.its targets += vmlinux.lzo.its quiet_cmd_cpp_its_S = ITS $@
arch/powerpc/Kconfig +1 -0
@@ -230,6 +230,7 @@ config PPC select NEED_SG_DMA_LENGTH select NO_BOOTMEM select OF + select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE select OF_EARLY_FLATTREE select OF_RESERVED_MEM select OLD_SIGACTION if PPC32
arch/powerpc/boot/4xx.c +1 -1
@@ -232,7 +232,7 @@ void ibm4xx_denali_fixup_memsize(void) dpath =8 ;/* 64 bits */ /* get address pins (rows) */ - val =SDRAM0_READ (DDR0_42 ); + val =SDRAM0_READ (DDR0_42 ); row =DDR_GET_VAL (val,DDR_APIN ,DDR_APIN_SHIFT );if (row > max_row)
arch/powerpc/kvm/book3s_hv.c +3 -1
@@ -2065,7 +2065,7 @@ static struct kvm_vcpu *kvmppc_core_vcpu_create_hv(struct kvm *kvm,mutex_unlock (&kvm->lock);if (!vcore) - goto free_vcpu; + goto uninit_vcpu;spin_lock (&vcore->lock); ++vcore->num_threads;
@@ -2082,6 +2082,8 @@ static struct kvm_vcpu *kvmppc_core_vcpu_create_hv(struct kvm *kvm,return vcpu; +uninit_vcpu: +kvm_vcpu_uninit (vcpu); free_vcpu:kmem_cache_free (kvm_vcpu_cache, vcpu); out:
arch/powerpc/kvm/book3s_pr.c +3 -1
@@ -1772,10 +1772,12 @@ static struct kvm_vcpu *kvmppc_core_vcpu_create_pr(struct kvm *kvm, err =kvmppc_mmu_init (vcpu);if (err <0 ) - goto uninit_vcpu; + goto free_shared_page;return vcpu; +free_shared_page: +free_page ((unsigned long )vcpu->arch.shared); uninit_vcpu:kvm_vcpu_uninit (vcpu); free_shadow_vcpu:
arch/powerpc/platforms/pseries/hotplug-memory.c +3 -1
@@ -366,8 +366,10 @@ static bool lmb_is_removable(struct drmem_lmb *lmb)for (i =0 ; i < scns_per_block; i++) { pfn =PFN_DOWN (phys_addr); -if (!pfn_present (pfn)) +if (!pfn_present (pfn)) { + phys_addr +=MIN_MEMORY_BLOCK_SIZE ;continue ; + } rc &=is_mem_section_removable (pfn,PAGES_PER_SECTION ); phys_addr +=MIN_MEMORY_BLOCK_SIZE ;
arch/powerpc/xmon/xmon.c +4 -5
@@ -1878,15 +1878,14 @@ static void dump_300_sprs(void)printf ("pidr = %.16lx tidr = %.16lx\n" ,mfspr (SPRN_PID ),mfspr (SPRN_TIDR )); -printf ("asdr = %.16lx psscr = %.16lx\n" , -mfspr (SPRN_ASDR ), hv ?mfspr (SPRN_PSSCR ) - :mfspr (SPRN_PSSCR_PR )); +printf ("psscr = %.16lx\n" , + hv ?mfspr (SPRN_PSSCR ) :mfspr (SPRN_PSSCR_PR ));if (!hv)return ; -printf ("ptcr = %.16lx\n" , -mfspr (SPRN_PTCR )); +printf ("ptcr = %.16lx asdr = %.16lx\n" , +mfspr (SPRN_PTCR ),mfspr (SPRN_ASDR ));#endif }
arch/s390/include/asm/page.h +2 -0
@@ -33,6 +33,8 @@#define ARCH_HAS_PREPARE_HUGEPAGE #define ARCH_HAS_HUGEPAGE_CLEAR_FLUSH +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA +#include <asm/setup.h> #ifndef __ASSEMBLY__
arch/s390/kvm/kvm-s390.c +2 -4
@@ -2564,9 +2564,7 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu) vcpu->arch.sie_block->gcr[14 ] =CR14_UNUSED_32 |CR14_UNUSED_33 |CR14_EXTERNAL_DAMAGE_SUBMASK ; -/* make sure the new fpc will be lazily loaded */ -save_fpu_regs (); - current->thread.fpu.fpc =0 ; + vcpu->run->s.regs.fpc =0 ; vcpu->arch.sie_block->gbea =1 ; vcpu->arch.sie_block->pp =0 ; vcpu->arch.sie_block->fpf &= ~FPF_BPBC ;
@@ -3994,7 +3992,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,switch (ioctl) {case KVM_S390_STORE_STATUS : idx =srcu_read_lock (&vcpu->kvm->srcu); - r =kvm_s390_vcpu_store_status (vcpu, arg); + r =kvm_s390_store_status_unloaded (vcpu, arg);srcu_read_unlock (&vcpu->kvm->srcu, idx);break ;case KVM_S390_SET_INITIAL_PSW : {
arch/s390/mm/hugetlbpage.c +99 -1
115 lines not on this page · raw message
arch/sparc/include/uapi/asm/ipcbuf.h +11 -11
@@ -15,19 +15,19 @@struct ipc64_perm { -__kernel_key_t key; -__kernel_uid_t uid; -__kernel_gid_t gid; -__kernel_uid_t cuid; -__kernel_gid_t cgid; +__kernel_key_t key; +__kernel_uid32_t uid; +__kernel_gid32_t gid; +__kernel_uid32_t cuid; +__kernel_gid32_t cgid;#ifndef __arch64__ -unsigned short __pad0; +unsigned short __pad0;#endif -__kernel_mode_t mode; -unsigned short __pad1; -unsigned short seq; -unsigned long long __unused1; -unsigned long long __unused2; +__kernel_mode_t mode; +unsigned short __pad1; +unsigned short seq; +unsigned long long __unused1; +unsigned long long __unused2; };#endif /* __SPARC_IPCBUF_H */
arch/x86/include/asm/apic.h +8 -0
@@ -448,6 +448,14 @@ static inline void ack_APIC_irq(void)apic_eoi (); } + +static inline bool lapic_vector_set_in_irr (unsigned int vector) +{ +u32 irr =apic_read (APIC_IRR + (vector /32 *0x10 )); + +return !!(irr & (1U << (vector %32 ))); +} +static inline unsigned default_get_apic_id (unsigned long x) {unsigned int ver =GET_APIC_VERSION (apic_read (APIC_LVR ));
arch/x86/include/asm/kvm_host.h +4 -4
@@ -350,12 +350,12 @@ struct kvm_mmu {void (*set_cr3)(struct kvm_vcpu *vcpu,unsigned long root);unsigned long (*get_cr3)(struct kvm_vcpu *vcpu);u64 (*get_pdptr)(struct kvm_vcpu *vcpu,int index); -int (*page_fault)(struct kvm_vcpu *vcpu,gva_t gva,u32 err, +int (*page_fault)(struct kvm_vcpu *vcpu,gpa_t cr2_or_gpa,u32 err,bool prefault);void (*inject_page_fault)(struct kvm_vcpu *vcpu,struct x86_exception *fault); -gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu,gva_t gva,u32 access, -struct x86_exception *exception); +gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu,gpa_t gva_or_gpa, +u32 access,struct x86_exception *exception);gpa_t (*translate_gpa)(struct kvm_vcpu *vcpu,gpa_t gpa,u32 access,struct x86_exception *exception); int (*sync_page)(struct kvm_vcpu *vcpu,
@@ -1354,7 +1354,7 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu);int kvm_emulate_hypercall (struct kvm_vcpu *vcpu); -int kvm_mmu_page_fault (struct kvm_vcpu *vcpu,gva_t gva,u64 error_code, +int kvm_mmu_page_fault (struct kvm_vcpu *vcpu,gpa_t cr2_or_gpa,u64 error_code,void *insn,int insn_len);void kvm_mmu_invlpg (struct kvm_vcpu *vcpu,gva_t gva);void kvm_mmu_invpcid_gva (struct kvm_vcpu *vcpu,gva_t gva,unsigned long pcid);
arch/x86/kernel/apic/msi.c +125 -3
153 lines not on this page · raw message
arch/x86/kernel/cpu/tsx.c +7 -6
@@ -115,11 +115,12 @@ void __init tsx_init(void)tsx_disable ();/* -* tsx_disable() will change the state of the -* RTM CPUID bit. Clear it here since it is now -* expected to be not set. +* tsx_disable() will change the state of the RTM and HLE CPUID +* bits. Clear them here since they are now expected to be not +* set. */ setup_clear_cpu_cap (X86_FEATURE_RTM ); +setup_clear_cpu_cap (X86_FEATURE_HLE ); }else if (tsx_ctrl_state ==TSX_CTRL_ENABLE ) {/*
@@ -131,10 +132,10 @@ void __init tsx_init(void)tsx_enable ();/* -* tsx_enable() will change the state of the -* RTM CPUID bit. Force it here since it is now -* expected to be set. +* tsx_enable() will change the state of the RTM and HLE CPUID +* bits. Force them here since they are now expected to be set. */ setup_force_cpu_cap (X86_FEATURE_RTM ); +setup_force_cpu_cap (X86_FEATURE_HLE ); } }
arch/x86/kvm/emulate.c +22 -5
@@ -5164,16 +5164,28 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len) ctxt->ad_bytes = def_ad_bytes ^6 ;break ;case 0x26 :/* ES override */ + has_seg_override = true; + ctxt->seg_override =VCPU_SREG_ES ; +break ;case 0x2e :/* CS override */ + has_seg_override = true; + ctxt->seg_override =VCPU_SREG_CS ; +break ;case 0x36 :/* SS override */ + has_seg_override = true; + ctxt->seg_override =VCPU_SREG_SS ; +break ;case 0x3e :/* DS override */ has_seg_override = true; - ctxt->seg_override = (ctxt->b >>3 ) &3 ; + ctxt->seg_override =VCPU_SREG_DS ;break ;case 0x64 :/* FS override */ + has_seg_override = true; + ctxt->seg_override =VCPU_SREG_FS ; +break ;case 0x65 :/* GS override */ has_seg_override = true; - ctxt->seg_override = ctxt->b &7 ; + ctxt->seg_override =VCPU_SREG_GS ;break ; case 0x40 ... 0x4f: /* REX */if (mode !=X86EMUL_MODE_PROT64 )
@@ -5257,10 +5269,15 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len) }break ;case Escape: -if (ctxt->modrm >0xbf ) - opcode = opcode.u.esc->high[ctxt->modrm -0xc0 ]; -else +if (ctxt->modrm >0xbf ) { +size_t size =ARRAY_SIZE (opcode.u.esc->high); +u32 index =array_index_nospec ( + ctxt->modrm -0xc0 , size); + + opcode = opcode.u.esc->high[index]; + }else { opcode = opcode.u.esc->op[(ctxt->modrm >>3 ) &7 ]; + }break ;case InstrDual:if ((ctxt->modrm >>6 ) ==3 )
arch/x86/kvm/hyperv.c +6 -4
@@ -792,11 +792,12 @@ static int kvm_hv_msr_get_crash_data(struct kvm_vcpu *vcpu, u32 index, u64 *pdata) { struct kvm_hv *hv = &vcpu->kvm->arch.hyperv; +size_t size =ARRAY_SIZE (hv->hv_crash_param); -if (WARN_ON_ONCE (index >=ARRAY_SIZE (hv->hv_crash_param))) +if (WARN_ON_ONCE (index >= size))return -EINVAL ; - *pdata = hv->hv_crash_param[index]; + *pdata = hv->hv_crash_param[array_index_nospec (index, size)];return 0 ; }
@@ -835,11 +836,12 @@ static int kvm_hv_msr_set_crash_data(struct kvm_vcpu *vcpu, u32 index, u64 data) {struct kvm_hv *hv = &vcpu->kvm->arch.hyperv; +size_t size =ARRAY_SIZE (hv->hv_crash_param); -if (WARN_ON_ONCE (index >=ARRAY_SIZE (hv->hv_crash_param))) +if (WARN_ON_ONCE (index >= size))return -EINVAL ; - hv->hv_crash_param[index] = data; + hv->hv_crash_param[array_index_nospec (index, size)] = data;return 0 ; }
arch/x86/kvm/i8259.c +5 -1
@@ -460,10 +460,14 @@ static int picdev_write(struct kvm_pic *s,switch (addr) {case 0x20 :case 0x21 : +pic_lock (s); +pic_ioport_write (&s->pics[0 ], addr, data); +pic_unlock (s); +break ;case 0xa0 :case 0xa1 :pic_lock (s); -pic_ioport_write (&s->pics[addr >>7 ], addr, data); +pic_ioport_write (&s->pics[1 ], addr, data);pic_unlock (s);break ;case 0x4d0 :
arch/x86/kvm/ioapic.c +9 -6
@@ -36,6 +36,7 @@#include <linux/io.h> #include <linux/slab.h> #include <linux/export.h> +#include <linux/nospec.h> #include <asm/processor.h> #include <asm/page.h> #include <asm/current.h>
@@ -73,13 +74,14 @@ static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic,default : {u32 redir_index = (ioapic->ioregsel -0x10 ) >>1 ; -u64 redir_content; +u64 redir_content = ~0ULL ; -if (redir_index <IOAPIC_NUM_PINS ) - redir_content = - ioapic->redirtbl[redir_index].bits; -else - redir_content = ~0ULL ; +if (redir_index <IOAPIC_NUM_PINS ) { +u32 index =array_index_nospec ( + redir_index,IOAPIC_NUM_PINS ); + + redir_content = ioapic->redirtbl[index].bits; + } result = (ioapic->ioregsel &0x1 ) ? (redir_content >> 32) & 0xffffffff :
@@ -297,6 +299,7 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)ioapic_debug ("change redir index %x val %x\n" , index, val);if (index >=IOAPIC_NUM_PINS )return ; + index =array_index_nospec (index,IOAPIC_NUM_PINS ); e = &ioapic->redirtbl[index]; mask_before = e->fields.mask;/* Preserve read-only fields */
arch/x86/kvm/lapic.c +9 -4
@@ -1862,15 +1862,20 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val)case APIC_LVTTHMR :case APIC_LVTPC :case APIC_LVT1 : -case APIC_LVTERR : +case APIC_LVTERR : {/* TODO: Check vector */ +size_t size; +u32 index; +if (!kvm_apic_sw_enabled (apic)) val |=APIC_LVT_MASKED ; - - val &= apic_lvt_mask[(reg -APIC_LVTT ) >>4 ]; + size =ARRAY_SIZE (apic_lvt_mask); + index =array_index_nospec ( + (reg -APIC_LVTT ) >>4 , size); + val &= apic_lvt_mask[index];kvm_lapic_set_reg (apic, reg, val); -break ; + }case APIC_LVTT :if (!kvm_apic_sw_enabled (apic))
arch/x86/kvm/mmu.c +45 -33
242 lines not on this page · raw message
arch/x86/kvm/mmutrace.h +6 -6
@@ -249,13 +249,13 @@ TRACE_EVENT( TRACE_EVENT( fast_page_fault, - TP_PROTO(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code, + TP_PROTO(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, u32 error_code, u64 *sptep, u64 old_spte, bool retry), - TP_ARGS(vcpu, gva, error_code, sptep, old_spte, retry), + TP_ARGS(vcpu, cr2_or_gpa, error_code, sptep, old_spte, retry), TP_STRUCT__entry( __field(int, vcpu_id) - __field(gva_t, gva) + __field(gpa_t, cr2_or_gpa) __field(u32, error_code) __field(u64 *, sptep) __field(u64, old_spte)
@@ -265,7 +265,7 @@ TRACE_EVENT(TP_fast_assign ( __entry->vcpu_id = vcpu->vcpu_id; - __entry->gva = gva; + __entry->cr2_or_gpa = cr2_or_gpa; __entry->error_code = error_code; __entry->sptep = sptep; __entry->old_spte = old_spte;
@@ -273,9 +273,9 @@ TRACE_EVENT( __entry->retry = retry; ), -TP_printk ("vcpu %d gva %lx error_code %s sptep %p old %#llx" +TP_printk ("vcpu %d gva %llx error_code %s sptep %p old %#llx" " new %llx spurious %d fixed %d" , __entry->vcpu_id, - __entry->gva,__print_flags (__entry->error_code,"|" , + __entry->cr2_or_gpa,__print_flags (__entry->error_code,"|" , kvm_mmu_trace_pferr_flags), __entry->sptep, __entry->old_spte, __entry->new_spte, __spte_satisfied(old_spte), __spte_satisfied(new_spte)
arch/x86/kvm/mtrr.c +6 -2
@@ -194,11 +194,15 @@ static bool fixed_msr_to_seg_unit(u32 msr, int *seg, int *unit)break ; case MSR_MTRRfix16K_80000 ... MSR_MTRRfix16K_A0000: *seg =1 ; - *unit = msr - MSR_MTRRfix16K_80000; + *unit =array_index_nospec ( + msr - MSR_MTRRfix16K_80000, + MSR_MTRRfix16K_A0000 - MSR_MTRRfix16K_80000 +1 );break ; case MSR_MTRRfix4K_C0000 ... MSR_MTRRfix4K_F8000: *seg =2 ; - *unit = msr - MSR_MTRRfix4K_C0000; + *unit =array_index_nospec ( + msr - MSR_MTRRfix4K_C0000, + MSR_MTRRfix4K_F8000 - MSR_MTRRfix4K_C0000 +1 );break ;default :return false;
arch/x86/kvm/paging_tmpl.h +16 -9
@@ -273,11 +273,11 @@ static inline unsigned FNAME(gpte_pkeys)(struct kvm_vcpu *vcpu, u64 gpte) }/* -* Fetch a guest pte for a guest virtual address +* Fetch a guest pte for a guest virtual address, or for an L2's GPA. */ static int FNAME (walk_addr_generic )(struct guest_walker *walker,struct kvm_vcpu *vcpu,struct kvm_mmu *mmu, -gva_t addr,u32 access) +gpa_t addr,u32 access) {int ret;pt_element_t pte;
@@ -478,7 +478,7 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker, }static int FNAME (walk_addr )(struct guest_walker *walker, -struct kvm_vcpu *vcpu,gva_t addr,u32 access) +struct kvm_vcpu *vcpu,gpa_t addr,u32 access) {return FNAME (walk_addr_generic)(walker, vcpu, &vcpu->arch.mmu, addr, access);
@@ -593,7 +593,7 @@ static void FNAME(pte_prefetch)(struct kvm_vcpu *vcpu, struct guest_walker *gw,* If the guest tries to write a write-protected page, we need to * emulate this operation, return 1 to indicate this case. */ -static int FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr, +static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr, struct guest_walker *gw, int write_fault, int hlevel, kvm_pfn_t pfn, bool map_writable, bool prefault,
@@ -747,7 +747,7 @@ FNAME(is_self_change_mapping)(struct kvm_vcpu *vcpu,* Returns: 1 if we need to emulate the instruction, 0 otherwise, or * a negative value on error. */ -static int FNAME (page_fault )(struct kvm_vcpu *vcpu,gva_t addr,u32 error_code, +static int FNAME (page_fault )(struct kvm_vcpu *vcpu,gpa_t addr,u32 error_code,bool prefault) {int write_fault = error_code &PFERR_WRITE_MASK ;
@@ -926,18 +926,19 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva, hpa_t root_hpa)spin_unlock (&vcpu->kvm->mmu_lock); } -static gpa_t FNAME (gva_to_gpa )(struct kvm_vcpu *vcpu,gva_t vaddr,u32 access, +/* Note, @addr is a GPA when gva_to_gpa() translates an L2 GPA to an L1 GPA. */ +static gpa_t FNAME (gva_to_gpa )(struct kvm_vcpu *vcpu,gpa_t addr,u32 access,struct x86_exception *exception) {struct guest_walker walker;gpa_t gpa =UNMAPPED_GVA ;int r; - r =FNAME (walk_addr)(&walker, vcpu, vaddr, access); + r =FNAME (walk_addr)(&walker, vcpu, addr, access);if (r) { gpa =gfn_to_gpa (walker.gfn); - gpa |= vaddr & ~PAGE_MASK ; + gpa |= addr & ~PAGE_MASK ; }else if (exception) *exception = walker.fault;
@@ -945,7 +946,8 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr, u32 access, }#if PTTYPE !=PTTYPE_EPT -static gpa_t FNAME (gva_to_gpa_nested )(struct kvm_vcpu *vcpu,gva_t vaddr, +/* Note, gva_to_gpa_nested() is only used to translate L2 GVAs. */ +static gpa_t FNAME (gva_to_gpa_nested )(struct kvm_vcpu *vcpu,gpa_t vaddr,u32 access,struct x86_exception *exception) {
@@ -953,6 +955,11 @@ static gpa_t FNAME(gva_to_gpa_nested)(struct kvm_vcpu *vcpu, gva_t vaddr,gpa_t gpa =UNMAPPED_GVA ;int r; +#ifndef CONFIG_X86_64 +/* A 64-bit GVA should be impossible on 32-bit KVM. */ +WARN_ON_ONCE (vaddr >>32 ); +#endif + r =FNAME (walk_addr_nested)(&walker, vcpu, vaddr, access);if (r) {
arch/x86/kvm/pmu.h +14 -4
@@ -2,6 +2,8 @@#ifndef __KVM_X86_PMU_H#define __KVM_X86_PMU_H +#include <linux/nospec.h> +#define vcpu_to_pmu (vcpu) (&(vcpu)->arch.pmu)#define pmu_to_vcpu (pmu) (container_of((pmu), struct kvm_vcpu, arch.pmu))#define pmc_to_pmu (pmc) (&(pmc)->vcpu->arch.pmu)
@@ -86,8 +88,12 @@ static inline bool pmc_is_enabled(struct kvm_pmc *pmc)static inline struct kvm_pmc *get_gp_pmc (struct kvm_pmu *pmu,u32 msr,u32 base) { -if (msr >= base && msr < base + pmu->nr_arch_gp_counters) -return &pmu->gp_counters[msr - base]; +if (msr >= base && msr < base + pmu->nr_arch_gp_counters) { +u32 index =array_index_nospec (msr - base, + pmu->nr_arch_gp_counters); + +return &pmu->gp_counters[index]; + }return NULL ; }
@@ -97,8 +103,12 @@ static inline struct kvm_pmc *get_fixed_pmc(struct kvm_pmu *pmu, u32 msr) {int base =MSR_CORE_PERF_FIXED_CTR0 ; -if (msr >= base && msr < base + pmu->nr_arch_fixed_counters) -return &pmu->fixed_counters[msr - base]; +if (msr >= base && msr < base + pmu->nr_arch_fixed_counters) { +u32 index =array_index_nospec (msr - base, + pmu->nr_arch_fixed_counters); + +return &pmu->fixed_counters[index]; + }return NULL ; }
arch/x86/kvm/pmu_intel.c +16 -8
@@ -87,10 +87,14 @@ static unsigned intel_find_arch_event(struct kvm_pmu *pmu,static unsigned intel_find_fixed_event (int idx) { -if (idx >=ARRAY_SIZE (fixed_pmc_events)) +u32 event; +size_t size =ARRAY_SIZE (fixed_pmc_events); + +if (idx >= size)return PERF_COUNT_HW_MAX ; -return intel_arch_events[fixed_pmc_events[idx]].event_type; + event = fixed_pmc_events[array_index_nospec (idx, size)]; +return intel_arch_events[event].event_type; }/* check if a PMC is enabled by comparing it with globl_ctrl bits. */
@@ -131,16 +135,20 @@ static struct kvm_pmc *intel_msr_idx_to_pmc(struct kvm_vcpu *vcpu,struct kvm_pmu *pmu =vcpu_to_pmu (vcpu);bool fixed = idx & (1u <<30 );struct kvm_pmc *counters; +unsigned int num_counters; idx &= ~(3u <<30 ); -if (!fixed && idx >= pmu->nr_arch_gp_counters) -return NULL ; -if (fixed && idx >= pmu->nr_arch_fixed_counters) +if (fixed) { + counters = pmu->fixed_counters; + num_counters = pmu->nr_arch_fixed_counters; + }else { + counters = pmu->gp_counters; + num_counters = pmu->nr_arch_gp_counters; + } +if (idx >= num_counters)return NULL ; - counters = fixed ? pmu->fixed_counters : pmu->gp_counters; *mask &= pmu->counter_bitmask[fixed ?KVM_PMC_FIXED :KVM_PMC_GP ]; - -return &counters[idx]; +return &counters[array_index_nospec (idx, num_counters)]; }static bool intel_is_valid_msr (struct kvm_vcpu *vcpu,u32 msr)
arch/x86/kvm/vmx.c +3 -1
@@ -8793,8 +8793,10 @@ static int handle_vmread(struct kvm_vcpu *vcpu)/* _system ok, nested_vmx_check_permission has verified cpl=0 */ if (kvm_write_guest_virt_system (vcpu, gva, &field_value, (is_long_mode (vcpu) ?8 :4 ), - &e)) + &e)) {kvm_inject_page_fault (vcpu, &e); +return 1 ; + } }nested_vmx_succeed (vcpu);
arch/x86/kvm/vmx/vmx.c new file +8033 -0
1,651 lines not on this page · raw message
arch/x86/kvm/x86.c +74 -27
101 lines not on this page · raw message
drivers/acpi/battery.c +56 -19
75 lines not on this page · raw message
drivers/base/power/main.c +37 -5
42 lines not on this page · raw message
drivers/crypto/ccree/cc_request_mgr.c +1 -50
51 lines not on this page · raw message
drivers/crypto/geode-aes.c +147 -295
442 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +4 -9
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/md/dm-writecache.c +21 -20
41 lines not on this page · raw message
drivers/md/persistent-data/dm-space-map-common.c +27 -0
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-space-map-common.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-space-map-disk.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-space-map-metadata.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-compat-ioctl32.c +75 -73
148 lines not on this page · raw message
drivers/media/v4l2-core/videobuf-dma-sg.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/bonding/bond_alb.c +32 -12
44 lines not on this page · raw message
drivers/net/ethernet/broadcom/bcmsysport.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +8 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/dec/tulip/uli526x.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fpga/ipsec.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/sta_ioctl.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pci-keystone-dw.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-apq8064-sata.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/power/supply/ltc2941-battery-gauge.c +1 -1
Lines of this file are not shown. View the raw message.
fs/btrfs/tree-log.c +100 -288
388 lines not on this page · raw message
fs/gfs2/file.c +31 -41
72 lines not on this page · raw message
fs/nfs/dir.c +34 -13
47 lines not on this page · raw message
kernel/padata.c +12 -34
46 lines not on this page · raw message
mm/page_alloc.c +47 -17
64 lines not on this page · raw message
net/rxrpc/peer_event.c +23 -19
42 lines not on this page · raw message
net/sched/cls_tcindex.c +21 -22
43 lines not on this page · raw message
virt/kvm/arm/aarch32.c +104 -13
117 lines not on this page · 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.