Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
ab2bf0c1
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ab2bf0c1
编写于
12月 07, 2006
作者:
A
Andi Kleen
提交者:
Andi Kleen
12月 07, 2006
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PATCH] x86-64: Use probe_kernel_address in arch/x86_64/*
Instead of open coded __get_user Signed-off-by:
N
Andi Kleen
<
ak@suse.de
>
上级
2fff0a48
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
6 addition
and
6 deletion
+6
-6
arch/x86_64/kernel/traps.c
arch/x86_64/kernel/traps.c
+1
-1
arch/x86_64/mm/fault.c
arch/x86_64/mm/fault.c
+5
-5
未找到文件。
arch/x86_64/kernel/traps.c
浏览文件 @
ab2bf0c1
...
...
@@ -30,9 +30,9 @@
#include <linux/kprobes.h>
#include <linux/kexec.h>
#include <linux/unwind.h>
#include <linux/uaccess.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/atomic.h>
#include <asm/debugreg.h>
...
...
arch/x86_64/mm/fault.c
浏览文件 @
ab2bf0c1
...
...
@@ -23,9 +23,9 @@
#include <linux/compiler.h>
#include <linux/module.h>
#include <linux/kprobes.h>
#include <linux/uaccess.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/pgalloc.h>
#include <asm/smp.h>
#include <asm/tlbflush.h>
...
...
@@ -96,7 +96,7 @@ void bust_spinlocks(int yes)
static
noinline
int
is_prefetch
(
struct
pt_regs
*
regs
,
unsigned
long
addr
,
unsigned
long
error_code
)
{
unsigned
char
__user
*
instr
;
unsigned
char
*
instr
;
int
scan_more
=
1
;
int
prefetch
=
0
;
unsigned
char
*
max_instr
;
...
...
@@ -116,7 +116,7 @@ static noinline int is_prefetch(struct pt_regs *regs, unsigned long addr,
unsigned
char
instr_hi
;
unsigned
char
instr_lo
;
if
(
__get_user
(
opcode
,
(
char
__user
*
)
instr
))
if
(
probe_kernel_address
(
instr
,
opcode
))
break
;
instr_hi
=
opcode
&
0xf0
;
...
...
@@ -154,7 +154,7 @@ static noinline int is_prefetch(struct pt_regs *regs, unsigned long addr,
case
0x00
:
/* Prefetch instruction is 0x0F0D or 0x0F18 */
scan_more
=
0
;
if
(
__get_user
(
opcode
,
(
char
__user
*
)
instr
))
if
(
probe_kernel_address
(
instr
,
opcode
))
break
;
prefetch
=
(
instr_lo
==
0xF
)
&&
(
opcode
==
0x0D
||
opcode
==
0x18
);
...
...
@@ -170,7 +170,7 @@ static noinline int is_prefetch(struct pt_regs *regs, unsigned long addr,
static
int
bad_address
(
void
*
p
)
{
unsigned
long
dummy
;
return
__get_user
(
dummy
,
(
unsigned
long
__user
*
)
p
);
return
probe_kernel_address
((
unsigned
long
*
)
p
,
dummy
);
}
void
dump_pagetable
(
unsigned
long
address
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录