函数逻辑报告 |
Source Code:arch\x86\kernel\vm86_32.c |
Create Date:2022-07-27 09:40:49 |
Last Modify:2022-05-22 10:11:03 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:do_sys_vm86
函数原型:static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus)
返回类型:long
参数:
类型 | 参数 | 名称 |
---|---|---|
struct vm86plus_struct __user * | user_vm86 | |
bool | plus |
243 | regs等于current_pt_regs() |
244 | err等于0 |
246 | err等于security_mmap_addr(0) |
247 | 如果err则 |
266 | pr_info_once("Denied a call to vm86(old) from %s[%d] (uid: %d). Set the vm.mmap_min_addr sysctl to 0 and/or adjust LSM mmap_min_addr policy to enable vm86 if you are using a vm86-based DOS emulator.\n", comm, task_pid_nr(当前进程), from_kuid_munged( & init_user_ns, current_uid())) |
269 | 返回:负EPERM |
272 | 如果非vm86则 |
289 | get_user_ex(cx, & ecx) |
290 | get_user_ex(dx, & edx) |
291 | get_user_ex(si, & esi) |
292 | get_user_ex(di, & edi) |
293 | get_user_ex(bp, & ebp) |
294 | get_user_ex(ax, & eax) |
295 | get_user_ex( Return frame for iretq , & eip) |
296 | get_user_ex(seg, & cs) |
298 | get_user_ex(flags, & eflags) |
299 | get_user_ex(sp, & esp) |
300 | get_user_ex(seg, & ss) |
303 | get_user_ex(ds, & ds) |
304 | get_user_ex(fs, & fs) |
305 | get_user_ex(gs, & gs) |
307 | get_user_ex(flags, & flags) |
308 | get_user_ex(screen_bitmap, & screen_bitmap) |
309 | get_user_ex(cpu_type, & cpu_type) |
310 | get_user_catch(err) |
314 | 如果copy_from_user( & int_revectored, & int_revectored, sizeof(structrevectored_struct))则返回:负EFAULT |
318 | 如果copy_from_user( & int21_revectored, & int21_revectored, sizeof(structrevectored_struct))则返回:负EFAULT |
322 | 如果plus则 |
323 | 如果copy_from_user( & vm86plus, & vm86plus, sizeof(structvm86plus_info_struct))则返回:负EFAULT |
326 | for vm86 internal use 等于1 |
327 | 否则memset( & vm86plus, 0, sizeof(structvm86plus_info_struct)) |
342 | flags或等于No VM86 support |
348 | veflags_mask等于0 |
349 | 退出 |
352 | 退出 |
355 | 退出 |
356 | 默认 |
358 | 退出 |
365 | lazy_save_gs(gs) |
368 | 禁止抢占() |
369 | sp0加等于16 |
371 | 如果boot_cpu_has(SYSENTER/SYSEXIT )则 |
372 | sysenter_cs等于0 |
377 | 禁用抢占和中断() |
379 | 如果flags按位与lags masks则mark_screen_rdonly(内存信息) |
382 | memcpy((structkernel_vm86_regs * )regs, & vm86regs, vm86regs的长度) |
384 | 返回:ax |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |