Commit 5bc989e0 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-v5.10.213
commit 9dfc15a10dfd44f8ff7f27488651cb5be6af83c2
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=9dfc15a10dfd44f8ff7f27488651cb5be6af83c2



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

[ 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 e706c6b6
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
@@ -1314,12 +1314,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",