Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
01e97e65
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
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看板
提交
01e97e65
编写于
12月 15, 2014
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new helper: msg_data_left()
convert open-coded instances Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
a2dd3793
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
27 addition
and
23 deletion
+27
-23
crypto/algif_hash.c
crypto/algif_hash.c
+2
-2
crypto/algif_skcipher.c
crypto/algif_skcipher.c
+2
-2
drivers/vhost/net.c
drivers/vhost/net.c
+2
-2
include/linux/socket.h
include/linux/socket.h
+5
-0
net/core/datagram.c
net/core/datagram.c
+1
-1
net/ipv4/tcp.c
net/ipv4/tcp.c
+4
-4
net/rxrpc/ar-output.c
net/rxrpc/ar-output.c
+9
-10
net/socket.c
net/socket.c
+2
-2
未找到文件。
crypto/algif_hash.c
浏览文件 @
01e97e65
...
...
@@ -56,8 +56,8 @@ static int hash_sendmsg(struct socket *sock, struct msghdr *msg,
ctx
->
more
=
0
;
while
(
iov_iter_count
(
&
msg
->
msg_iter
))
{
int
len
=
iov_iter_count
(
&
msg
->
msg_iter
);
while
(
msg_data_left
(
msg
))
{
int
len
=
msg_data_left
(
msg
);
if
(
len
>
limit
)
len
=
limit
;
...
...
crypto/algif_skcipher.c
浏览文件 @
01e97e65
...
...
@@ -641,7 +641,7 @@ static int skcipher_recvmsg_sync(struct socket *sock, struct msghdr *msg,
long
copied
=
0
;
lock_sock
(
sk
);
while
(
iov_iter_count
(
&
msg
->
msg_iter
))
{
while
(
msg_data_left
(
msg
))
{
sgl
=
list_first_entry
(
&
ctx
->
tsgl
,
struct
skcipher_sg_list
,
list
);
sg
=
sgl
->
sg
;
...
...
@@ -655,7 +655,7 @@ static int skcipher_recvmsg_sync(struct socket *sock, struct msghdr *msg,
goto
unlock
;
}
used
=
min_t
(
unsigned
long
,
ctx
->
used
,
iov_iter_count
(
&
msg
->
msg_iter
));
used
=
min_t
(
unsigned
long
,
ctx
->
used
,
msg_data_left
(
msg
));
used
=
af_alg_make_sg
(
&
ctx
->
rsgl
,
&
msg
->
msg_iter
,
used
);
err
=
used
;
...
...
drivers/vhost/net.c
浏览文件 @
01e97e65
...
...
@@ -357,13 +357,13 @@ static void handle_tx(struct vhost_net *net)
iov_iter_init
(
&
msg
.
msg_iter
,
WRITE
,
vq
->
iov
,
out
,
len
);
iov_iter_advance
(
&
msg
.
msg_iter
,
hdr_size
);
/* Sanity check */
if
(
!
iov_iter_count
(
&
msg
.
msg_iter
))
{
if
(
!
msg_data_left
(
&
msg
))
{
vq_err
(
vq
,
"Unexpected header len for TX: "
"%zd expected %zd
\n
"
,
len
,
hdr_size
);
break
;
}
len
=
iov_iter_count
(
&
msg
.
msg_iter
);
len
=
msg_data_left
(
&
msg
);
zcopy_used
=
zcopy
&&
len
>=
VHOST_GOODCOPY_LEN
&&
(
nvq
->
upend_idx
+
1
)
%
UIO_MAXIOV
!=
...
...
include/linux/socket.h
浏览文件 @
01e97e65
...
...
@@ -139,6 +139,11 @@ static inline struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr
return
__cmsg_nxthdr
(
__msg
->
msg_control
,
__msg
->
msg_controllen
,
__cmsg
);
}
static
inline
size_t
msg_data_left
(
struct
msghdr
*
msg
)
{
return
iov_iter_count
(
&
msg
->
msg_iter
);
}
/* "Socket"-level control message types: */
#define SCM_RIGHTS 0x01
/* rw: access rights (array of int) */
...
...
net/core/datagram.c
浏览文件 @
01e97e65
...
...
@@ -673,7 +673,7 @@ int skb_copy_and_csum_datagram_msg(struct sk_buff *skb,
if
(
!
chunk
)
return
0
;
if
(
iov_iter_count
(
&
msg
->
msg_iter
)
<
chunk
)
{
if
(
msg_data_left
(
msg
)
<
chunk
)
{
if
(
__skb_checksum_complete
(
skb
))
goto
csum_error
;
if
(
skb_copy_datagram_msg
(
skb
,
hlen
,
msg
,
chunk
))
...
...
net/ipv4/tcp.c
浏览文件 @
01e97e65
...
...
@@ -1119,7 +1119,7 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
sg
=
!!
(
sk
->
sk_route_caps
&
NETIF_F_SG
);
while
(
iov_iter_count
(
&
msg
->
msg_iter
))
{
while
(
msg_data_left
(
msg
))
{
int
copy
=
0
;
int
max
=
size_goal
;
...
...
@@ -1163,8 +1163,8 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
}
/* Try to append data to the end of skb. */
if
(
copy
>
iov_iter_count
(
&
msg
->
msg_iter
))
copy
=
iov_iter_count
(
&
msg
->
msg_iter
);
if
(
copy
>
msg_data_left
(
msg
))
copy
=
msg_data_left
(
msg
);
/* Where to copy to? */
if
(
skb_availroom
(
skb
)
>
0
)
{
...
...
@@ -1221,7 +1221,7 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
tcp_skb_pcount_set
(
skb
,
0
);
copied
+=
copy
;
if
(
!
iov_iter_count
(
&
msg
->
msg_iter
))
{
if
(
!
msg_data_left
(
msg
))
{
tcp_tx_timestamp
(
sk
,
skb
);
goto
out
;
}
...
...
net/rxrpc/ar-output.c
浏览文件 @
01e97e65
...
...
@@ -564,8 +564,8 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
max
&=
~
(
call
->
conn
->
size_align
-
1UL
);
chunk
=
max
;
if
(
chunk
>
iov_iter_count
(
&
msg
->
msg_iter
)
&&
!
more
)
chunk
=
iov_iter_count
(
&
msg
->
msg_iter
);
if
(
chunk
>
msg_data_left
(
msg
)
&&
!
more
)
chunk
=
msg_data_left
(
msg
);
space
=
chunk
+
call
->
conn
->
size_align
;
space
&=
~
(
call
->
conn
->
size_align
-
1UL
);
...
...
@@ -608,11 +608,11 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
sp
=
rxrpc_skb
(
skb
);
/* append next segment of data to the current buffer */
if
(
iov_iter_count
(
&
msg
->
msg_iter
)
>
0
)
{
if
(
msg_data_left
(
msg
)
>
0
)
{
int
copy
=
skb_tailroom
(
skb
);
ASSERTCMP
(
copy
,
>
,
0
);
if
(
copy
>
iov_iter_count
(
&
msg
->
msg_iter
))
copy
=
iov_iter_count
(
&
msg
->
msg_iter
);
if
(
copy
>
msg_data_left
(
msg
))
copy
=
msg_data_left
(
msg
);
if
(
copy
>
sp
->
remain
)
copy
=
sp
->
remain
;
...
...
@@ -633,7 +633,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
/* add the packet to the send queue if it's now full */
if
(
sp
->
remain
<=
0
||
(
iov_iter_count
(
&
msg
->
msg_iter
)
==
0
&&
!
more
))
{
(
msg_data_left
(
msg
)
==
0
&&
!
more
))
{
struct
rxrpc_connection
*
conn
=
call
->
conn
;
uint32_t
seq
;
size_t
pad
;
...
...
@@ -663,7 +663,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
sp
->
hdr
.
serviceId
=
conn
->
service_id
;
sp
->
hdr
.
flags
=
conn
->
out_clientflag
;
if
(
iov_iter_count
(
&
msg
->
msg_iter
)
==
0
&&
!
more
)
if
(
msg_data_left
(
msg
)
==
0
&&
!
more
)
sp
->
hdr
.
flags
|=
RXRPC_LAST_PACKET
;
else
if
(
CIRC_SPACE
(
call
->
acks_head
,
call
->
acks_tail
,
call
->
acks_winsz
)
>
1
)
...
...
@@ -679,11 +679,10 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
memcpy
(
skb
->
head
,
&
sp
->
hdr
,
sizeof
(
struct
rxrpc_header
));
rxrpc_queue_packet
(
call
,
skb
,
iov_iter_count
(
&
msg
->
msg_iter
)
==
0
&&
!
more
);
rxrpc_queue_packet
(
call
,
skb
,
!
msg_data_left
(
msg
)
&&
!
more
);
skb
=
NULL
;
}
}
while
(
iov_iter_count
(
&
msg
->
msg_iter
)
>
0
);
}
while
(
msg_data_left
(
msg
)
>
0
);
success:
ret
=
copied
;
...
...
net/socket.c
浏览文件 @
01e97e65
...
...
@@ -612,7 +612,7 @@ EXPORT_SYMBOL(__sock_tx_timestamp);
static
inline
int
sock_sendmsg_nosec
(
struct
socket
*
sock
,
struct
msghdr
*
msg
)
{
int
ret
=
sock
->
ops
->
sendmsg
(
sock
,
msg
,
iov_iter_count
(
&
msg
->
msg_iter
));
int
ret
=
sock
->
ops
->
sendmsg
(
sock
,
msg
,
msg_data_left
(
msg
));
BUG_ON
(
ret
==
-
EIOCBQUEUED
);
return
ret
;
}
...
...
@@ -620,7 +620,7 @@ static inline int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg)
int
sock_sendmsg
(
struct
socket
*
sock
,
struct
msghdr
*
msg
)
{
int
err
=
security_socket_sendmsg
(
sock
,
msg
,
iov_iter_count
(
&
msg
->
msg_iter
));
msg_data_left
(
msg
));
return
err
?:
sock_sendmsg_nosec
(
sock
,
msg
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录