Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
d9e968cb
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d9e968cb
编写于
5月 31, 2017
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
getrlimit()/setrlimit(): move compat to native
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
ca2406ed
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
38 deletion
+48
-38
kernel/compat.c
kernel/compat.c
+0
-38
kernel/sys.c
kernel/sys.c
+48
-0
未找到文件。
kernel/compat.c
浏览文件 @
d9e968cb
...
@@ -427,44 +427,6 @@ COMPAT_SYSCALL_DEFINE3(sigprocmask, int, how,
...
@@ -427,44 +427,6 @@ COMPAT_SYSCALL_DEFINE3(sigprocmask, int, how,
#endif
#endif
COMPAT_SYSCALL_DEFINE2
(
setrlimit
,
unsigned
int
,
resource
,
struct
compat_rlimit
__user
*
,
rlim
)
{
struct
rlimit
r
;
if
(
!
access_ok
(
VERIFY_READ
,
rlim
,
sizeof
(
*
rlim
))
||
__get_user
(
r
.
rlim_cur
,
&
rlim
->
rlim_cur
)
||
__get_user
(
r
.
rlim_max
,
&
rlim
->
rlim_max
))
return
-
EFAULT
;
if
(
r
.
rlim_cur
==
COMPAT_RLIM_INFINITY
)
r
.
rlim_cur
=
RLIM_INFINITY
;
if
(
r
.
rlim_max
==
COMPAT_RLIM_INFINITY
)
r
.
rlim_max
=
RLIM_INFINITY
;
return
do_prlimit
(
current
,
resource
,
&
r
,
NULL
);
}
COMPAT_SYSCALL_DEFINE2
(
getrlimit
,
unsigned
int
,
resource
,
struct
compat_rlimit
__user
*
,
rlim
)
{
struct
rlimit
r
;
int
ret
;
ret
=
do_prlimit
(
current
,
resource
,
NULL
,
&
r
);
if
(
!
ret
)
{
if
(
r
.
rlim_cur
>
COMPAT_RLIM_INFINITY
)
r
.
rlim_cur
=
COMPAT_RLIM_INFINITY
;
if
(
r
.
rlim_max
>
COMPAT_RLIM_INFINITY
)
r
.
rlim_max
=
COMPAT_RLIM_INFINITY
;
if
(
!
access_ok
(
VERIFY_WRITE
,
rlim
,
sizeof
(
*
rlim
))
||
__put_user
(
r
.
rlim_cur
,
&
rlim
->
rlim_cur
)
||
__put_user
(
r
.
rlim_max
,
&
rlim
->
rlim_max
))
return
-
EFAULT
;
}
return
ret
;
}
int
put_compat_rusage
(
const
struct
rusage
*
r
,
struct
compat_rusage
__user
*
ru
)
int
put_compat_rusage
(
const
struct
rusage
*
r
,
struct
compat_rusage
__user
*
ru
)
{
{
if
(
!
access_ok
(
VERIFY_WRITE
,
ru
,
sizeof
(
*
ru
))
||
if
(
!
access_ok
(
VERIFY_WRITE
,
ru
,
sizeof
(
*
ru
))
||
...
...
kernel/sys.c
浏览文件 @
d9e968cb
...
@@ -1332,6 +1332,54 @@ SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
...
@@ -1332,6 +1332,54 @@ SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
return
ret
;
return
ret
;
}
}
#ifdef CONFIG_COMPAT
COMPAT_SYSCALL_DEFINE2
(
setrlimit
,
unsigned
int
,
resource
,
struct
compat_rlimit
__user
*
,
rlim
)
{
struct
rlimit
r
;
struct
compat_rlimit
r32
;
if
(
copy_from_user
(
&
r32
,
rlim
,
sizeof
(
struct
compat_rlimit
)))
return
-
EFAULT
;
if
(
r32
.
rlim_cur
==
COMPAT_RLIM_INFINITY
)
r
.
rlim_cur
=
RLIM_INFINITY
;
else
r
.
rlim_cur
=
r32
.
rlim_cur
;
if
(
r32
.
rlim_max
==
COMPAT_RLIM_INFINITY
)
r
.
rlim_max
=
RLIM_INFINITY
;
else
r
.
rlim_max
=
r32
.
rlim_max
;
return
do_prlimit
(
current
,
resource
,
&
r
,
NULL
);
}
COMPAT_SYSCALL_DEFINE2
(
getrlimit
,
unsigned
int
,
resource
,
struct
compat_rlimit
__user
*
,
rlim
)
{
struct
rlimit
r
;
int
ret
;
ret
=
do_prlimit
(
current
,
resource
,
NULL
,
&
r
);
if
(
!
ret
)
{
struct
rlimit
r32
;
if
(
r
.
rlim_cur
>
COMPAT_RLIM_INFINITY
)
r32
.
rlim_cur
=
COMPAT_RLIM_INFINITY
;
else
r32
.
rlim_cur
=
r
.
rlim_cur
;
if
(
r
.
rlim_max
>
COMPAT_RLIM_INFINITY
)
r32
.
rlim_max
=
COMPAT_RLIM_INFINITY
;
else
r32
.
rlim_max
=
r
.
rlim_max
;
if
(
copy_to_user
(
rlim
,
&
r32
,
sizeof
(
struct
compat_rlimit
)))
return
-
EFAULT
;
}
return
ret
;
}
#endif
#ifdef __ARCH_WANT_SYS_OLD_GETRLIMIT
#ifdef __ARCH_WANT_SYS_OLD_GETRLIMIT
/*
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录