|
@@ -1246,16 +1246,14 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
|
siocb->scm = &scm;
|
|
siocb->scm = &scm;
|
|
}
|
|
}
|
|
siocb->scm->creds = *NETLINK_CREDS(skb);
|
|
siocb->scm->creds = *NETLINK_CREDS(skb);
|
|
|
|
+ if (flags & MSG_TRUNC)
|
|
|
|
+ copied = skb->len;
|
|
skb_free_datagram(sk, skb);
|
|
skb_free_datagram(sk, skb);
|
|
|
|
|
|
if (nlk->cb && atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf / 2)
|
|
if (nlk->cb && atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf / 2)
|
|
netlink_dump(sk);
|
|
netlink_dump(sk);
|
|
|
|
|
|
scm_recv(sock, msg, siocb->scm, flags);
|
|
scm_recv(sock, msg, siocb->scm, flags);
|
|
-
|
|
|
|
- if (flags & MSG_TRUNC)
|
|
|
|
- copied = skb->len;
|
|
|
|
-
|
|
|
|
out:
|
|
out:
|
|
netlink_rcv_wake(sk);
|
|
netlink_rcv_wake(sk);
|
|
return err ? : copied;
|
|
return err ? : copied;
|