]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/siw: Fix QP destroy to wait for all references dropped.
authorBernard Metzler <bmt@zurich.ibm.com>
Tue, 20 Sep 2022 08:25:03 +0000 (10:25 +0200)
committerLeon Romanovsky <leon@kernel.org>
Tue, 20 Sep 2022 18:23:52 +0000 (21:23 +0300)
commit879b6b4801561a0153f719fece6a02c9a9e65f7d
treee00a8456e4073ddf394684609a74a827b72bd719
parent667f5e8370368c369f009d3c15a47b1f13a6ef54
RDMA/siw: Fix QP destroy to wait for all references dropped.

Delay QP destroy completion until all siw references to QP are
dropped. The calling RDMA core will free QP structure after
successful return from siw_qp_destroy() call, so siw must not
hold any remaining reference to the QP upon return.
A use-after-free was encountered in xfstest generic/460, while
testing NFSoRDMA. Here, after a TCP connection drop by peer,
the triggered siw_cm_work_handler got delayed until after
QP destroy call, referencing a QP which has already freed.

Fixes: 519268203315 ("rdma/siw: application interface")
Reported-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Bernard Metzler <bmt@zurich.ibm.com>
Link: https://lore.kernel.org/r/20220920082503.224189-1-bmt@zurich.ibm.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/siw/siw.h
drivers/infiniband/sw/siw/siw_qp.c
drivers/infiniband/sw/siw/siw_verbs.c