Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
5b3eb3ad
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5b3eb3ad
编写于
12月 25, 2012
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86: switch to generic old sigaction
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
29fd4480
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
6 addition
and
148 deletion
+6
-148
arch/x86/Kconfig
arch/x86/Kconfig
+2
-0
arch/x86/ia32/sys_ia32.c
arch/x86/ia32/sys_ia32.c
+0
-39
arch/x86/include/asm/ia32.h
arch/x86/include/asm/ia32.h
+0
-7
arch/x86/include/asm/signal.h
arch/x86/include/asm/signal.h
+0
-9
arch/x86/include/asm/sys_ia32.h
arch/x86/include/asm/sys_ia32.h
+0
-3
arch/x86/include/asm/syscalls.h
arch/x86/include/asm/syscalls.h
+0
-2
arch/x86/kernel/signal.c
arch/x86/kernel/signal.c
+0
-47
arch/x86/syscalls/syscall_32.tbl
arch/x86/syscalls/syscall_32.tbl
+1
-1
arch/x86/um/Kconfig
arch/x86/um/Kconfig
+1
-0
arch/x86/um/Makefile
arch/x86/um/Makefile
+2
-2
arch/x86/um/syscalls_32.c
arch/x86/um/syscalls_32.c
+0
-38
未找到文件。
arch/x86/Kconfig
浏览文件 @
5b3eb3ad
...
...
@@ -118,6 +118,8 @@ config X86
select GENERIC_COMPAT_RT_SIGQUEUEINFO
select GENERIC_COMPAT_RT_SIGPENDING
select OLD_SIGSUSPEND3 if X86_32 || IA32_EMULATION
select OLD_SIGACTION if X86_32
select COMPAT_OLD_SIGACTION if IA32_EMULATION
config INSTRUCTION_DECODER
def_bool y
...
...
arch/x86/ia32/sys_ia32.c
浏览文件 @
5b3eb3ad
...
...
@@ -172,45 +172,6 @@ asmlinkage long sys32_mprotect(unsigned long start, size_t len,
return
sys_mprotect
(
start
,
len
,
prot
);
}
asmlinkage
long
sys32_sigaction
(
int
sig
,
struct
old_sigaction32
__user
*
act
,
struct
old_sigaction32
__user
*
oact
)
{
struct
k_sigaction
new_ka
,
old_ka
;
int
ret
;
if
(
act
)
{
compat_old_sigset_t
mask
;
compat_uptr_t
handler
,
restorer
;
if
(
!
access_ok
(
VERIFY_READ
,
act
,
sizeof
(
*
act
))
||
__get_user
(
handler
,
&
act
->
sa_handler
)
||
__get_user
(
new_ka
.
sa
.
sa_flags
,
&
act
->
sa_flags
)
||
__get_user
(
restorer
,
&
act
->
sa_restorer
)
||
__get_user
(
mask
,
&
act
->
sa_mask
))
return
-
EFAULT
;
new_ka
.
sa
.
sa_handler
=
compat_ptr
(
handler
);
new_ka
.
sa
.
sa_restorer
=
compat_ptr
(
restorer
);
siginitset
(
&
new_ka
.
sa
.
sa_mask
,
mask
);
}
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
oact
,
sizeof
(
*
oact
))
||
__put_user
(
ptr_to_compat
(
old_ka
.
sa
.
sa_handler
),
&
oact
->
sa_handler
)
||
__put_user
(
ptr_to_compat
(
old_ka
.
sa
.
sa_restorer
),
&
oact
->
sa_restorer
)
||
__put_user
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
)
||
__put_user
(
old_ka
.
sa
.
sa_mask
.
sig
[
0
],
&
oact
->
sa_mask
))
return
-
EFAULT
;
}
return
ret
;
}
asmlinkage
long
sys32_waitpid
(
compat_pid_t
pid
,
unsigned
int
__user
*
stat_addr
,
int
options
)
{
...
...
arch/x86/include/asm/ia32.h
浏览文件 @
5b3eb3ad
...
...
@@ -13,13 +13,6 @@
#include <asm/sigcontext32.h>
/* signal.h */
struct
old_sigaction32
{
unsigned
int
sa_handler
;
/* Really a pointer, but need to deal
with 32 bits */
compat_old_sigset_t
sa_mask
;
/* A 32 bit mask */
unsigned
int
sa_flags
;
unsigned
int
sa_restorer
;
/* Another 32 bit pointer */
};
struct
ucontext_ia32
{
unsigned
int
uc_flags
;
...
...
arch/x86/include/asm/signal.h
浏览文件 @
5b3eb3ad
...
...
@@ -34,15 +34,6 @@ extern void do_notify_resume(struct pt_regs *, void *, __u32);
#define __ARCH_HAS_SA_RESTORER
#ifdef __i386__
struct
old_sigaction
{
__sighandler_t
sa_handler
;
old_sigset_t
sa_mask
;
unsigned
long
sa_flags
;
__sigrestore_t
sa_restorer
;
};
#endif
/* !__i386__ */
#include <asm/sigcontext.h>
#ifdef __i386__
...
...
arch/x86/include/asm/sys_ia32.h
浏览文件 @
5b3eb3ad
...
...
@@ -32,9 +32,6 @@ struct mmap_arg_struct32;
asmlinkage
long
sys32_mmap
(
struct
mmap_arg_struct32
__user
*
);
asmlinkage
long
sys32_mprotect
(
unsigned
long
,
size_t
,
unsigned
long
);
struct
old_sigaction32
;
asmlinkage
long
sys32_sigaction
(
int
,
struct
old_sigaction32
__user
*
,
struct
old_sigaction32
__user
*
);
asmlinkage
long
sys32_alarm
(
unsigned
int
);
asmlinkage
long
sys32_waitpid
(
compat_pid_t
,
unsigned
int
__user
*
,
int
);
...
...
arch/x86/include/asm/syscalls.h
浏览文件 @
5b3eb3ad
...
...
@@ -34,8 +34,6 @@ asmlinkage int sys_get_thread_area(struct user_desc __user *);
#ifdef CONFIG_X86_32
/* kernel/signal.c */
asmlinkage
int
sys_sigaction
(
int
,
const
struct
old_sigaction
__user
*
,
struct
old_sigaction
__user
*
);
unsigned
long
sys_sigreturn
(
void
);
/* kernel/vm86_32.c */
...
...
arch/x86/kernel/signal.c
浏览文件 @
5b3eb3ad
...
...
@@ -535,53 +535,6 @@ static int x32_setup_rt_frame(int sig, struct k_sigaction *ka,
return
0
;
}
#ifdef CONFIG_X86_32
asmlinkage
int
sys_sigaction
(
int
sig
,
const
struct
old_sigaction
__user
*
act
,
struct
old_sigaction
__user
*
oact
)
{
struct
k_sigaction
new_ka
,
old_ka
;
int
ret
=
0
;
if
(
act
)
{
old_sigset_t
mask
;
if
(
!
access_ok
(
VERIFY_READ
,
act
,
sizeof
(
*
act
)))
return
-
EFAULT
;
get_user_try
{
get_user_ex
(
new_ka
.
sa
.
sa_handler
,
&
act
->
sa_handler
);
get_user_ex
(
new_ka
.
sa
.
sa_flags
,
&
act
->
sa_flags
);
get_user_ex
(
mask
,
&
act
->
sa_mask
);
get_user_ex
(
new_ka
.
sa
.
sa_restorer
,
&
act
->
sa_restorer
);
}
get_user_catch
(
ret
);
if
(
ret
)
return
-
EFAULT
;
siginitset
(
&
new_ka
.
sa
.
sa_mask
,
mask
);
}
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
oact
,
sizeof
(
*
oact
)))
return
-
EFAULT
;
put_user_try
{
put_user_ex
(
old_ka
.
sa
.
sa_handler
,
&
oact
->
sa_handler
);
put_user_ex
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
);
put_user_ex
(
old_ka
.
sa
.
sa_mask
.
sig
[
0
],
&
oact
->
sa_mask
);
put_user_ex
(
old_ka
.
sa
.
sa_restorer
,
&
oact
->
sa_restorer
);
}
put_user_catch
(
ret
);
if
(
ret
)
return
-
EFAULT
;
}
return
ret
;
}
#endif
/* CONFIG_X86_32 */
/*
* Do a signal return; undo the signal stack.
*/
...
...
arch/x86/syscalls/syscall_32.tbl
浏览文件 @
5b3eb3ad
...
...
@@ -73,7 +73,7 @@
64 i386 getppid sys_getppid
65 i386 getpgrp sys_getpgrp
66 i386 setsid sys_setsid
67 i386 sigaction sys_sigaction
sys32
_sigaction
67 i386 sigaction sys_sigaction
compat_sys
_sigaction
68 i386 sgetmask sys_sgetmask
69 i386 ssetmask sys_ssetmask
70 i386 setreuid sys_setreuid16
...
...
arch/x86/um/Kconfig
浏览文件 @
5b3eb3ad
...
...
@@ -26,6 +26,7 @@ config X86_32
select MODULES_USE_ELF_REL
select CLONE_BACKWARDS
select OLD_SIGSUSPEND3
select OLD_SIGACTION
config X86_64
def_bool 64BIT
...
...
arch/x86/um/Makefile
浏览文件 @
5b3eb3ad
...
...
@@ -10,7 +10,7 @@ endif
obj-y
=
bug.o bugs_
$(BITS)
.o delay.o fault.o ksyms.o ldt.o
\
ptrace_
$(BITS)
.o ptrace_user.o setjmp_
$(BITS)
.o signal.o
\
stub_
$(BITS)
.o stub_segv.o
syscalls_
$(BITS)
.o
\
stub_
$(BITS)
.o stub_segv.o
\
sys_call_table_
$(BITS)
.o sysrq_
$(BITS)
.o tls_
$(BITS)
.o
\
mem_
$(BITS)
.o subarch.o os-
$(OS)
/
...
...
@@ -25,7 +25,7 @@ subarch-$(CONFIG_HIGHMEM) += ../mm/highmem_32.o
else
obj-y
+=
vdso/
obj-y
+=
syscalls_64.o
vdso/
subarch-y
=
../lib/csum-partial_64.o ../lib/memcpy_64.o ../lib/thunk_64.o
\
../lib/rwsem.o
...
...
arch/x86/um/syscalls_32.c
已删除
100644 → 0
浏览文件 @
29fd4480
/*
* Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
* Licensed under the GPL
*/
#include <linux/syscalls.h>
#include <sysdep/syscalls.h>
long
sys_sigaction
(
int
sig
,
const
struct
old_sigaction
__user
*
act
,
struct
old_sigaction
__user
*
oact
)
{
struct
k_sigaction
new_ka
,
old_ka
;
int
ret
;
if
(
act
)
{
old_sigset_t
mask
;
if
(
!
access_ok
(
VERIFY_READ
,
act
,
sizeof
(
*
act
))
||
__get_user
(
new_ka
.
sa
.
sa_handler
,
&
act
->
sa_handler
)
||
__get_user
(
new_ka
.
sa
.
sa_restorer
,
&
act
->
sa_restorer
)
||
__get_user
(
new_ka
.
sa
.
sa_flags
,
&
act
->
sa_flags
)
||
__get_user
(
mask
,
&
act
->
sa_mask
))
return
-
EFAULT
;
siginitset
(
&
new_ka
.
sa
.
sa_mask
,
mask
);
}
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
oact
,
sizeof
(
*
oact
))
||
__put_user
(
old_ka
.
sa
.
sa_handler
,
&
oact
->
sa_handler
)
||
__put_user
(
old_ka
.
sa
.
sa_restorer
,
&
oact
->
sa_restorer
)
||
__put_user
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
)
||
__put_user
(
old_ka
.
sa
.
sa_mask
.
sig
[
0
],
&
oact
->
sa_mask
))
return
-
EFAULT
;
}
return
ret
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录