RDMA/siw: Fix connection failure handling
authorBernard Metzler <bmt@zurich.ibm.com>
Tue, 5 Sep 2023 14:58:22 +0000 (16:58 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 11 Sep 2023 11:53:23 +0000 (14:53 +0300)
commit53a3f777049771496f791504e7dc8ef017cba590
tree5fa2d7c5bbef6ab84245cee55b8f3fe75a137485
parente193b7955dfad68035b983a0011f4ef3590c85eb
RDMA/siw: Fix connection failure handling

In case immediate MPA request processing fails, the newly
created endpoint unlinks the listening endpoint and is
ready to be dropped. This special case was not handled
correctly by the code handling the later TCP socket close,
causing a NULL dereference crash in siw_cm_work_handler()
when dereferencing a NULL listener. We now also cancel
the useless MPA timeout, if immediate MPA request
processing fails.

This patch furthermore simplifies MPA processing in general:
Scheduling a useless TCP socket read in sk_data_ready() upcall
is now surpressed, if the socket is already moved out of
TCP_ESTABLISHED state.

Fixes: 6c52fdc244b5 ("rdma/siw: connection management")
Signed-off-by: Bernard Metzler <bmt@zurich.ibm.com>
Link: https://lore.kernel.org/r/20230905145822.446263-1-bmt@zurich.ibm.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/siw/siw_cm.c