|
@@ -1876,8 +1876,7 @@ static int cm_req_handler(struct cm_work *work)
|
|
listen_cm_id_priv = cm_match_req(work, cm_id_priv);
|
|
listen_cm_id_priv = cm_match_req(work, cm_id_priv);
|
|
if (!listen_cm_id_priv) {
|
|
if (!listen_cm_id_priv) {
|
|
ret = -EINVAL;
|
|
ret = -EINVAL;
|
|
- kfree(cm_id_priv->timewait_info);
|
|
|
|
- goto destroy;
|
|
|
|
|
|
+ goto free_timeinfo;
|
|
}
|
|
}
|
|
|
|
|
|
cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler;
|
|
cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler;
|
|
@@ -1979,6 +1978,8 @@ static int cm_req_handler(struct cm_work *work)
|
|
rejected:
|
|
rejected:
|
|
atomic_dec(&cm_id_priv->refcount);
|
|
atomic_dec(&cm_id_priv->refcount);
|
|
cm_deref_id(listen_cm_id_priv);
|
|
cm_deref_id(listen_cm_id_priv);
|
|
|
|
+free_timeinfo:
|
|
|
|
+ kfree(cm_id_priv->timewait_info);
|
|
destroy:
|
|
destroy:
|
|
ib_destroy_cm_id(cm_id);
|
|
ib_destroy_cm_id(cm_id);
|
|
return ret;
|
|
return ret;
|