diff options
author | Ka-Cheong Poon | 2020-06-03 06:33:38 -0700 |
---|---|---|
committer | Jason Gunthorpe | 2020-06-03 15:48:18 -0300 |
commit | fba97dc7fc76b2c9a909fa0b3786d30a9899f5cf (patch) | |
tree | fe46b35f62f890d7f7eb1976927c8166c7db3838 /include/rdma/rdma_cm.h | |
parent | a645a89d9a780a8fbb6e283f84fc91ad538c2edc (diff) |
RDMA/cm: Spurious WARNING triggered in cm_destroy_id()
If the cm_id state is IB_CM_REP_SENT when cm_destroy_id() is called, it
calls cm_send_rej_locked().
In cm_send_rej_locked(), it calls cm_enter_timewait() and the state is
changed to IB_CM_TIMEWAIT.
Now back to cm_destroy_id(), it breaks from the switch statement, and the
next call is WARN_ON(cm_id->state != IB_CM_IDLE).
This triggers a spurious warning. Instead, the code should goto retest
after returning from cm_send_rej_locked() to move the state to IDLE.
Fixes: 67b3c8dceac6 ("RDMA/cm: Make sure the cm_id is in the IB_CM_IDLE state in destroy")
Link: https://lore.kernel.org/r/1591191218-9446-1-git-send-email-ka-cheong.poon@oracle.com
Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'include/rdma/rdma_cm.h')
0 files changed, 0 insertions, 0 deletions