CVE-2018-15594
Description
arch/x86/kernel/paravirt.c in the Linux kernel before 4.18.1 mishandles certain indirect calls, which makes it easier for attackers to conduct Spectre-v2 attacks against paravirtual guests.
Affected products
62- osv-coords62 versionspkg:rpm/suse/kernel-bigmem&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-bigmem&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-default&distro=SUSE%20Enterprise%20Storage%204pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Desktop%2012%20SP3pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20High%20Availability%20Extension%2012%20SP2pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20High%20Availability%20Extension%2012%20SP3pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-BCLpkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-LTSSpkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP3pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP2pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP3pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Workstation%20Extension%2012%20SP3pkg:rpm/suse/kernel-default&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Software%20Development%20Kit%2011%20SP4pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Software%20Development%20Kit%2012%20SP3pkg:rpm/suse/kernel-ec2&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-ec2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-obs-build&distro=SUSE%20Linux%20Enterprise%20Software%20Development%20Kit%2012%20SP3pkg:rpm/suse/kernel-pae&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-pae&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-ppc64&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-ppc64&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-rt&distro=SUSE%20Linux%20Enterprise%20Real%20Time%2011%20SP4pkg:rpm/suse/kernel-rt_trace&distro=SUSE%20Linux%20Enterprise%20Real%20Time%2011%20SP4pkg:rpm/suse/kernel-source&distro=SUSE%20Enterprise%20Storage%204pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Desktop%2012%20SP3pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-BCLpkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-LTSSpkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP3pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP2pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP3pkg:rpm/suse/kernel-source&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kernel-source-rt&distro=SUSE%20Linux%20Enterprise%20Real%20Time%2011%20SP4pkg:rpm/suse/kernel-syms&distro=SUSE%20Enterprise%20Storage%204pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Desktop%2012%20SP3pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-BCLpkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-LTSSpkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP3pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP2pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP3pkg:rpm/suse/kernel-syms&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kernel-syms-rt&distro=SUSE%20Linux%20Enterprise%20Real%20Time%2011%20SP4pkg:rpm/suse/kernel-trace&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-trace&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kernel-xen&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/kernel-xen&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/kgraft-patch-SLE12-SP2_Update_25&distro=SUSE%20Enterprise%20Storage%204pkg:rpm/suse/kgraft-patch-SLE12-SP2_Update_25&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-LTSSpkg:rpm/suse/kgraft-patch-SLE12-SP2_Update_25&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP2pkg:rpm/suse/kgraft-patch-SLE12-SP2_Update_25&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kgraft-patch-SLE12-SP3_Update_25&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2012%20SP3pkg:rpm/suse/lttng-modules&distro=SUSE%20Enterprise%20Storage%204pkg:rpm/suse/lttng-modules&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-BCLpkg:rpm/suse/lttng-modules&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP2-LTSSpkg:rpm/suse/lttng-modules&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP2pkg:rpm/suse/lttng-modules&distro=SUSE%20OpenStack%20Cloud%207
< 3.0.101-108.71.1+ 61 more
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.178-94.91.2
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101.rt130-69.36.1
- (no CPE)range: < 3.0.101.rt130-69.36.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 3.0.101.rt130-69.36.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 4.4.178-94.91.1
- (no CPE)range: < 4.4.121-92.95.1
- (no CPE)range: < 3.0.101.rt130-69.36.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 3.0.101-108.71.1
- (no CPE)range: < 1-3.4.1
- (no CPE)range: < 1-3.4.1
- (no CPE)range: < 1-3.4.1
- (no CPE)range: < 1-3.4.1
- (no CPE)range: < 1-4.3.1
- (no CPE)range: < 2.7.1-9.6.1
- (no CPE)range: < 2.7.1-9.6.1
- (no CPE)range: < 2.7.1-9.6.1
- (no CPE)range: < 2.7.1-9.6.1
- (no CPE)range: < 2.7.1-9.6.1
Patches
15800dc5c19f3x86/paravirt: Fix spectre-v2 mitigations for paravirt guests
1 file changed · +10 −4
arch/x86/kernel/paravirt.c+10 −4 modified@@ -88,10 +88,12 @@ unsigned paravirt_patch_call(void *insnbuf, struct branch *b = insnbuf; unsigned long delta = (unsigned long)target - (addr+5); - if (tgt_clobbers & ~site_clobbers) - return len; /* target would clobber too much for this site */ - if (len < 5) + if (len < 5) { +#ifdef CONFIG_RETPOLINE + WARN_ONCE("Failing to patch indirect CALL in %ps\n", (void *)addr); +#endif return len; /* call too long for patch site */ + } b->opcode = 0xe8; /* call */ b->delta = delta; @@ -106,8 +108,12 @@ unsigned paravirt_patch_jmp(void *insnbuf, const void *target, struct branch *b = insnbuf; unsigned long delta = (unsigned long)target - (addr+5); - if (len < 5) + if (len < 5) { +#ifdef CONFIG_RETPOLINE + WARN_ONCE("Failing to patch indirect JMP in %ps\n", (void *)addr); +#endif return len; /* call too long for patch site */ + } b->opcode = 0xe9; /* jmp */ b->delta = delta;
Vulnerability mechanics
Root cause
"An incorrect clobber check in `paravirt_patch_call` prevents the kernel from rewriting indirect calls to direct calls, leaving them vulnerable to Spectre-v2 attacks."
Attack vector
An attacker can exploit this by targeting paravirtual guests where the kernel fails to rewrite indirect calls to paravirtual functions, such as `pv_queued_spin_unlock` [patch_id=196257]. Because these indirect calls remain unpatched, they bypass Spectre-v2 mitigations that rely on the absence of such calls. This allows an attacker to potentially conduct Spectre-v2 attacks against the guest environment.
Affected code
The vulnerability is located in `arch/x86/kernel/paravirt.c` within the `paravirt_patch_call` function [patch_id=196257]. The function incorrectly performed a clobber check that prevented the rewriting of certain indirect calls to direct calls. This failure to patch leaves indirect calls in place, which undermines Spectre-v2 mitigations for paravirtual guests.
What the fix does
The patch removes the incorrect clobber check in `paravirt_patch_call` that was preventing the successful rewriting of indirect calls to direct calls [patch_id=196257]. By removing this check, the kernel can correctly replace indirect calls with direct calls to the same function, ensuring that Spectre-v2 mitigations are properly applied. Additionally, the patch adds `WARN_ONCE` statements to help identify cases where patching fails due to insufficient instruction space.
Preconditions
- configThe system must be running as a paravirtual guest.
Generated on May 17, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
18- lists.opensuse.org/opensuse-security-announce/2019-05/msg00043.htmlmitrevendor-advisoryx_refsource_SUSE
- access.redhat.com/errata/RHSA-2019:2029mitrevendor-advisoryx_refsource_REDHAT
- access.redhat.com/errata/RHSA-2019:2043mitrevendor-advisoryx_refsource_REDHAT
- usn.ubuntu.com/3775-1/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3775-2/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3776-1/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3776-2/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3777-1/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3777-2/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/3777-3/mitrevendor-advisoryx_refsource_UBUNTU
- www.debian.org/security/2018/dsa-4308mitrevendor-advisoryx_refsource_DEBIAN
- git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/mitrex_refsource_MISC
- www.securityfocus.com/bid/105120mitrevdb-entryx_refsource_BID
- www.securitytracker.com/id/1041601mitrevdb-entryx_refsource_SECTRACK
- cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.18.1mitrex_refsource_MISC
- github.com/torvalds/linux/commit/5800dc5c19f34e6e03b5adab1282535cb102fafdmitrex_refsource_MISC
- lists.debian.org/debian-lts-announce/2018/10/msg00003.htmlmitremailing-listx_refsource_MLIST
- twitter.com/grsecurity/status/1029324426142199808mitrex_refsource_MISC
News mentions
0No linked articles in our index yet.