svn commit: r337754 - head/sys/x86/x86
Mark Johnston
markj at FreeBSD.org
Tue Aug 14 14:02:55 UTC 2018
Author: markj
Date: Tue Aug 14 14:02:53 2018
New Revision: 337754
URL: https://svnweb.freebsd.org/changeset/base/337754
Log:
Don't use memcpy() in the early microcode loading code.
At some point memcpy() may be an ifunc, ifunc resolution cannot be done
until CPU identification has been performed, and CPU identification must
be done after loading any microcode updates.
X-MFC with: r337715
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/x86/x86/ucode.c
Modified: head/sys/x86/x86/ucode.c
==============================================================================
--- head/sys/x86/x86/ucode.c Tue Aug 14 14:01:12 2018 (r337753)
+++ head/sys/x86/x86/ucode.c Tue Aug 14 14:02:53 2018 (r337754)
@@ -312,8 +312,7 @@ ucode_load_bsp(uintptr_t free)
uint8_t *addr, *fileaddr, *match;
char *type;
caddr_t file;
- size_t len, ucode_len;
- int i;
+ size_t i, len, ucode_len;
KASSERT(free % PAGE_SIZE == 0, ("unaligned boundary %p", (void *)free));
@@ -345,7 +344,8 @@ ucode_load_bsp(uintptr_t free)
match = loader->match(fileaddr, &len);
if (match != NULL) {
addr = map_ucode(free, len);
- memcpy(addr, match, len);
+ for (i = 0; i < len; i++)
+ addr[i] = match[i];
match = addr;
if (loader->load(match, false) == 0) {
More information about the svn-src-all
mailing list