Module: xenomai-3
Branch: stable-3.0.x
Commit: 78f32e29d96d8d8a32eab880e590942ddbabe81c
URL:    
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=78f32e29d96d8d8a32eab880e590942ddbabe81c

Author: Philippe Gerum <r...@xenomai.org>
Date:   Tue Dec  5 10:36:07 2017 +0100

net/packet: recvmsg: write back namelen only if name required

---

 kernel/drivers/net/stack/packet/af_packet.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/kernel/drivers/net/stack/packet/af_packet.c 
b/kernel/drivers/net/stack/packet/af_packet.c
index c25d6aa..d3198ab 100644
--- a/kernel/drivers/net/stack/packet/af_packet.c
+++ b/kernel/drivers/net/stack/packet/af_packet.c
@@ -351,12 +351,6 @@ rt_packet_recvmsg(struct rtdm_fd *fd, struct user_msghdr 
*u_msg, int msg_flags)
     rtskb = rtskb_dequeue_chain(&sock->incoming);
     RTNET_ASSERT(rtskb != NULL, return -EFAULT;);
 
-    /* copy the address */
-    namelen = sizeof(sll);
-    ret = rtnet_put_arg(fd, &msg->msg_namelen, &namelen, sizeof(namelen));
-    if (ret)
-           goto fail;
-
     /* copy the address if required. */
     if (msg->msg_name) {
        struct rtnet_device *rtdev = rtskb->rtdev;
@@ -373,6 +367,11 @@ rt_packet_recvmsg(struct rtdm_fd *fd, struct user_msghdr 
*u_msg, int msg_flags)
        ret = rtnet_put_arg(fd, msg->msg_name, &sll, sizeof(sll));
        if (ret)
                goto fail;
+
+       namelen = sizeof(sll);
+       ret = rtnet_put_arg(fd, &u_msg->msg_namelen, &namelen, sizeof(namelen));
+       if (ret)
+               goto fail;
     }
 
     /* Include the header in raw delivery */


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai-git

Reply via email to