提交 aa3a0220 编写于 作者: K Ken-ichirou MATSUZAWA 提交者: David S. Miller

netlink: not trim skb for mmaped socket when dump

We should not trim skb for mmaped socket since its buf size is fixed
and userspace will read as frame which data equals head. mmaped
socket will not call recvmsg, means max_recvmsg_len is 0,
skb_reserve was not called before commit: db65a3aa.

Fixes: db65a3aa (netlink: Trim skb to alloc size to avoid MSG_TRUNC)
Signed-off-by: NKen-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 7256eac1
...@@ -2831,7 +2831,8 @@ static int netlink_dump(struct sock *sk) ...@@ -2831,7 +2831,8 @@ static int netlink_dump(struct sock *sk)
* reasonable static buffer based on the expected largest dump of a * reasonable static buffer based on the expected largest dump of a
* single netdev. The outcome is MSG_TRUNC error. * single netdev. The outcome is MSG_TRUNC error.
*/ */
skb_reserve(skb, skb_tailroom(skb) - alloc_size); if (!netlink_rx_is_mmaped(sk))
skb_reserve(skb, skb_tailroom(skb) - alloc_size);
netlink_skb_set_owner_r(skb, sk); netlink_skb_set_owner_r(skb, sk);
len = cb->dump(skb, cb); len = cb->dump(skb, cb);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册