Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
602bd0e9
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看板
提交
602bd0e9
编写于
3月 21, 2015
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
net: switch sendto() and recvfrom() to import_single_range()
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
fe3cce2e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
16 deletion
+8
-16
net/socket.c
net/socket.c
+8
-16
未找到文件。
net/socket.c
浏览文件 @
602bd0e9
...
...
@@ -1650,18 +1650,14 @@ SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
struct
iovec
iov
;
int
fput_needed
;
if
(
len
>
INT_MAX
)
len
=
INT_MAX
;
if
(
unlikely
(
!
access_ok
(
VERIFY_READ
,
buff
,
len
)))
return
-
EFAULT
;
err
=
import_single_range
(
WRITE
,
buff
,
len
,
&
iov
,
&
msg
.
msg_iter
);
if
(
unlikely
(
err
))
return
err
;
sock
=
sockfd_lookup_light
(
fd
,
&
err
,
&
fput_needed
);
if
(
!
sock
)
goto
out
;
iov
.
iov_base
=
buff
;
iov
.
iov_len
=
len
;
msg
.
msg_name
=
NULL
;
iov_iter_init
(
&
msg
.
msg_iter
,
WRITE
,
&
iov
,
1
,
len
);
msg
.
msg_control
=
NULL
;
msg
.
msg_controllen
=
0
;
msg
.
msg_namelen
=
0
;
...
...
@@ -1675,7 +1671,7 @@ SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
if
(
sock
->
file
->
f_flags
&
O_NONBLOCK
)
flags
|=
MSG_DONTWAIT
;
msg
.
msg_flags
=
flags
;
err
=
sock_sendmsg
(
sock
,
&
msg
,
len
);
err
=
sock_sendmsg
(
sock
,
&
msg
,
iov_iter_count
(
&
msg
.
msg_iter
)
);
out_put:
fput_light
(
sock
->
file
,
fput_needed
);
...
...
@@ -1710,26 +1706,22 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
int
err
,
err2
;
int
fput_needed
;
if
(
size
>
INT_MAX
)
size
=
INT_MAX
;
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
ubuf
,
size
)))
return
-
EFAULT
;
err
=
import_single_range
(
READ
,
ubuf
,
size
,
&
iov
,
&
msg
.
msg_iter
);
if
(
unlikely
(
err
))
return
err
;
sock
=
sockfd_lookup_light
(
fd
,
&
err
,
&
fput_needed
);
if
(
!
sock
)
goto
out
;
msg
.
msg_control
=
NULL
;
msg
.
msg_controllen
=
0
;
iov
.
iov_len
=
size
;
iov
.
iov_base
=
ubuf
;
iov_iter_init
(
&
msg
.
msg_iter
,
READ
,
&
iov
,
1
,
size
);
/* Save some cycles and don't copy the address if not needed */
msg
.
msg_name
=
addr
?
(
struct
sockaddr
*
)
&
address
:
NULL
;
/* We assume all kernel code knows the size of sockaddr_storage */
msg
.
msg_namelen
=
0
;
if
(
sock
->
file
->
f_flags
&
O_NONBLOCK
)
flags
|=
MSG_DONTWAIT
;
err
=
sock_recvmsg
(
sock
,
&
msg
,
size
,
flags
);
err
=
sock_recvmsg
(
sock
,
&
msg
,
iov_iter_count
(
&
msg
.
msg_iter
)
,
flags
);
if
(
err
>=
0
&&
addr
!=
NULL
)
{
err2
=
move_addr_to_user
(
&
address
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录