RDMA/efa: Fix wrong resources deallocation order
authorYonatan Nachum <ynachum@amazon.com>
Tue, 22 Aug 2023 08:27:25 +0000 (08:27 +0000)
committerLeon Romanovsky <leon@kernel.org>
Tue, 22 Aug 2023 14:21:53 +0000 (17:21 +0300)
commitdc202c57e9a1423aed528e4b8dc949509cd32191
tree527d980c63cabd013f34174f02b3079641b6cd97
parent9dfccb6d0d3d13347c61ff0136b22d5d772d2075
RDMA/efa: Fix wrong resources deallocation order

When trying to destroy QP or CQ, we first decrease the refcount and
potentially free memory regions allocated for the object and then
request the device to destroy the object. If the device fails, the
object isn't fully destroyed so the user/IB core can try to destroy the
object again which will lead to underflow when trying to decrease an
already zeroed refcount.

Deallocate resources in reverse order of allocating them to safely free
them.

Fixes: ff6629f88c52 ("RDMA/efa: Do not delay freeing of DMA pages")
Reviewed-by: Michael Margolin <mrgolin@amazon.com>
Reviewed-by: Yossi Leybovich <sleybo@amazon.com>
Signed-off-by: Yonatan Nachum <ynachum@amazon.com>
Link: https://lore.kernel.org/r/20230822082725.31719-1-ynachum@amazon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/efa/efa_verbs.c