diff options
Diffstat (limited to 'net/tipc')
| -rw-r--r-- | net/tipc/socket.c | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/net/tipc/socket.c b/net/tipc/socket.c index a9622b6cd91..515ce38e4f4 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -790,6 +790,7 @@ static void set_orig_addr(struct msghdr *m, struct tipc_msg *msg)  	if (addr) {  		addr->family = AF_TIPC;  		addr->addrtype = TIPC_ADDR_ID; +		memset(&addr->addr, 0, sizeof(addr->addr));  		addr->addr.id.ref = msg_origport(msg);  		addr->addr.id.node = msg_orignode(msg);  		addr->addr.name.domain = 0;	/* could leave uninitialized */ @@ -904,6 +905,9 @@ static int recv_msg(struct kiocb *iocb, struct socket *sock,  		goto exit;  	} +	/* will be updated in set_orig_addr() if needed */ +	m->msg_namelen = 0; +  	timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);  restart: @@ -1013,6 +1017,9 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,  		goto exit;  	} +	/* will be updated in set_orig_addr() if needed */ +	m->msg_namelen = 0; +  	target = sock_rcvlowat(sk, flags & MSG_WAITALL, buf_len);  	timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); | 
