list_del(&id_priv->list);
        cma_dev_put(id_priv->cma_dev);
        id_priv->cma_dev = NULL;
+       if (id_priv->id.route.addr.dev_addr.sgid_attr) {
+               rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr);
+               id_priv->id.route.addr.dev_addr.sgid_attr = NULL;
+       }
        mutex_unlock(&lock);
 }
 
 
        kfree(id_priv->id.route.path_rec);
 
-       if (id_priv->id.route.addr.dev_addr.sgid_attr)
-               rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr);
-
        put_net(id_priv->id.route.addr.dev_addr.net);
        rdma_restrack_del(&id_priv->res);
        kfree(id_priv);