[NETLINK]: Mirror UDP MSG_TRUNC semantics.
David S. Miller [Wed, 7 Mar 2007 01:02:35 +0000 (17:02 -0800)]
If the user passes MSG_TRUNC in via msg_flags, return
the full packet size not the truncated size.

Idea from Herbert Xu and Thomas Graf.

Signed-off-by: David S. Miller <davem@davemloft.net>

net/netlink/af_netlink.c

index c48b0f4..5890210 100644 (file)
@@ -1242,6 +1242,9 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
 
        scm_recv(sock, msg, siocb->scm, flags);
 
+       if (flags & MSG_TRUNC)
+               copied = skb->len;
+
 out:
        netlink_rcv_wake(sk);
        return err ? : copied;