On Wed, Jun 03, 2020 at 06:33:38AM -0700, Ka-Cheong Poon wrote: > Suppose the cm_id state is IB_CM_REP_SENT when cm_destroy_id() is > called. Then 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(). > > Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@xxxxxxxxxx> > --- > drivers/infiniband/core/cm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) Applied to for-next, thanks Jason