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
Unified · Split
| @@ -11,7 +11,7 @@ · 10 unmodified lines | ||
| 11 | 11 | #include "../string.c" |
| 12 | 12 | |
| 13 | 13 | #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) | |
| 15 | 15 | { |
| 16 | 16 | int d0, d1, d2; |
| 17 | 17 | asm volatile( |
| @@ -25,7 +25,7 @@ static void *__memcpy(void *dest, const void *src, size_t n) · 7 unmodified lines | ||
| 25 | 25 | return dest; |
| 26 | 26 | } |
| 27 | 27 | #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) | |
| 29 | 29 | { |
| 30 | 30 | long d0, d1, d2; |
| 31 | 31 | asm volatile( |
| @@ -56,7 +56,7 @@ void *memmove(void *dest, const void *src, size_t n) · 24 unmodified lines | ||
| 56 | 56 | const unsigned char *s = src; |
| 57 | 57 | |
| 58 | 58 | if (d <= s || d - s >= n) |
| 59 | − return __memcpy(dest, src, n); | |
| 59 | + return ____memcpy(dest, src, n); | |
| 60 | 60 | |
| 61 | 61 | while (n-- > 0) |
| 62 | 62 | d[n] = s[n]; |
| @@ -71,5 +71,11 @@ void *memcpy(void *dest, const void *src, size_t n) · 8 unmodified lines | ||
| 71 | 71 | warn("Avoiding potentially unsafe overlapping memcpy()!"); |
| 72 | 72 | return memmove(dest, src, n); |
| 73 | 73 | } |
| 74 | − return __memcpy(dest, src, n); | |
| 74 | + return ____memcpy(dest, src, n); | |
| 75 | 75 | } |
| 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 | |
| @@ -824,8 +824,11 @@ static void init_amd_zn(struct cpuinfo_x86 *c) · 823 unmodified lines | ||
| 824 | 824 | { |
| 825 | 825 | set_cpu_cap(c, X86_FEATURE_ZEN); |
| 826 | 826 | |
| 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)) | |
| 829 | 832 | set_cpu_cap(c, X86_FEATURE_CPB); |
| 830 | 833 | } |
| 831 | 834 | |