* [PATCH] dmaengine: fix error codes in channel_register()
@ 2020-11-13 10:16 ` Dan Carpenter
0 siblings, 0 replies; 6+ messages in thread
From: Dan Carpenter @ 2020-11-13 10:16 UTC (permalink / raw)
To: Vinod Koul; +Cc: Vinod Koul, Dave Jiang, dmaengine, kernel-janitors
The error codes were not set on some of these error paths.
Also the error handling was more confusing than it needed to be so I
cleaned it up and shuffled it around a bit.
Fixes: d2fb0a043838 ("dmaengine: break out channel registration")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
drivers/dma/dmaengine.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 7974fa0400d8..962cbb5e5f7f 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -1039,16 +1039,15 @@ static int get_dma_id(struct dma_device *device)
static int __dma_async_device_channel_register(struct dma_device *device,
struct dma_chan *chan)
{
- int rc = 0;
+ int rc;
chan->local = alloc_percpu(typeof(*chan->local));
if (!chan->local)
- goto err_out;
+ return -ENOMEM;
chan->dev = kzalloc(sizeof(*chan->dev), GFP_KERNEL);
if (!chan->dev) {
- free_percpu(chan->local);
- chan->local = NULL;
- goto err_out;
+ rc = -ENOMEM;
+ goto err_free_local;
}
/*
@@ -1061,7 +1060,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,
if (chan->chan_id < 0) {
pr_err("%s: unable to alloc ida for chan: %d\n",
__func__, chan->chan_id);
- goto err_out;
+ rc = chan->chan_id;
+ goto err_free_dev;
}
chan->dev->device.class = &dma_devclass;
@@ -1082,9 +1082,10 @@ static int __dma_async_device_channel_register(struct dma_device *device,
mutex_lock(&device->chan_mutex);
ida_free(&device->chan_ida, chan->chan_id);
mutex_unlock(&device->chan_mutex);
- err_out:
- free_percpu(chan->local);
+ err_free_dev:
kfree(chan->dev);
+ err_free_local:
+ free_percpu(chan->local);
return rc;
}
--
2.28.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] dmaengine: fix error codes in channel_register()
@ 2020-11-13 10:16 ` Dan Carpenter
0 siblings, 0 replies; 6+ messages in thread
From: Dan Carpenter @ 2020-11-13 10:16 UTC (permalink / raw)
To: Vinod Koul; +Cc: Dave Jiang, dmaengine, kernel-janitors
The error codes were not set on some of these error paths.
Also the error handling was more confusing than it needed to be so I
cleaned it up and shuffled it around a bit.
Fixes: d2fb0a043838 ("dmaengine: break out channel registration")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
drivers/dma/dmaengine.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 7974fa0400d8..962cbb5e5f7f 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -1039,16 +1039,15 @@ static int get_dma_id(struct dma_device *device)
static int __dma_async_device_channel_register(struct dma_device *device,
struct dma_chan *chan)
{
- int rc = 0;
+ int rc;
chan->local = alloc_percpu(typeof(*chan->local));
if (!chan->local)
- goto err_out;
+ return -ENOMEM;
chan->dev = kzalloc(sizeof(*chan->dev), GFP_KERNEL);
if (!chan->dev) {
- free_percpu(chan->local);
- chan->local = NULL;
- goto err_out;
+ rc = -ENOMEM;
+ goto err_free_local;
}
/*
@@ -1061,7 +1060,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,
if (chan->chan_id < 0) {
pr_err("%s: unable to alloc ida for chan: %d\n",
__func__, chan->chan_id);
- goto err_out;
+ rc = chan->chan_id;
+ goto err_free_dev;
}
chan->dev->device.class = &dma_devclass;
@@ -1082,9 +1082,10 @@ static int __dma_async_device_channel_register(struct dma_device *device,
mutex_lock(&device->chan_mutex);
ida_free(&device->chan_ida, chan->chan_id);
mutex_unlock(&device->chan_mutex);
- err_out:
- free_percpu(chan->local);
+ err_free_dev:
kfree(chan->dev);
+ err_free_local:
+ free_percpu(chan->local);
return rc;
}
--
2.28.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] dmaengine: fix error codes in channel_register()
2020-11-13 10:16 ` Dan Carpenter
@ 2020-11-17 7:24 ` Peter Ujfalusi
-1 siblings, 0 replies; 6+ messages in thread
From: Peter Ujfalusi @ 2020-11-17 7:24 UTC (permalink / raw)
To: Dan Carpenter, Vinod Koul; +Cc: Dave Jiang, dmaengine, kernel-janitors
Dan,
On 13/11/2020 12.16, Dan Carpenter wrote:
> The error codes were not set on some of these error paths.
>
> Also the error handling was more confusing than it needed to be so I
> cleaned it up and shuffled it around a bit.
Nice catch,
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
fwiw I did a boot test as well.
- Péter
> Fixes: d2fb0a043838 ("dmaengine: break out channel registration")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/dma/dmaengine.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index 7974fa0400d8..962cbb5e5f7f 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -1039,16 +1039,15 @@ static int get_dma_id(struct dma_device *device)
> static int __dma_async_device_channel_register(struct dma_device *device,
> struct dma_chan *chan)
> {
> - int rc = 0;
> + int rc;
>
> chan->local = alloc_percpu(typeof(*chan->local));
> if (!chan->local)
> - goto err_out;
> + return -ENOMEM;
> chan->dev = kzalloc(sizeof(*chan->dev), GFP_KERNEL);
> if (!chan->dev) {
> - free_percpu(chan->local);
> - chan->local = NULL;
> - goto err_out;
> + rc = -ENOMEM;
> + goto err_free_local;
> }
>
> /*
> @@ -1061,7 +1060,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,
> if (chan->chan_id < 0) {
> pr_err("%s: unable to alloc ida for chan: %d\n",
> __func__, chan->chan_id);
> - goto err_out;
> + rc = chan->chan_id;
> + goto err_free_dev;
> }
>
> chan->dev->device.class = &dma_devclass;
> @@ -1082,9 +1082,10 @@ static int __dma_async_device_channel_register(struct dma_device *device,
> mutex_lock(&device->chan_mutex);
> ida_free(&device->chan_ida, chan->chan_id);
> mutex_unlock(&device->chan_mutex);
> - err_out:
> - free_percpu(chan->local);
> + err_free_dev:
> kfree(chan->dev);
> + err_free_local:
> + free_percpu(chan->local);
> return rc;
> }
>
>
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] dmaengine: fix error codes in channel_register()
@ 2020-11-17 7:24 ` Peter Ujfalusi
0 siblings, 0 replies; 6+ messages in thread
From: Peter Ujfalusi @ 2020-11-17 7:24 UTC (permalink / raw)
To: Dan Carpenter, Vinod Koul; +Cc: Dave Jiang, dmaengine, kernel-janitors
Dan,
On 13/11/2020 12.16, Dan Carpenter wrote:
> The error codes were not set on some of these error paths.
>
> Also the error handling was more confusing than it needed to be so I
> cleaned it up and shuffled it around a bit.
Nice catch,
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
fwiw I did a boot test as well.
- Péter
> Fixes: d2fb0a043838 ("dmaengine: break out channel registration")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/dma/dmaengine.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index 7974fa0400d8..962cbb5e5f7f 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -1039,16 +1039,15 @@ static int get_dma_id(struct dma_device *device)
> static int __dma_async_device_channel_register(struct dma_device *device,
> struct dma_chan *chan)
> {
> - int rc = 0;
> + int rc;
>
> chan->local = alloc_percpu(typeof(*chan->local));
> if (!chan->local)
> - goto err_out;
> + return -ENOMEM;
> chan->dev = kzalloc(sizeof(*chan->dev), GFP_KERNEL);
> if (!chan->dev) {
> - free_percpu(chan->local);
> - chan->local = NULL;
> - goto err_out;
> + rc = -ENOMEM;
> + goto err_free_local;
> }
>
> /*
> @@ -1061,7 +1060,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,
> if (chan->chan_id < 0) {
> pr_err("%s: unable to alloc ida for chan: %d\n",
> __func__, chan->chan_id);
> - goto err_out;
> + rc = chan->chan_id;
> + goto err_free_dev;
> }
>
> chan->dev->device.class = &dma_devclass;
> @@ -1082,9 +1082,10 @@ static int __dma_async_device_channel_register(struct dma_device *device,
> mutex_lock(&device->chan_mutex);
> ida_free(&device->chan_ida, chan->chan_id);
> mutex_unlock(&device->chan_mutex);
> - err_out:
> - free_percpu(chan->local);
> + err_free_dev:
> kfree(chan->dev);
> + err_free_local:
> + free_percpu(chan->local);
> return rc;
> }
>
>
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] dmaengine: fix error codes in channel_register()
2020-11-13 10:16 ` Dan Carpenter
@ 2020-11-18 12:33 ` Vinod Koul
-1 siblings, 0 replies; 6+ messages in thread
From: Vinod Koul @ 2020-11-18 12:21 UTC (permalink / raw)
To: Dan Carpenter; +Cc: Dave Jiang, dmaengine, kernel-janitors
On 13-11-20, 13:16, Dan Carpenter wrote:
> The error codes were not set on some of these error paths.
>
> Also the error handling was more confusing than it needed to be so I
> cleaned it up and shuffled it around a bit.
Applied, thanks
--
~Vinod
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] dmaengine: fix error codes in channel_register()
@ 2020-11-18 12:33 ` Vinod Koul
0 siblings, 0 replies; 6+ messages in thread
From: Vinod Koul @ 2020-11-18 12:33 UTC (permalink / raw)
To: Dan Carpenter; +Cc: Dave Jiang, dmaengine, kernel-janitors
On 13-11-20, 13:16, Dan Carpenter wrote:
> The error codes were not set on some of these error paths.
>
> Also the error handling was more confusing than it needed to be so I
> cleaned it up and shuffled it around a bit.
Applied, thanks
--
~Vinod
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-11-18 12:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-13 10:16 [PATCH] dmaengine: fix error codes in channel_register() Dan Carpenter
2020-11-13 10:16 ` Dan Carpenter
2020-11-17 7:24 ` Peter Ujfalusi
2020-11-17 7:24 ` Peter Ujfalusi
2020-11-18 12:21 ` Vinod Koul
2020-11-18 12:33 ` Vinod Koul
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.