Module: xenomai-3
Branch: wip/rtnet-fixes
Commit: de3677ba112349317eef8459a6d2dd5ae3514163
URL:    
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=de3677ba112349317eef8459a6d2dd5ae3514163

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 ff3ef33..f248239 100644
--- a/kernel/drivers/net/stack/packet/af_packet.c
+++ b/kernel/drivers/net/stack/packet/af_packet.c
@@ -335,12 +335,6 @@ rt_packet_recvmsg(struct rtdm_fd *fd, struct user_msghdr 
*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;
@@ -357,6 +351,11 @@ rt_packet_recvmsg(struct rtdm_fd *fd, struct user_msghdr 
*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, &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