From: Hyunchul Lee hyc.lee@gmail.com
mainline inclusion from mainline-5.19-rc1 commit 5366afc4065075a4456941fbd51c33604d631ee5 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I60T7G CVE: NA
Reference: https://git.kernel.org/torvalds/linux/c/5366afc40650
-------------------------------
When there are bursty connection requests, RDMA connection event handler is deferred and Negotiation requests are received even if connection status is NEW.
To handle it, set the status to CONNECTED if Negotiation requests are received.
Reported-by: Yufan Chen wiz.chen@gmail.com Signed-off-by: Hyunchul Lee hyc.lee@gmail.com Tested-by: Yufan Chen wiz.chen@gmail.com Acked-by: Namjae Jeon linkinjeon@kernel.org Signed-off-by: Steve French stfrench@microsoft.com Signed-off-by: Jason Yan yanaijie@huawei.com Signed-off-by: Zhong Jinghua zhongjinghua@huawei.com --- fs/ksmbd/transport_rdma.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/fs/ksmbd/transport_rdma.c b/fs/ksmbd/transport_rdma.c index ba5a22bc2e6d..d3b60b833a81 100644 --- a/fs/ksmbd/transport_rdma.c +++ b/fs/ksmbd/transport_rdma.c @@ -569,6 +569,7 @@ static void recv_done(struct ib_cq *cq, struct ib_wc *wc) } t->negotiation_requested = true; t->full_packet_received = true; + t->status = SMB_DIRECT_CS_CONNECTED; enqueue_reassembly(t, recvmsg, 0); wake_up_interruptible(&t->wait_status); break;