Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
aeba0390
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
aeba0390
编写于
6月 03, 2017
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mga: switch compat ioctls to drm_ioctl_kernel()
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
ff32d39b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
64 addition
and
90 deletion
+64
-90
drivers/gpu/drm/drm_ioctl.c
drivers/gpu/drm/drm_ioctl.c
+1
-0
drivers/gpu/drm/mga/mga_drv.h
drivers/gpu/drm/mga/mga_drv.h
+2
-0
drivers/gpu/drm/mga/mga_ioc32.c
drivers/gpu/drm/mga/mga_ioc32.c
+60
-89
drivers/gpu/drm/mga/mga_state.c
drivers/gpu/drm/mga/mga_state.c
+1
-1
未找到文件。
drivers/gpu/drm/drm_ioctl.c
浏览文件 @
aeba0390
...
...
@@ -719,6 +719,7 @@ long drm_ioctl_kernel(struct file *file, drm_ioctl_t *func, void *kdata,
}
return
retcode
;
}
EXPORT_SYMBOL
(
drm_ioctl_kernel
);
/**
* drm_ioctl - ioctl callback implementation for DRM drivers
...
...
drivers/gpu/drm/mga/mga_drv.h
浏览文件 @
aeba0390
...
...
@@ -159,6 +159,8 @@ extern int mga_dma_bootstrap(struct drm_device *dev, void *data,
struct
drm_file
*
file_priv
);
extern
int
mga_dma_init
(
struct
drm_device
*
dev
,
void
*
data
,
struct
drm_file
*
file_priv
);
extern
int
mga_getparam
(
struct
drm_device
*
dev
,
void
*
data
,
struct
drm_file
*
file_priv
);
extern
int
mga_dma_flush
(
struct
drm_device
*
dev
,
void
*
data
,
struct
drm_file
*
file_priv
);
extern
int
mga_dma_reset
(
struct
drm_device
*
dev
,
void
*
data
,
...
...
drivers/gpu/drm/mga/mga_ioc32.c
浏览文件 @
aeba0390
...
...
@@ -61,46 +61,25 @@ static int compat_mga_init(struct file *file, unsigned int cmd,
unsigned
long
arg
)
{
drm_mga_init32_t
init32
;
drm_mga_init_t
__user
*
init
;
int
err
=
0
,
i
;
drm_mga_init_t
init
;
if
(
copy_from_user
(
&
init32
,
(
void
__user
*
)
arg
,
sizeof
(
init32
)))
return
-
EFAULT
;
init
=
compat_alloc_user_space
(
sizeof
(
*
init
));
if
(
!
access_ok
(
VERIFY_WRITE
,
init
,
sizeof
(
*
init
))
||
__put_user
(
init32
.
func
,
&
init
->
func
)
||
__put_user
(
init32
.
sarea_priv_offset
,
&
init
->
sarea_priv_offset
)
||
__put_user
(
init32
.
chipset
,
&
init
->
chipset
)
||
__put_user
(
init32
.
sgram
,
&
init
->
sgram
)
||
__put_user
(
init32
.
maccess
,
&
init
->
maccess
)
||
__put_user
(
init32
.
fb_cpp
,
&
init
->
fb_cpp
)
||
__put_user
(
init32
.
front_offset
,
&
init
->
front_offset
)
||
__put_user
(
init32
.
front_pitch
,
&
init
->
front_pitch
)
||
__put_user
(
init32
.
back_offset
,
&
init
->
back_offset
)
||
__put_user
(
init32
.
back_pitch
,
&
init
->
back_pitch
)
||
__put_user
(
init32
.
depth_cpp
,
&
init
->
depth_cpp
)
||
__put_user
(
init32
.
depth_offset
,
&
init
->
depth_offset
)
||
__put_user
(
init32
.
depth_pitch
,
&
init
->
depth_pitch
)
||
__put_user
(
init32
.
fb_offset
,
&
init
->
fb_offset
)
||
__put_user
(
init32
.
mmio_offset
,
&
init
->
mmio_offset
)
||
__put_user
(
init32
.
status_offset
,
&
init
->
status_offset
)
||
__put_user
(
init32
.
warp_offset
,
&
init
->
warp_offset
)
||
__put_user
(
init32
.
primary_offset
,
&
init
->
primary_offset
)
||
__put_user
(
init32
.
buffers_offset
,
&
init
->
buffers_offset
))
return
-
EFAULT
;
for
(
i
=
0
;
i
<
MGA_NR_TEX_HEAPS
;
i
++
)
{
err
|=
__put_user
(
init32
.
texture_offset
[
i
],
&
init
->
texture_offset
[
i
]);
err
|=
__put_user
(
init32
.
texture_size
[
i
],
&
init
->
texture_size
[
i
]);
}
if
(
err
)
return
-
EFAULT
;
return
drm_ioctl
(
file
,
DRM_IOCTL_MGA_INIT
,
(
unsigned
long
)
init
);
init
.
func
=
init32
.
func
;
init
.
sarea_priv_offset
=
init32
.
sarea_priv_offset
;
memcpy
(
&
init
.
chipset
,
&
init32
.
chipset
,
offsetof
(
drm_mga_init_t
,
fb_offset
)
-
offsetof
(
drm_mga_init_t
,
chipset
));
init
.
fb_offset
=
init32
.
fb_offset
;
init
.
mmio_offset
=
init32
.
mmio_offset
;
init
.
status_offset
=
init32
.
status_offset
;
init
.
warp_offset
=
init32
.
warp_offset
;
init
.
primary_offset
=
init32
.
primary_offset
;
init
.
buffers_offset
=
init32
.
buffers_offset
;
return
drm_ioctl_kernel
(
file
,
mga_dma_init
,
&
init
,
DRM_AUTH
|
DRM_MASTER
|
DRM_ROOT_ONLY
);
}
typedef
struct
drm_mga_getparam32
{
...
...
@@ -112,19 +91,14 @@ static int compat_mga_getparam(struct file *file, unsigned int cmd,
unsigned
long
arg
)
{
drm_mga_getparam32_t
getparam32
;
drm_mga_getparam_t
__user
*
getparam
;
drm_mga_getparam_t
getparam
;
if
(
copy_from_user
(
&
getparam32
,
(
void
__user
*
)
arg
,
sizeof
(
getparam32
)))
return
-
EFAULT
;
getparam
=
compat_alloc_user_space
(
sizeof
(
*
getparam
));
if
(
!
access_ok
(
VERIFY_WRITE
,
getparam
,
sizeof
(
*
getparam
))
||
__put_user
(
getparam32
.
param
,
&
getparam
->
param
)
||
__put_user
((
void
__user
*
)(
unsigned
long
)
getparam32
.
value
,
&
getparam
->
value
))
return
-
EFAULT
;
return
drm_ioctl
(
file
,
DRM_IOCTL_MGA_GETPARAM
,
(
unsigned
long
)
getparam
);
getparam
.
param
=
getparam32
.
param
;
getparam
.
value
=
compat_ptr
(
getparam32
.
value
);
return
drm_ioctl_kernel
(
file
,
mga_getparam
,
&
getparam
,
DRM_AUTH
);
}
typedef
struct
drm_mga_drm_bootstrap32
{
...
...
@@ -141,48 +115,33 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
unsigned
long
arg
)
{
drm_mga_dma_bootstrap32_t
dma_bootstrap32
;
drm_mga_dma_bootstrap_t
__user
*
dma_bootstrap
;
drm_mga_dma_bootstrap_t
__user
dma_bootstrap
;
int
err
;
if
(
copy_from_user
(
&
dma_bootstrap32
,
(
void
__user
*
)
arg
,
sizeof
(
dma_bootstrap32
)))
return
-
EFAULT
;
dma_bootstrap
=
compat_alloc_user_space
(
sizeof
(
*
dma_bootstrap
));
if
(
!
access_ok
(
VERIFY_WRITE
,
dma_bootstrap
,
sizeof
(
*
dma_bootstrap
))
||
__put_user
(
dma_bootstrap32
.
texture_handle
,
&
dma_bootstrap
->
texture_handle
)
||
__put_user
(
dma_bootstrap32
.
texture_size
,
&
dma_bootstrap
->
texture_size
)
||
__put_user
(
dma_bootstrap32
.
primary_size
,
&
dma_bootstrap
->
primary_size
)
||
__put_user
(
dma_bootstrap32
.
secondary_bin_count
,
&
dma_bootstrap
->
secondary_bin_count
)
||
__put_user
(
dma_bootstrap32
.
secondary_bin_size
,
&
dma_bootstrap
->
secondary_bin_size
)
||
__put_user
(
dma_bootstrap32
.
agp_mode
,
&
dma_bootstrap
->
agp_mode
)
||
__put_user
(
dma_bootstrap32
.
agp_size
,
&
dma_bootstrap
->
agp_size
))
return
-
EFAULT
;
dma_bootstrap
.
texture_handle
=
dma_bootstrap32
.
texture_handle
;
dma_bootstrap
.
texture_size
=
dma_bootstrap32
.
texture_size
;
dma_bootstrap
.
primary_size
=
dma_bootstrap32
.
primary_size
;
dma_bootstrap
.
secondary_bin_count
=
dma_bootstrap32
.
secondary_bin_count
;
dma_bootstrap
.
secondary_bin_size
=
dma_bootstrap32
.
secondary_bin_size
;
dma_bootstrap
.
agp_mode
=
dma_bootstrap32
.
agp_mode
;
dma_bootstrap
.
agp_size
=
dma_bootstrap32
.
agp_size
;
err
=
drm_ioctl
(
file
,
DRM_IOCTL_MGA_DMA_BOOTSTRAP
,
(
unsigned
long
)
dma_bootstrap
);
err
=
drm_ioctl
_kernel
(
file
,
mga_dma_bootstrap
,
&
dma_bootstrap
,
DRM_AUTH
|
DRM_MASTER
|
DRM_ROOT_ONLY
);
if
(
err
)
return
err
;
if
(
__get_user
(
dma_bootstrap32
.
texture_handle
,
&
dma_bootstrap
->
texture_handle
)
||
__get_user
(
dma_bootstrap32
.
texture_size
,
&
dma_bootstrap
->
texture_size
)
||
__get_user
(
dma_bootstrap32
.
primary_size
,
&
dma_bootstrap
->
primary_size
)
||
__get_user
(
dma_bootstrap32
.
secondary_bin_count
,
&
dma_bootstrap
->
secondary_bin_count
)
||
__get_user
(
dma_bootstrap32
.
secondary_bin_size
,
&
dma_bootstrap
->
secondary_bin_size
)
||
__get_user
(
dma_bootstrap32
.
agp_mode
,
&
dma_bootstrap
->
agp_mode
)
||
__get_user
(
dma_bootstrap32
.
agp_size
,
&
dma_bootstrap
->
agp_size
))
return
-
EFAULT
;
dma_bootstrap32
.
texture_handle
=
dma_bootstrap
.
texture_handle
;
dma_bootstrap32
.
texture_size
=
dma_bootstrap
.
texture_size
;
dma_bootstrap32
.
primary_size
=
dma_bootstrap
.
primary_size
;
dma_bootstrap32
.
secondary_bin_count
=
dma_bootstrap
.
secondary_bin_count
;
dma_bootstrap32
.
secondary_bin_size
=
dma_bootstrap
.
secondary_bin_size
;
dma_bootstrap32
.
agp_mode
=
dma_bootstrap
.
agp_mode
;
dma_bootstrap32
.
agp_size
=
dma_bootstrap
.
agp_size
;
if
(
copy_to_user
((
void
__user
*
)
arg
,
&
dma_bootstrap32
,
sizeof
(
dma_bootstrap32
)))
return
-
EFAULT
;
...
...
@@ -190,10 +149,14 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
return
0
;
}
drm_ioctl_compat_t
*
mga_compat_ioctls
[]
=
{
[
DRM_MGA_INIT
]
=
compat_mga_init
,
[
DRM_MGA_GETPARAM
]
=
compat_mga_getparam
,
[
DRM_MGA_DMA_BOOTSTRAP
]
=
compat_mga_dma_bootstrap
,
static
struct
{
drm_ioctl_compat_t
*
fn
;
char
*
name
;
}
mga_compat_ioctls
[]
=
{
#define DRM_IOCTL32_DEF(n, f)[DRM_##n] = {.fn = f, .name = #n}
DRM_IOCTL32_DEF
(
MGA_INIT
,
compat_mga_init
),
DRM_IOCTL32_DEF
(
MGA_GETPARAM
,
compat_mga_getparam
),
DRM_IOCTL32_DEF
(
MGA_DMA_BOOTSTRAP
,
compat_mga_dma_bootstrap
),
};
/**
...
...
@@ -208,19 +171,27 @@ drm_ioctl_compat_t *mga_compat_ioctls[] = {
long
mga_compat_ioctl
(
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
unsigned
int
nr
=
DRM_IOCTL_NR
(
cmd
);
struct
drm_file
*
file_priv
=
filp
->
private_data
;
drm_ioctl_compat_t
*
fn
=
NULL
;
int
ret
;
if
(
nr
<
DRM_COMMAND_BASE
)
return
drm_compat_ioctl
(
filp
,
cmd
,
arg
);
if
(
nr
<
DRM_COMMAND_BASE
+
ARRAY_SIZE
(
mga_compat_ioctls
))
fn
=
mga_compat_ioctls
[
nr
-
DRM_COMMAND_BASE
];
if
(
fn
!=
NULL
)
ret
=
(
*
fn
)
(
filp
,
cmd
,
arg
);
else
ret
=
drm_ioctl
(
filp
,
cmd
,
arg
);
if
(
nr
>=
DRM_COMMAND_BASE
+
ARRAY_SIZE
(
mga_compat_ioctls
))
return
drm_ioctl
(
filp
,
cmd
,
arg
);
fn
=
mga_compat_ioctls
[
nr
-
DRM_COMMAND_BASE
].
fn
;
if
(
!
fn
)
return
drm_ioctl
(
filp
,
cmd
,
arg
);
DRM_DEBUG
(
"pid=%d, dev=0x%lx, auth=%d, %s
\n
"
,
task_pid_nr
(
current
),
(
long
)
old_encode_dev
(
file_priv
->
minor
->
kdev
->
devt
),
file_priv
->
authenticated
,
mga_compat_ioctls
[
nr
-
DRM_COMMAND_BASE
].
name
);
ret
=
(
*
fn
)
(
filp
,
cmd
,
arg
);
if
(
ret
)
DRM_DEBUG
(
"ret = %d
\n
"
,
ret
);
return
ret
;
}
drivers/gpu/drm/mga/mga_state.c
浏览文件 @
aeba0390
...
...
@@ -1005,7 +1005,7 @@ static int mga_dma_blit(struct drm_device *dev, void *data, struct drm_file *fil
return
0
;
}
static
int
mga_getparam
(
struct
drm_device
*
dev
,
void
*
data
,
struct
drm_file
*
file_priv
)
int
mga_getparam
(
struct
drm_device
*
dev
,
void
*
data
,
struct
drm_file
*
file_priv
)
{
drm_mga_private_t
*
dev_priv
=
dev
->
dev_private
;
drm_mga_getparam_t
*
param
=
data
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录