Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
359566fa
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
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看板
提交
359566fa
编写于
5月 14, 2017
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
kernel_wait4()/kernel_waitid(): delay copying status to userland
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
ce72a16f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
12 deletion
+8
-12
kernel/exit.c
kernel/exit.c
+8
-12
未找到文件。
kernel/exit.c
浏览文件 @
359566fa
...
...
@@ -1002,7 +1002,7 @@ struct wait_opts {
struct
pid
*
wo_pid
;
struct
siginfo
__user
*
wo_info
;
int
__user
*
wo_stat
;
int
wo_stat
;
struct
rusage
*
wo_rusage
;
wait_queue_t
child_wait
;
...
...
@@ -1189,8 +1189,7 @@ static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)
retval
=
0
;
status
=
(
p
->
signal
->
flags
&
SIGNAL_GROUP_EXIT
)
?
p
->
signal
->
group_exit_code
:
p
->
exit_code
;
if
(
!
retval
&&
wo
->
wo_stat
)
retval
=
put_user
(
status
,
wo
->
wo_stat
);
wo
->
wo_stat
=
status
;
infop
=
wo
->
wo_info
;
if
(
!
retval
&&
infop
)
...
...
@@ -1322,8 +1321,7 @@ static int wait_task_stopped(struct wait_opts *wo,
if
(
wo
->
wo_rusage
)
getrusage
(
p
,
RUSAGE_BOTH
,
wo
->
wo_rusage
);
retval
=
0
;
if
(
!
retval
&&
wo
->
wo_stat
)
retval
=
put_user
((
exit_code
<<
8
)
|
0x7f
,
wo
->
wo_stat
);
wo
->
wo_stat
=
(
exit_code
<<
8
)
|
0x7f
;
infop
=
wo
->
wo_info
;
if
(
!
retval
&&
infop
)
...
...
@@ -1383,12 +1381,9 @@ static int wait_task_continued(struct wait_opts *wo, struct task_struct *p)
if
(
!
wo
->
wo_info
)
{
if
(
wo
->
wo_rusage
)
getrusage
(
p
,
RUSAGE_BOTH
,
wo
->
wo_rusage
);
retval
=
0
;
put_task_struct
(
p
);
if
(
!
retval
&&
wo
->
wo_stat
)
retval
=
put_user
(
0xffff
,
wo
->
wo_stat
);
if
(
!
retval
)
retval
=
pid
;
wo
->
wo_stat
=
0xffff
;
retval
=
pid
;
}
else
{
retval
=
wait_noreap_copyout
(
wo
,
p
,
pid
,
uid
,
CLD_CONTINUED
,
SIGCONT
);
...
...
@@ -1662,7 +1657,6 @@ static long kernel_waitid(int which, pid_t upid, struct siginfo __user *infop,
wo
.
wo_pid
=
pid
;
wo
.
wo_flags
=
options
;
wo
.
wo_info
=
infop
;
wo
.
wo_stat
=
NULL
;
wo
.
wo_rusage
=
ru
;
ret
=
do_wait
(
&
wo
);
...
...
@@ -1734,10 +1728,12 @@ static long kernel_wait4(pid_t upid, int __user *stat_addr,
wo
.
wo_pid
=
pid
;
wo
.
wo_flags
=
options
|
WEXITED
;
wo
.
wo_info
=
NULL
;
wo
.
wo_stat
=
stat_addr
;
wo
.
wo_stat
=
0
;
wo
.
wo_rusage
=
ru
;
ret
=
do_wait
(
&
wo
);
put_pid
(
pid
);
if
(
ret
>
0
&&
stat_addr
&&
put_user
(
wo
.
wo_stat
,
stat_addr
))
ret
=
-
EFAULT
;
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录