Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
22e2430d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
22e2430d
编写于
10月 10, 2012
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86, um: convert to saner kernel_execve() semantics
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
a74fb73c
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
21 addition
and
68 deletion
+21
-68
arch/um/include/asm/processor-generic.h
arch/um/include/asm/processor-generic.h
+0
-2
arch/um/include/shared/os.h
arch/um/include/shared/os.h
+0
-1
arch/um/kernel/exec.c
arch/um/kernel/exec.c
+0
-5
arch/um/kernel/process.c
arch/um/kernel/process.c
+3
-7
arch/um/os-Linux/process.c
arch/um/os-Linux/process.c
+0
-13
arch/x86/Kconfig
arch/x86/Kconfig
+1
-0
arch/x86/include/asm/unistd.h
arch/x86/include/asm/unistd.h
+0
-1
arch/x86/kernel/entry_32.S
arch/x86/kernel/entry_32.S
+12
-19
arch/x86/kernel/entry_64.S
arch/x86/kernel/entry_64.S
+4
-20
arch/x86/um/Kconfig
arch/x86/um/Kconfig
+1
-0
未找到文件。
arch/um/include/asm/processor-generic.h
浏览文件 @
22e2430d
...
...
@@ -26,7 +26,6 @@ struct thread_struct {
jmp_buf
*
fault_catcher
;
struct
task_struct
*
prev_sched
;
unsigned
long
temp_stack
;
jmp_buf
*
exec_buf
;
struct
arch_thread
arch
;
jmp_buf
switch_buf
;
int
mm_count
;
...
...
@@ -54,7 +53,6 @@ struct thread_struct {
.fault_addr = NULL, \
.prev_sched = NULL, \
.temp_stack = 0, \
.exec_buf = NULL, \
.arch = INIT_ARCH_THREAD, \
.request = { 0 } \
}
...
...
arch/um/include/shared/os.h
浏览文件 @
22e2430d
...
...
@@ -191,7 +191,6 @@ extern int os_getpid(void);
extern
int
os_getpgrp
(
void
);
extern
void
init_new_thread_signals
(
void
);
extern
int
run_kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
jmp_buf
**
jmp_ptr
);
extern
int
os_map_memory
(
void
*
virt
,
int
fd
,
unsigned
long
long
off
,
unsigned
long
len
,
int
r
,
int
w
,
int
x
);
...
...
arch/um/kernel/exec.c
浏览文件 @
22e2430d
...
...
@@ -47,8 +47,3 @@ void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp)
#endif
}
EXPORT_SYMBOL
(
start_thread
);
void
__noreturn
ret_from_kernel_execve
(
struct
pt_regs
*
unused
)
{
UML_LONGJMP
(
current
->
thread
.
exec_buf
,
1
);
}
arch/um/kernel/process.c
浏览文件 @
22e2430d
...
...
@@ -135,14 +135,10 @@ void new_thread_handler(void)
arg
=
current
->
thread
.
request
.
u
.
thread
.
arg
;
/*
* The return value is 1 if the kernel thread execs a process,
* 0 if it just exits
* callback returns only if the kernel thread execs a process
*/
n
=
run_kernel_thread
(
fn
,
arg
,
&
current
->
thread
.
exec_buf
);
if
(
n
==
1
)
userspace
(
&
current
->
thread
.
regs
.
regs
);
else
do_exit
(
0
);
n
=
fn
(
arg
);
userspace
(
&
current
->
thread
.
regs
.
regs
);
}
/* Called magically, see new_thread_handler above */
...
...
arch/um/os-Linux/process.c
浏览文件 @
22e2430d
...
...
@@ -244,16 +244,3 @@ void init_new_thread_signals(void)
signal
(
SIGWINCH
,
SIG_IGN
);
signal
(
SIGTERM
,
SIG_DFL
);
}
int
run_kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
jmp_buf
**
jmp_ptr
)
{
jmp_buf
buf
;
int
n
;
*
jmp_ptr
=
&
buf
;
n
=
UML_SETJMP
(
&
buf
);
if
(
n
!=
0
)
return
n
;
(
*
fn
)(
arg
);
return
0
;
}
arch/x86/Kconfig
浏览文件 @
22e2430d
...
...
@@ -98,6 +98,7 @@ config X86
select GENERIC_STRNCPY_FROM_USER
select GENERIC_STRNLEN_USER
select GENERIC_KERNEL_THREAD
select GENERIC_KERNEL_EXECVE
config INSTRUCTION_DECODER
def_bool (KPROBES || PERF_EVENTS || UPROBES)
...
...
arch/x86/include/asm/unistd.h
浏览文件 @
22e2430d
...
...
@@ -51,7 +51,6 @@
# define __ARCH_WANT_SYS_UTIME
# define __ARCH_WANT_SYS_WAITPID
# define __ARCH_WANT_SYS_EXECVE
# define __ARCH_WANT_KERNEL_EXECVE
/*
* "Conditional" syscalls
...
...
arch/x86/kernel/entry_32.S
浏览文件 @
22e2430d
...
...
@@ -298,12 +298,20 @@ ENTRY(ret_from_fork)
CFI_ENDPROC
END
(
ret_from_fork
)
ENTRY
(
ret_from_kernel_execve
)
movl
%
eax
,
%
esp
movl
$
0
,
PT_EAX
(%
esp
)
ENTRY
(
ret_from_kernel_thread
)
CFI_STARTPROC
pushl_cfi
%
eax
call
schedule_tail
GET_THREAD_INFO
(%
ebp
)
popl_cfi
%
eax
pushl_cfi
$
0x0202
#
Reset
kernel
eflags
popfl_cfi
movl
PT_EBP
(%
esp
),%
eax
call
*
PT_EBX
(%
esp
)
movl
$
0
,
PT_EAX
(%
esp
)
jmp
syscall_exit
END
(
ret_from_kernel_execve
)
CFI_ENDPROC
ENDPROC
(
ret_from_kernel_thread
)
/*
*
Interrupt
exit
functions
should
be
protected
against
kprobes
...
...
@@ -994,21 +1002,6 @@ END(spurious_interrupt_bug)
*/
.
popsection
ENTRY
(
ret_from_kernel_thread
)
CFI_STARTPROC
pushl_cfi
%
eax
call
schedule_tail
GET_THREAD_INFO
(%
ebp
)
popl_cfi
%
eax
pushl_cfi
$
0x0202
#
Reset
kernel
eflags
popfl_cfi
movl
PT_EBP
(%
esp
),%
eax
call
*
PT_EBX
(%
esp
)
call
do_exit
ud2
#
padding
for
call
trace
CFI_ENDPROC
ENDPROC
(
ret_from_kernel_thread
)
#ifdef CONFIG_XEN
/*
Xen
doesn
't set %esp to be precisely what the normal sysenter
entrypoint
expects
,
so
fix
it
up
before
using
the
normal
path
.
*/
...
...
arch/x86/kernel/entry_64.S
浏览文件 @
22e2430d
...
...
@@ -459,15 +459,13 @@ ENTRY(ret_from_fork)
jmp
ret_from_sys_call
#
go
to
the
SYSRET
fastpath
1
:
subq
$REST_SKIP
,
%
rsp
#
move
the
stack
pointer
back
subq
$REST_SKIP
,
%
rsp
#
leave
space
for
volatiles
CFI_ADJUST_CFA_OFFSET
REST_SKIP
movq
%
rbp
,
%
rdi
call
*%
rbx
#
exit
mov
%
eax
,
%
edi
call
do_exit
ud2
#
padding
for
call
trace
movl
$
0
,
RAX
(%
rsp
)
RESTORE_REST
jmp
int_ret_from_sys_call
CFI_ENDPROC
END
(
ret_from_fork
)
...
...
@@ -1214,20 +1212,6 @@ bad_gs:
jmp
2
b
.
previous
ENTRY
(
ret_from_kernel_execve
)
movq
%
rdi
,
%
rsp
movl
$
0
,
RAX
(%
rsp
)
//
RESTORE_REST
movq
0
*
8
(%
rsp
),
%
r15
movq
1
*
8
(%
rsp
),
%
r14
movq
2
*
8
(%
rsp
),
%
r13
movq
3
*
8
(%
rsp
),
%
r12
movq
4
*
8
(%
rsp
),
%
rbp
movq
5
*
8
(%
rsp
),
%
rbx
addq
$
(
6
*
8
),
%
rsp
jmp
int_ret_from_sys_call
END
(
ret_from_kernel_execve
)
/*
Call
softirq
on
interrupt
stack
.
Interrupts
are
off
.
*/
ENTRY
(
call_softirq
)
CFI_STARTPROC
...
...
arch/x86/um/Kconfig
浏览文件 @
22e2430d
...
...
@@ -14,6 +14,7 @@ config UML_X86
def_bool y
select GENERIC_FIND_FIRST_BIT
select GENERIC_KERNEL_THREAD
select GENERIC_KERNEL_EXECVE
config 64BIT
bool "64-bit kernel" if SUBARCH = "x86"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录