Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 143b72d6 authored by Santosh Shilimkar's avatar Santosh Shilimkar Committed by Greg Kroah-Hartman
Browse files

rds: avoid unenecessary cong_update in loop transport



commit f1693c63ab133d16994cc50f773982b5905af264 upstream.

Loop transport which is self loopback, remote port congestion
update isn't relevant. Infact the xmit path already ignores it.
Receive path needs to do the same.

Reported-by: default avatar <syzbot+4c20b3866171ce8441d2@syzkaller.appspotmail.com>
Reviewed-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 76432817
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -191,4 +191,5 @@ struct rds_transport rds_loop_transport = {
	.inc_copy_to_user	= rds_message_inc_copy_to_user,
	.inc_free		= rds_loop_inc_free,
	.t_name			= "loopback",
	.t_type			= RDS_TRANS_LOOP,
};
+5 −0
Original line number Diff line number Diff line
@@ -381,6 +381,11 @@ struct rds_notifier {
	int			n_status;
};

/* Available as part of RDS core, so doesn't need to participate
 * in get_preferred transport etc
 */
#define	RDS_TRANS_LOOP	3

/**
 * struct rds_transport -  transport specific behavioural hooks
 *
+5 −0
Original line number Diff line number Diff line
@@ -76,6 +76,11 @@ static void rds_recv_rcvbuf_delta(struct rds_sock *rs, struct sock *sk,
		return;

	rs->rs_rcv_bytes += delta;

	/* loop transport doesn't send/recv congestion updates */
	if (rs->rs_transport->t_type == RDS_TRANS_LOOP)
		return;

	now_congested = rs->rs_rcv_bytes > rds_sk_rcvbuf(rs);

	rdsdebug("rs %p (%pI4:%u) recv bytes %d buf %d "