Commit c055fc00 authored by Edward Adam Davis's avatar Edward Adam Davis Committed by David S. Miller
Browse files

net/rds: fix WARNING in rds_conn_connect_if_down



If connection isn't established yet, get_mr() will fail, trigger connection after
get_mr().

Fixes: 584a8279 ("RDS: RDMA: return appropriate error on rdma map failures")
Reported-and-tested-by: default avatar <syzbot+d4faee732755bba9838e@syzkaller.appspotmail.com>
Signed-off-by: default avatarEdward Adam Davis <eadavis@qq.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f287d6aa
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -301,6 +301,9 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args,
			kfree(sg);
		}
		ret = PTR_ERR(trans_private);
		/* Trigger connection so that its ready for the next retry */
		if (ret == -ENODEV)
			rds_conn_connect_if_down(cp->cp_conn);
		goto out;
	}

+1 −5
Original line number Diff line number Diff line
@@ -1313,12 +1313,8 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len)

	/* Parse any control messages the user may have included. */
	ret = rds_cmsg_send(rs, rm, msg, &allocated_mr, &vct);
	if (ret) {
		/* Trigger connection so that its ready for the next retry */
		if (ret ==  -EAGAIN)
			rds_conn_connect_if_down(conn);
	if (ret)
		goto out;
	}

	if (rm->rdma.op_active && !conn->c_trans->xmit_rdma) {
		printk_ratelimited(KERN_NOTICE "rdma_op %p conn xmit_rdma %p\n",