|
@@ -2151,12 +2151,9 @@ static int cma_remove_id_dev(struct rdma_id_private *id_priv)
|
|
|
|
|
|
static void cma_process_remove(struct cma_device *cma_dev)
|
|
static void cma_process_remove(struct cma_device *cma_dev)
|
|
{
|
|
{
|
|
- struct list_head remove_list;
|
|
|
|
struct rdma_id_private *id_priv;
|
|
struct rdma_id_private *id_priv;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
- INIT_LIST_HEAD(&remove_list);
|
|
|
|
-
|
|
|
|
mutex_lock(&lock);
|
|
mutex_lock(&lock);
|
|
while (!list_empty(&cma_dev->id_list)) {
|
|
while (!list_empty(&cma_dev->id_list)) {
|
|
id_priv = list_entry(cma_dev->id_list.next,
|
|
id_priv = list_entry(cma_dev->id_list.next,
|
|
@@ -2167,8 +2164,7 @@ static void cma_process_remove(struct cma_device *cma_dev)
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- list_del(&id_priv->list);
|
|
|
|
- list_add_tail(&id_priv->list, &remove_list);
|
|
|
|
|
|
+ list_del_init(&id_priv->list);
|
|
atomic_inc(&id_priv->refcount);
|
|
atomic_inc(&id_priv->refcount);
|
|
mutex_unlock(&lock);
|
|
mutex_unlock(&lock);
|
|
|
|
|