|
@@ -235,7 +235,7 @@ static struct ucma_multicast* ucma_alloc_multicast(struct ucma_context *ctx)
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
mutex_lock(&mut);
|
|
mutex_lock(&mut);
|
|
- mc->id = idr_alloc(&multicast_idr, mc, 0, 0, GFP_KERNEL);
|
|
|
|
|
|
+ mc->id = idr_alloc(&multicast_idr, NULL, 0, 0, GFP_KERNEL);
|
|
mutex_unlock(&mut);
|
|
mutex_unlock(&mut);
|
|
if (mc->id < 0)
|
|
if (mc->id < 0)
|
|
goto error;
|
|
goto error;
|
|
@@ -1421,6 +1421,10 @@ static ssize_t ucma_process_join(struct ucma_file *file,
|
|
goto err3;
|
|
goto err3;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ mutex_lock(&mut);
|
|
|
|
+ idr_replace(&multicast_idr, mc, mc->id);
|
|
|
|
+ mutex_unlock(&mut);
|
|
|
|
+
|
|
mutex_unlock(&file->mut);
|
|
mutex_unlock(&file->mut);
|
|
ucma_put_ctx(ctx);
|
|
ucma_put_ctx(ctx);
|
|
return 0;
|
|
return 0;
|