On Wed, Jul 14, 2021 at 09:26:46PM +0300, lanevdenoche@xxxxxxxxx wrote: > Calling isert_setup_id() from isert_np_cma_handler() is wrong > since at that time the socket address was still bound to the old cma_id > which will be destroyed via rdma_destroy_id() only after processing > the RDMA_CM_EVENT_ADDR_CHANGE event. > > - isert_np_cma_handler() calls isert_setup_id() > > - isert_setup_id() calls rdma_bind_addr() > > - rdma_bind_addr() returns -EADDRINUSE > > Move the creation of the cma_id in workqueue context and delete old > cma_id directly, not through returning the error code to the upper > level. Why do you need workqueue for that? Is it possible to introduce new function isert_np_reinit_id() and call it directly? Thanks