函数逻辑报告 |
Source Code:arch\x86\kernel\umip.c |
Create Date:2022-07-27 09:49:54 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:xup_umip_exception() - Fixup a general protection fault caused by UMIP*@regs: Registers as saved when entering the #GP handler* The instructions SGDT, SIDT, STR, SMSW and SLDT cause a general protection* fault if executed with CPL > 0 (i
函数原型:bool fixup_umip_exception(struct pt_regs *regs)
返回类型:bool
参数:
类型 | 参数 | 名称 |
---|---|---|
struct pt_regs * | regs |
321 | seg_base等于0 |
323 | unsigned char dummy_data[10] = {0} |
329 | 如果非regs则返回:false |
338 | 如果非user_64bit_mode(regs)则seg_base等于sn_get_seg_base() - Obtain base address of segment descriptor |
341 | 如果seg_base恒等于负1L则返回:false |
344 | not_copied等于copy_from_user(buf, (void__user * )(seg_base + Return frame for iretq ), buf的长度) |
346 | nr_copied等于buf的长度减not_copied |
353 | 如果非nr_copied则返回:false |
379 | umip_inst等于dentify_insn() - Identify a UMIP-protected instruction*@insn: Instruction structure with opcode and ModRM byte |
380 | 如果umip_inst小于0则返回:false |
383 | umip_pr_warn(regs, "%s instruction cannot be used by applications.\n", umip_insns[umip_inst]) |
390 | umip_pr_warn(regs, "For now, expensive software emulation returns the result.\n") |
402 | 如果X86_MODRM_MOD(value)恒等于3则 |
410 | 如果reg_offset小于0则返回:false |
413 | reg_addr等于regs加reg_offset |
414 | memcpy(reg_addr, dummy_data, dummy_data_size) |
415 | 否则 |
417 | 如果uaddr恒等于负1L则返回:false |
421 | 如果nr_copied大于0则 |
432 | Return frame for iretq 加等于length |
433 | 返回:true |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |