Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
29e646df
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
29e646df
编写于
2月 01, 2006
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PATCH] powerpc signal __user annotations
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
5b1a43d7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
13 deletion
+14
-13
arch/powerpc/kernel/signal_32.c
arch/powerpc/kernel/signal_32.c
+7
-11
arch/powerpc/kernel/signal_64.c
arch/powerpc/kernel/signal_64.c
+2
-2
include/asm-powerpc/compat.h
include/asm-powerpc/compat.h
+5
-0
未找到文件。
arch/powerpc/kernel/signal_32.c
浏览文件 @
29e646df
...
...
@@ -142,11 +142,7 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
return
0
;
}
static
inline
compat_uptr_t
to_user_ptr
(
void
*
kp
)
{
return
(
compat_uptr_t
)(
u64
)
kp
;
}
#define to_user_ptr(p) ptr_to_compat(p)
#define from_user_ptr(p) compat_ptr(p)
static
inline
int
save_general_regs
(
struct
pt_regs
*
regs
,
...
...
@@ -213,8 +209,8 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
return
0
;
}
#define to_user_ptr(p) (
p
)
#define from_user_ptr(p) (
p
)
#define to_user_ptr(p) (
(unsigned long)(p)
)
#define from_user_ptr(p) (
(void __user *)(p)
)
static
inline
int
save_general_regs
(
struct
pt_regs
*
regs
,
struct
mcontext
__user
*
frame
)
...
...
@@ -526,7 +522,7 @@ long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
ret
=
put_user
(
(
long
)
old_ka
.
sa
.
sa_handler
,
&
oact
->
sa_handler
);
ret
=
put_user
(
to_user_ptr
(
old_ka
.
sa
.
sa_handler
)
,
&
oact
->
sa_handler
);
ret
|=
put_sigset_t
(
&
oact
->
sa_mask
,
&
old_ka
.
sa
.
sa_mask
);
ret
|=
__put_user
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
);
}
...
...
@@ -675,8 +671,8 @@ long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo
int
compat_sys_sigaltstack
(
u32
__new
,
u32
__old
,
int
r5
,
int
r6
,
int
r7
,
int
r8
,
struct
pt_regs
*
regs
)
{
stack_32_t
__user
*
newstack
=
(
stack_32_t
__user
*
)(
long
)
__new
;
stack_32_t
__user
*
oldstack
=
(
stack_32_t
__user
*
)(
long
)
__old
;
stack_32_t
__user
*
newstack
=
compat_ptr
(
__new
)
;
stack_32_t
__user
*
oldstack
=
compat_ptr
(
__old
)
;
stack_t
uss
,
uoss
;
int
ret
;
mm_segment_t
old_fs
;
...
...
@@ -708,7 +704,7 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
set_fs
(
old_fs
);
/* Copy the stack information to the user output buffer */
if
(
!
ret
&&
oldstack
&&
(
put_user
(
(
long
)
uoss
.
ss_sp
,
&
oldstack
->
ss_sp
)
||
(
put_user
(
ptr_to_compat
(
uoss
.
ss_sp
)
,
&
oldstack
->
ss_sp
)
||
__put_user
(
uoss
.
ss_flags
,
&
oldstack
->
ss_flags
)
||
__put_user
(
uoss
.
ss_size
,
&
oldstack
->
ss_size
)))
return
-
EFAULT
;
...
...
arch/powerpc/kernel/signal_64.c
浏览文件 @
29e646df
...
...
@@ -60,8 +60,8 @@ struct rt_sigframe {
struct
ucontext
uc
;
unsigned
long
_unused
[
2
];
unsigned
int
tramp
[
TRAMP_SIZE
];
struct
siginfo
*
pinfo
;
void
*
puc
;
struct
siginfo
__user
*
pinfo
;
void
__user
*
puc
;
struct
siginfo
info
;
/* 64 bit ABI allows for 288 bytes below sp before decrementing it. */
char
abigap
[
288
];
...
...
include/asm-powerpc/compat.h
浏览文件 @
29e646df
...
...
@@ -126,6 +126,11 @@ static inline void __user *compat_ptr(compat_uptr_t uptr)
return
(
void
__user
*
)(
unsigned
long
)
uptr
;
}
static
inline
compat_uptr_t
ptr_to_compat
(
void
__user
*
uptr
)
{
return
(
u32
)(
unsigned
long
)
uptr
;
}
static
inline
void
__user
*
compat_alloc_user_space
(
long
len
)
{
struct
pt_regs
*
regs
=
current
->
thread
.
regs
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录