函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\cpu\microcode\intel.c Create Date:2022-07-27 09:08:27
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:microcode_sanity_check

函数原型:static int microcode_sanity_check(void *mc, int print_err)

返回类型:int

参数:

类型参数名称
void *mc
intprint_err
227  mc_header等于mc
228  struct extended_sigtable * ext_header = NULL
229  ext_sigcount等于0
232  total_size等于get_totalsize(mc_header)
233  data_size等于get_datasize(mc_header)
235  如果data_sizeMC_HEADER_SIZE大于total_size
236  如果print_err打印错误信息("Error: bad microcode data file size.\n")
238  返回:负EINVAL
241  如果ldrver不等于1或hdrver不等于1则
242  如果print_err打印错误信息("Error: invalid/unknown microcode update format.\n")
244  返回:负EINVAL
247  ext_table_size等于total_sizeMC_HEADER_SIZEdata_size
248  如果ext_table_size
249  ext_table_sum等于0
254  如果print_err打印错误信息("Error: truncated extended signature table.\n")
256  返回:负EINVAL
259  ext_header等于mcMC_HEADER_SIZEdata_size
260  如果ext_table_size不等于exttable_size(ext_header)则
261  如果print_err打印错误信息("Error: extended signature table size mismatch.\n")
263  返回:负EFAULT
266  ext_sigcount等于count
272  ext_tablep等于ext_header
274  i等于ext_table_sizesizeof(u32)
275 i自减循环
276  ext_table_sum加等于ext_tablep[i]
278  如果ext_table_sum
279  如果print_err打印警告信息("Bad extended signature table checksum, aborting.\n")
281  返回:负EINVAL
290  orig_sum等于0
291  i等于MC_HEADER_SIZEdata_size的和除sizeof(u32)
292 i自减循环
293  orig_sum += )
295  如果orig_sum
296  如果print_err打印错误信息("Bad microcode data checksum, aborting.\n")
298  返回:负EINVAL
301  如果非ext_table_size则返回:0
307 i小于ext_sigcount循环
308  ext_sig等于ext_headerEXT_HEADER_SIZEEXT_SIGNATURE_SIZEi
311  sum等于sigpfcksumsigpfcksum
313  如果sum
314  如果print_err打印错误信息("Bad extended signature checksum, aborting.\n")
316  返回:负EINVAL
319  返回:0
调用者
名称描述
scan_microcodeGet microcode matching with BSP's model. Only CPUs with the same model as* BSP can stay in the platform.
generic_load_microcode