+10
-4
arch/x86/boot/compressed/string.c
+10
-4
arch/x86/boot/compressed/string.c
···
11
#include "../string.c"
12
13
#ifdef CONFIG_X86_32
14
-
static void *__memcpy(void *dest, const void *src, size_t n)
15
{
16
int d0, d1, d2;
17
asm volatile(
···
25
return dest;
26
}
27
#else
28
-
static void *__memcpy(void *dest, const void *src, size_t n)
29
{
30
long d0, d1, d2;
31
asm volatile(
···
56
const unsigned char *s = src;
57
58
if (d <= s || d - s >= n)
59
-
return __memcpy(dest, src, n);
60
61
while (n-- > 0)
62
d[n] = s[n];
···
71
warn("Avoiding potentially unsafe overlapping memcpy()!");
72
return memmove(dest, src, n);
73
}
74
-
return __memcpy(dest, src, n);
75
}
···
11
#include "../string.c"
12
13
#ifdef CONFIG_X86_32
14
+
static void *____memcpy(void *dest, const void *src, size_t n)
15
{
16
int d0, d1, d2;
17
asm volatile(
···
25
return dest;
26
}
27
#else
28
+
static void *____memcpy(void *dest, const void *src, size_t n)
29
{
30
long d0, d1, d2;
31
asm volatile(
···
56
const unsigned char *s = src;
57
58
if (d <= s || d - s >= n)
59
+
return ____memcpy(dest, src, n);
60
61
while (n-- > 0)
62
d[n] = s[n];
···
71
warn("Avoiding potentially unsafe overlapping memcpy()!");
72
return memmove(dest, src, n);
73
}
74
+
return ____memcpy(dest, src, n);
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
+5
-2
arch/x86/kernel/cpu/amd.c
+5
-2
arch/x86/kernel/cpu/amd.c
···
824
{
825
set_cpu_cap(c, X86_FEATURE_ZEN);
826
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))
832
set_cpu_cap(c, X86_FEATURE_CPB);
833
}
834