Skip to content

Commit 314ab78

Browse files
committed
Merge 4.19.84 into android-4.19-q
Changes in 4.19.84 bonding: fix state transition issue in link monitoring CDC-NCM: handle incomplete transfer of MTU ipv4: Fix table id reference in fib_sync_down_addr net: ethernet: octeon_mgmt: Account for second possible VLAN header net: fix data-race in neigh_event_send() net: qualcomm: rmnet: Fix potential UAF when unregistering net: usb: qmi_wwan: add support for DW5821e with eSIM support NFC: fdp: fix incorrect free object nfc: netlink: fix double device reference drop NFC: st21nfca: fix double free qede: fix NULL pointer deref in __qede_remove() net: mscc: ocelot: don't handle netdev events for other netdevs net: mscc: ocelot: fix NULL pointer on LAG slave removal ipv6: fixes rt6_probe() and fib6_nh->last_probe init net: hns: Fix the stray netpoll locks causing deadlock in NAPI path ALSA: timer: Fix incorrectly assigned timer instance ALSA: bebob: fix to detect configured source of sampling clock for Focusrite Saffire Pro i/o series ALSA: hda/ca0132 - Fix possible workqueue stall mm: memcontrol: fix network errors from failing __GFP_ATOMIC charges mm, meminit: recalculate pcpu batch and high limits after init completes mm: thp: handle page cache THP correctly in PageTransCompoundMap mm, vmstat: hide /proc/pagetypeinfo from normal users dump_stack: avoid the livelock of the dump_lock tools: gpio: Use !building_out_of_srctree to determine srctree perf tools: Fix time sorting drm/radeon: fix si_enable_smc_cac() failed issue HID: wacom: generic: Treat serial number and related fields as unsigned soundwire: depend on ACPI soundwire: bus: set initial value to port_status arm64: Do not mask out PTE_RDONLY in pte_same() ceph: fix use-after-free in __ceph_remove_cap() ceph: add missing check in d_revalidate snapdir handling iio: adc: stm32-adc: fix stopping dma iio: imu: adis16480: make sure provided frequency is positive iio: srf04: fix wrong limitation in distance measuring ARM: sunxi: Fix CPU powerdown on A83T netfilter: nf_tables: Align nft_expr private data to 64-bit netfilter: ipset: Fix an error code in ip_set_sockfn_get() intel_th: pci: Add Comet Lake PCH support intel_th: pci: Add Jasper Lake PCH support x86/apic/32: Avoid bogus LDR warnings SMB3: Fix persistent handles reconnect can: usb_8dev: fix use-after-free on disconnect can: flexcan: disable completely the ECC mechanism can: c_can: c_can_poll(): only read status register after status IRQ can: peak_usb: fix a potential out-of-sync while decoding packets can: rx-offload: can_rx_offload_queue_sorted(): fix error handling, avoid skb mem leak can: gs_usb: gs_can_open(): prevent memory leak can: dev: add missing of_node_put() after calling of_get_child_by_name() can: mcba_usb: fix use-after-free on disconnect can: peak_usb: fix slab info leak configfs: stash the data we need into configfs_buffer at open time configfs_register_group() shouldn't be (and isn't) called in rmdirable parts configfs: new object reprsenting tree fragments configfs: provide exclusion between IO and removals configfs: fix a deadlock in configfs_symlink() ALSA: usb-audio: More validations of descriptor units ALSA: usb-audio: Simplify parse_audio_unit() ALSA: usb-audio: Unify the release of usb_mixer_elem_info objects ALSA: usb-audio: Remove superfluous bLength checks ALSA: usb-audio: Clean up check_input_term() ALSA: usb-audio: Fix possible NULL dereference at create_yamaha_midi_quirk() ALSA: usb-audio: remove some dead code ALSA: usb-audio: Fix copy&paste error in the validator sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices sched/fair: Fix -Wunused-but-set-variable warnings usbip: Fix vhci_urb_enqueue() URB null transfer buffer error path usbip: Implement SG support to vhci-hcd and stub driver PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 HID: google: add magnemite/masterball USB ids dmaengine: xilinx_dma: Fix control reg update in vdma_channel_set_config dmaengine: sprd: Fix the possible memory leak issue HID: intel-ish-hid: fix wrong error handling in ishtp_cl_alloc_tx_ring() RDMA/mlx5: Clear old rate limit when closing QP iw_cxgb4: fix ECN check on the passive accept RDMA/qedr: Fix reported firmware version net/mlx5e: TX, Fix consumer index of error cqe dump net/mlx5: prevent memory leak in mlx5_fpga_conn_create_cq scsi: qla2xxx: fixup incorrect usage of host_byte RDMA/uverbs: Prevent potential underflow net: openvswitch: free vport unless register_netdevice() succeeds scsi: lpfc: Honor module parameter lpfc_use_adisc scsi: qla2xxx: Initialized mailbox to prevent driver load failure netfilter: nf_flow_table: set timeout before insertion into hashes ipvs: don't ignore errors in case refcounting ip_vs module fails ipvs: move old_secure_tcp into struct netns_ipvs bonding: fix unexpected IFF_BONDING bit unset macsec: fix refcnt leak in module exit routine usb: fsl: Check memory resource before releasing it usb: gadget: udc: atmel: Fix interrupt storm in FIFO mode. usb: gadget: composite: Fix possible double free memory bug usb: dwc3: pci: prevent memory leak in dwc3_pci_probe usb: gadget: configfs: fix concurrent issue between composite APIs usb: dwc3: remove the call trace of USBx_GFLADJ perf/x86/amd/ibs: Fix reading of the IBS OpData register and thus precise RIP validity perf/x86/amd/ibs: Handle erratum torvalds#420 only on the affected CPU family (10h) perf/x86/uncore: Fix event group support USB: Skip endpoints with 0 maxpacket length USB: ldusb: use unsigned size format specifiers usbip: tools: Fix read_usb_vudc_device() error path handling RDMA/iw_cxgb4: Avoid freeing skb twice in arp failure case RDMA/hns: Prevent memory leaks of eq->buf_list scsi: qla2xxx: stop timer in shutdown path nvme-multipath: fix possible io hang after ctrl reconnect fjes: Handle workqueue allocation failure net: hisilicon: Fix "Trying to free already-free IRQ" net: mscc: ocelot: fix vlan_filtering when enslaving to bridge before link is up net: mscc: ocelot: refuse to overwrite the port's native vlan iommu/amd: Apply the same IVRS IOAPIC workaround to Acer Aspire A315-41 drm/amdgpu: If amdgpu_ib_schedule fails return back the error. drm/amd/display: Passive DP->HDMI dongle detection fix hv_netvsc: Fix error handling in netvsc_attach() usb: dwc3: gadget: fix race when disabling ep with cancelled xfers NFSv4: Don't allow a cached open with a revoked delegation net: ethernet: arc: add the missed clk_disable_unprepare igb: Fix constant media auto sense switching when no cable is connected e1000: fix memory leaks pinctrl: intel: Avoid potential glitches if pin is in GPIO mode ocfs2: protect extent tree in ocfs2_prepare_inode_for_write() pinctrl: cherryview: Fix irq_valid_mask calculation blkcg: make blkcg_print_stat() print stats only for online blkgs iio: imu: mpu6050: Add support for the ICM 20602 IMU iio: imu: inv_mpu6050: fix no data on MPU6050 mm/filemap.c: don't initiate writeback if mapping has no dirty pages cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead usbip: Fix free of unallocated memory in vhci tx netfilter: ipset: Copy the right MAC address in hash:ip,mac IPv6 sets net: prevent load/store tearing on sk->sk_stamp iio: imu: mpu6050: Fix FIFO layout for ICM20602 vsock/virtio: fix sock refcnt holding during the shutdown drm/i915: Rename gen7 cmdparser tables drm/i915: Disable Secure Batches for gen6+ drm/i915: Remove Master tables from cmdparser drm/i915: Add support for mandatory cmdparsing drm/i915: Support ro ppgtt mapped cmdparser shadow buffers drm/i915: Allow parsing of unsized batches drm/i915: Add gen9 BCS cmdparsing drm/i915/cmdparser: Use explicit goto for error paths drm/i915/cmdparser: Add support for backward jumps drm/i915/cmdparser: Ignore Length operands during command matching drm/i915: Lower RM timeout to avoid DSI hard hangs drm/i915/gen8+: Add RC6 CTX corruption WA drm/i915/cmdparser: Fix jump whitelist clearing KVM: x86: use Intel speculation bugs and features as derived in generic x86 code x86/msr: Add the IA32_TSX_CTRL MSR x86/cpu: Add a helper function x86_read_arch_cap_msr() x86/cpu: Add a "tsx=" cmdline option with TSX disabled by default x86/speculation/taa: Add mitigation for TSX Async Abort x86/speculation/taa: Add sysfs reporting for TSX Async Abort kvm/x86: Export MDS_NO=0 to guests when TSX is enabled x86/tsx: Add "auto" option to the tsx= cmdline parameter x86/speculation/taa: Add documentation for TSX Async Abort x86/tsx: Add config options to set tsx=on|off|auto x86/speculation/taa: Fix printing of TAA_MSG_SMT on IBRS_ALL CPUs x86/bugs: Add ITLB_MULTIHIT bug infrastructure x86/cpu: Add Tremont to the cpu vulnerability whitelist cpu/speculation: Uninline and export CPU mitigations helpers Documentation: Add ITLB_MULTIHIT documentation kvm: x86, powerpc: do not allow clearing largepages debugfs entry kvm: Convert kvm_lock to a mutex kvm: mmu: Do not release the page inside mmu_set_spte() KVM: x86: make FNAME(fetch) and __direct_map more similar KVM: x86: remove now unneeded hugepage gfn adjustment KVM: x86: change kvm_mmu_page_get_gfn BUG_ON to WARN_ON KVM: x86: add tracepoints around __direct_map and FNAME(fetch) KVM: vmx, svm: always run with EFER.NXE=1 when shadow paging is active kvm: mmu: ITLB_MULTIHIT mitigation kvm: Add helper function for creating VM worker threads kvm: x86: mmu: Recovery of shattered NX large pages Linux 4.19.84 Signed-off-by: Greg Kroah-Hartman <[email protected]> Change-Id: Ibfe5348dad4efa4a34f9be3252aadef6be6b29f3
2 parents b5548d6 + c555efa commit 314ab78

File tree

194 files changed

+4691
-1505
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+4691
-1505
lines changed

Documentation/ABI/testing/sysfs-devices-system-cpu

+2
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,8 @@ What: /sys/devices/system/cpu/vulnerabilities
478478
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
479479
/sys/devices/system/cpu/vulnerabilities/l1tf
480480
/sys/devices/system/cpu/vulnerabilities/mds
481+
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
482+
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
481483
Date: January 2018
482484
Contact: Linux kernel mailing list <[email protected]>
483485
Description: Information about CPU vulnerabilities

Documentation/admin-guide/hw-vuln/index.rst

+2
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ are configurable at compile, boot or run time.
1212
spectre
1313
l1tf
1414
mds
15+
tsx_async_abort
16+
multihit.rst
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
iTLB multihit
2+
=============
3+
4+
iTLB multihit is an erratum where some processors may incur a machine check
5+
error, possibly resulting in an unrecoverable CPU lockup, when an
6+
instruction fetch hits multiple entries in the instruction TLB. This can
7+
occur when the page size is changed along with either the physical address
8+
or cache type. A malicious guest running on a virtualized system can
9+
exploit this erratum to perform a denial of service attack.
10+
11+
12+
Affected processors
13+
-------------------
14+
15+
Variations of this erratum are present on most Intel Core and Xeon processor
16+
models. The erratum is not present on:
17+
18+
- non-Intel processors
19+
20+
- Some Atoms (Airmont, Bonnell, Goldmont, GoldmontPlus, Saltwell, Silvermont)
21+
22+
- Intel processors that have the PSCHANGE_MC_NO bit set in the
23+
IA32_ARCH_CAPABILITIES MSR.
24+
25+
26+
Related CVEs
27+
------------
28+
29+
The following CVE entry is related to this issue:
30+
31+
============== =================================================
32+
CVE-2018-12207 Machine Check Error Avoidance on Page Size Change
33+
============== =================================================
34+
35+
36+
Problem
37+
-------
38+
39+
Privileged software, including OS and virtual machine managers (VMM), are in
40+
charge of memory management. A key component in memory management is the control
41+
of the page tables. Modern processors use virtual memory, a technique that creates
42+
the illusion of a very large memory for processors. This virtual space is split
43+
into pages of a given size. Page tables translate virtual addresses to physical
44+
addresses.
45+
46+
To reduce latency when performing a virtual to physical address translation,
47+
processors include a structure, called TLB, that caches recent translations.
48+
There are separate TLBs for instruction (iTLB) and data (dTLB).
49+
50+
Under this errata, instructions are fetched from a linear address translated
51+
using a 4 KB translation cached in the iTLB. Privileged software modifies the
52+
paging structure so that the same linear address using large page size (2 MB, 4
53+
MB, 1 GB) with a different physical address or memory type. After the page
54+
structure modification but before the software invalidates any iTLB entries for
55+
the linear address, a code fetch that happens on the same linear address may
56+
cause a machine-check error which can result in a system hang or shutdown.
57+
58+
59+
Attack scenarios
60+
----------------
61+
62+
Attacks against the iTLB multihit erratum can be mounted from malicious
63+
guests in a virtualized system.
64+
65+
66+
iTLB multihit system information
67+
--------------------------------
68+
69+
The Linux kernel provides a sysfs interface to enumerate the current iTLB
70+
multihit status of the system:whether the system is vulnerable and which
71+
mitigations are active. The relevant sysfs file is:
72+
73+
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
74+
75+
The possible values in this file are:
76+
77+
.. list-table::
78+
79+
* - Not affected
80+
- The processor is not vulnerable.
81+
* - KVM: Mitigation: Split huge pages
82+
- Software changes mitigate this issue.
83+
* - KVM: Vulnerable
84+
- The processor is vulnerable, but no mitigation enabled
85+
86+
87+
Enumeration of the erratum
88+
--------------------------------
89+
90+
A new bit has been allocated in the IA32_ARCH_CAPABILITIES (PSCHANGE_MC_NO) msr
91+
and will be set on CPU's which are mitigated against this issue.
92+
93+
======================================= =========== ===============================
94+
IA32_ARCH_CAPABILITIES MSR Not present Possibly vulnerable,check model
95+
IA32_ARCH_CAPABILITIES[PSCHANGE_MC_NO] '0' Likely vulnerable,check model
96+
IA32_ARCH_CAPABILITIES[PSCHANGE_MC_NO] '1' Not vulnerable
97+
======================================= =========== ===============================
98+
99+
100+
Mitigation mechanism
101+
-------------------------
102+
103+
This erratum can be mitigated by restricting the use of large page sizes to
104+
non-executable pages. This forces all iTLB entries to be 4K, and removes
105+
the possibility of multiple hits.
106+
107+
In order to mitigate the vulnerability, KVM initially marks all huge pages
108+
as non-executable. If the guest attempts to execute in one of those pages,
109+
the page is broken down into 4K pages, which are then marked executable.
110+
111+
If EPT is disabled or not available on the host, KVM is in control of TLB
112+
flushes and the problematic situation cannot happen. However, the shadow
113+
EPT paging mechanism used by nested virtualization is vulnerable, because
114+
the nested guest can trigger multiple iTLB hits by modifying its own
115+
(non-nested) page tables. For simplicity, KVM will make large pages
116+
non-executable in all shadow paging modes.
117+
118+
Mitigation control on the kernel command line and KVM - module parameter
119+
------------------------------------------------------------------------
120+
121+
The KVM hypervisor mitigation mechanism for marking huge pages as
122+
non-executable can be controlled with a module parameter "nx_huge_pages=".
123+
The kernel command line allows to control the iTLB multihit mitigations at
124+
boot time with the option "kvm.nx_huge_pages=".
125+
126+
The valid arguments for these options are:
127+
128+
========== ================================================================
129+
force Mitigation is enabled. In this case, the mitigation implements
130+
non-executable huge pages in Linux kernel KVM module. All huge
131+
pages in the EPT are marked as non-executable.
132+
If a guest attempts to execute in one of those pages, the page is
133+
broken down into 4K pages, which are then marked executable.
134+
135+
off Mitigation is disabled.
136+
137+
auto Enable mitigation only if the platform is affected and the kernel
138+
was not booted with the "mitigations=off" command line parameter.
139+
This is the default option.
140+
========== ================================================================
141+
142+
143+
Mitigation selection guide
144+
--------------------------
145+
146+
1. No virtualization in use
147+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
148+
149+
The system is protected by the kernel unconditionally and no further
150+
action is required.
151+
152+
2. Virtualization with trusted guests
153+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
154+
155+
If the guest comes from a trusted source, you may assume that the guest will
156+
not attempt to maliciously exploit these errata and no further action is
157+
required.
158+
159+
3. Virtualization with untrusted guests
160+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
161+
If the guest comes from an untrusted source, the guest host kernel will need
162+
to apply iTLB multihit mitigation via the kernel command line or kvm
163+
module parameter.

0 commit comments

Comments
 (0)