diff options
Diffstat (limited to 'drivers/remoteproc/remoteproc_core.c')
| -rw-r--r-- | drivers/remoteproc/remoteproc_core.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 29387df4bfc..8edb4aed5d3 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -217,7 +217,7 @@ int rproc_alloc_vring(struct rproc_vdev *rvdev, int i)  	 * TODO: support predefined notifyids (via resource table)  	 */  	ret = idr_alloc(&rproc->notifyids, rvring, 0, 0, GFP_KERNEL); -	if (ret) { +	if (ret < 0) {  		dev_err(dev, "idr_alloc failed: %d\n", ret);  		dma_free_coherent(dev->parent, size, va, dma);  		return ret; @@ -366,10 +366,12 @@ static int rproc_handle_vdev(struct rproc *rproc, struct fw_rsc_vdev *rsc,  	/* it is now safe to add the virtio device */  	ret = rproc_add_virtio_dev(rvdev, rsc->id);  	if (ret) -		goto free_rvdev; +		goto remove_rvdev;  	return 0; +remove_rvdev: +	list_del(&rvdev->node);  free_rvdev:  	kfree(rvdev);  	return ret;  |