> -----Original Message----- > From: Parthasarathy Bhuvaragan > Sent: Tuesday, 04 October, 2016 08:29 > To: tipc-discussion@lists.sourceforge.net; Jon Maloy <jon.ma...@ericsson.com>; > ma...@donjonn.com; Ying Xue <ying....@windriver.com> > Subject: [PATCH net v1 2/3] tipc: return early for non-blocking sockets at > link > congestion > > Until now, in stream/mcast send() we pass the message to the link > layer even when the link is congested and add the socket to the > link's wakeup queue. This is unnecessary for non-blocking sockets. > If a socket is set to non-blocking and sends multicast with zero > back off time while receiving EAGAIN, we exhaust the memory. > > In this commit, we return immediately at stream/mcast send() for > non-blocking sockets. > > Signed-off-by: Parthasarathy Bhuvaragan > <parthasarathy.bhuvara...@ericsson.com> > --- > net/tipc/socket.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/net/tipc/socket.c b/net/tipc/socket.c > index f9f5f3c3dab5..adf3e6ecf61e 100644 > --- a/net/tipc/socket.c > +++ b/net/tipc/socket.c > @@ -697,6 +697,9 @@ static int tipc_sendmcast(struct socket *sock, struct > tipc_name_seq *seq, > uint mtu; > int rc; > > + if (!timeo && tsk->link_cong) > + return -ELINKCONG;
Why is the !timeo test needed ? ///jon > + > msg_set_type(mhdr, TIPC_MCAST_MSG); > msg_set_lookup_scope(mhdr, TIPC_CLUSTER_SCOPE); > msg_set_destport(mhdr, 0); > @@ -1072,6 +1075,9 @@ static int __tipc_send_stream(struct socket *sock, > struct msghdr *m, size_t dsz) > } > > timeo = sock_sndtimeo(sk, m->msg_flags & MSG_DONTWAIT); > + if (!timeo && tsk->link_cong) > + return -ELINKCONG; > + > dnode = tsk_peer_node(tsk); > skb_queue_head_init(&pktchain); > > -- > 2.1.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion