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

Author: Philippe Gerum <r...@xenomai.org>
Date:   Wed Dec  6 12:47:55 2017 +0100

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

---

 kernel/drivers/net/stack/ipv4/udp/udp.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/kernel/drivers/net/stack/ipv4/udp/udp.c 
b/kernel/drivers/net/stack/ipv4/udp/udp.c
index 903e897..127fed2 100644
--- a/kernel/drivers/net/stack/ipv4/udp/udp.c
+++ b/kernel/drivers/net/stack/ipv4/udp/udp.c
@@ -451,12 +451,7 @@ ssize_t rt_udp_recvmsg(struct rtdm_fd *fd, struct 
user_msghdr *u_msg, int msg_fl
     uh = skb->h.uh;
     first_skb = skb;
 
-    namelen = sizeof(sin);
-    ret = rtnet_put_arg(fd, &msg->msg_namelen, &namelen, sizeof(namelen));
-    if (ret)
-           goto fail;
-   
-    /* copy the address */
+    /* copy the address if required. */
     if (msg->msg_name) {
            memset(&sin, 0, sizeof(sin));
            sin.sin_family      = AF_INET;
@@ -465,7 +460,12 @@ ssize_t rt_udp_recvmsg(struct rtdm_fd *fd, struct 
user_msghdr *u_msg, int msg_fl
            ret = rtnet_put_arg(fd, msg->msg_name, &sin, sizeof(sin));
            if (ret)
                    goto fail;
-    }
+
+           namelen = sizeof(sin);
+           ret = rtnet_put_arg(fd, &u_msg->msg_namelen, &namelen, 
sizeof(namelen));
+           if (ret)
+                   goto fail;
+       }
 
     data_len = ntohs(uh->len) - sizeof(struct udphdr);
 


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

Reply via email to