Skip to content

Commit 7bd1d5e

Browse files
committed
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar: "Two fixes: a quirk for KVM guests running on certain AMD CPUs, and a KASAN related build fix" * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/CPU/AMD: Don't force the CPB cap when running under a hypervisor x86/boot: Provide KASAN compatible aliases for string routines
2 parents 6751b8d + 2ac44ab commit 7bd1d5e

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

arch/x86/boot/compressed/string.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "../string.c"
1212

1313
#ifdef CONFIG_X86_32
14-
static void *__memcpy(void *dest, const void *src, size_t n)
14+
static void *____memcpy(void *dest, const void *src, size_t n)
1515
{
1616
int d0, d1, d2;
1717
asm volatile(
@@ -25,7 +25,7 @@ static void *__memcpy(void *dest, const void *src, size_t n)
2525
return dest;
2626
}
2727
#else
28-
static void *__memcpy(void *dest, const void *src, size_t n)
28+
static void *____memcpy(void *dest, const void *src, size_t n)
2929
{
3030
long d0, d1, d2;
3131
asm volatile(
@@ -56,7 +56,7 @@ void *memmove(void *dest, const void *src, size_t n)
5656
const unsigned char *s = src;
5757

5858
if (d <= s || d - s >= n)
59-
return __memcpy(dest, src, n);
59+
return ____memcpy(dest, src, n);
6060

6161
while (n-- > 0)
6262
d[n] = s[n];
@@ -71,5 +71,11 @@ void *memcpy(void *dest, const void *src, size_t n)
7171
warn("Avoiding potentially unsafe overlapping memcpy()!");
7272
return memmove(dest, src, n);
7373
}
74-
return __memcpy(dest, src, n);
74+
return ____memcpy(dest, src, n);
7575
}
76+
77+
#ifdef CONFIG_KASAN
78+
extern void *__memset(void *s, int c, size_t n) __alias(memset);
79+
extern void *__memmove(void *dest, const void *src, size_t n) __alias(memmove);
80+
extern void *__memcpy(void *dest, const void *src, size_t n) __alias(memcpy);
81+
#endif

arch/x86/kernel/cpu/amd.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -824,8 +824,11 @@ static void init_amd_zn(struct cpuinfo_x86 *c)
824824
{
825825
set_cpu_cap(c, X86_FEATURE_ZEN);
826826

827-
/* Fix erratum 1076: CPB feature bit not being set in CPUID. */
828-
if (!cpu_has(c, X86_FEATURE_CPB))
827+
/*
828+
* Fix erratum 1076: CPB feature bit not being set in CPUID.
829+
* Always set it, except when running under a hypervisor.
830+
*/
831+
if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_CPB))
829832
set_cpu_cap(c, X86_FEATURE_CPB);
830833
}
831834

0 commit comments

Comments
 (0)