Commit cb5a4fca authored by Edward Adam Davis's avatar Edward Adam Davis Committed by Liu Jian
Browse files

net/rds: fix WARNING in rds_conn_connect_if_down

stable inclusion
from stable-v4.19.310
commit 786854141057751bc08eb26f1b02e97c1631c8f4
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9L9M2
CVE: CVE-2024-27024

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=786854141057751bc08eb26f1b02e97c1631c8f4



---------------------------

[ Upstream commit c055fc00c07be1f0df7375ab0036cebd1106ed38 ]

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>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarLiu Jian <liujian56@huawei.com>
parent 9ff44822
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -278,6 +278,9 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args,
			put_page(sg_page(&sg[i]));
		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
@@ -1300,12 +1300,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",