diff options
Diffstat (limited to 'usr/src/uts/i86pc/os/microcode.c')
| -rw-r--r-- | usr/src/uts/i86pc/os/microcode.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/usr/src/uts/i86pc/os/microcode.c b/usr/src/uts/i86pc/os/microcode.c index d07a79bf18..cbcecadbef 100644 --- a/usr/src/uts/i86pc/os/microcode.c +++ b/usr/src/uts/i86pc/os/microcode.c @@ -25,6 +25,7 @@ * * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2018, Joyent, Inc. + * Copyright 2021 OmniOS Community Edition (OmniOSce) Association. */ #include <sys/asm_linkage.h> @@ -609,18 +610,18 @@ ucode_locate_intel(cpu_t *cp, cpu_ucode_info_t *uinfop, ucode_file_t *ufp) rc = EM_FILESIZE; } else if (ucode_checksum_intel(0, ext_size, (uint8_t *)(ucodefp->uf_ext_table))) { - rc = EM_CHECKSUM; + rc = EM_EXTCHECKSUM; } else { int i; - ext_size -= UCODE_EXT_TABLE_SIZE_INTEL; - for (i = 0; i < ucodefp->uf_ext_table->uet_count; - i++) { - if (ucode_checksum_intel(0, - UCODE_EXT_SIG_SIZE_INTEL, - (uint8_t *)(&(ucodefp->uf_ext_table-> - uet_ext_sig[i])))) { - rc = EM_CHECKSUM; + for (i = 0; i < ucodefp->uf_ext_table->uet_count; i++) { + ucode_ext_sig_intel_t *sig; + + sig = &ucodefp->uf_ext_table->uet_ext_sig[i]; + + if (ucode_checksum_intel_extsig(uhp, + sig) != 0) { + rc = EM_SIGCHECKSUM; break; } } |
