Module: xenomai-3 Branch: wip/rtnet-fixes Commit: 2fd8127356b0d11417fccaccd716dc9057ce4fb0 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2fd8127356b0d11417fccaccd716dc9057ce4fb0
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 8284ff7..4ec5ab3 100644 --- a/kernel/drivers/net/stack/ipv4/udp/udp.c +++ b/kernel/drivers/net/stack/ipv4/udp/udp.c @@ -432,12 +432,7 @@ ssize_t rt_udp_recvmsg(struct rtdm_fd *fd, struct user_msghdr *msg, int msg_flag 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; @@ -446,7 +441,12 @@ ssize_t rt_udp_recvmsg(struct rtdm_fd *fd, struct user_msghdr *msg, int msg_flag ret = rtnet_put_arg(fd, &msg->msg_name, &sin, sizeof(sin)); if (ret) goto fail; - } + + namelen = sizeof(sin); + ret = rtnet_put_arg(fd, &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