Message ID | 20210124073955.728797-1-christophe.jaillet@wanadoo.fr |
---|---|
State | Accepted |
Headers | show |
Series | mtd: rawnand: Fix an error handling path in 'ebu_dma_start()' | expand |
> If 'dmaengine_prep_slave_single()' fails, we must undo a previous > 'dma_map_single()' call, as already done in all the other error handling > paths of this function. Would you ever like to use an imperative wording for the change description? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=fdbc80bdc4365078a0f7d65631171cb80e3ffd6e#n89 … > +++ b/drivers/mtd/nand/raw/intel-nand-controller.c > @@ -318,8 +318,10 @@ static int ebu_dma_start(struct ebu_nand_controller *ebu_host, u32 dir, > } > > tx = dmaengine_prep_slave_single(chan, buf_dma, len, dir, flags); > - if (!tx) > - return -ENXIO; > + if (!tx) { > + ret = -ENXIO; > + goto err_unmap; > + } > > tx->callback = callback; … By the way: Can it be nicer to achieve the statement “ret = -EIO;” by a jump for a target like “e_io” so that less exception handling code would be duplicated for this function implementation? Regards, Markus
On Sun, Jan 24, 2021 at 9:13 PM Markus Elfring <Markus.Elfring@web.de> wrote: > > > If 'dmaengine_prep_slave_single()' fails, we must undo a previous > > 'dma_map_single()' call, as already done in all the other error handling > > paths of this function. > > Would you ever like to use an imperative wording for the change description? > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=fdbc80bdc4365078a0f7d65631171cb80e3ffd6e#n89 > > > … > > +++ b/drivers/mtd/nand/raw/intel-nand-controller.c > > @@ -318,8 +318,10 @@ static int ebu_dma_start(struct ebu_nand_controller *ebu_host, u32 dir, > > } > > > > tx = dmaengine_prep_slave_single(chan, buf_dma, len, dir, flags); > > - if (!tx) > > - return -ENXIO; > > + if (!tx) { > > + ret = -ENXIO; > > + goto err_unmap; > > + } > > > > tx->callback = callback; > … > > By the way: > Can it be nicer to achieve the statement “ret = -EIO;” by a jump for > a target like “e_io” so that less exception handling code would be duplicated > for this function implementation? Please feel free to ignore Markus. https://lore.kernel.org/lkml/X+x3pIanr18Ep4ga@kroah.com/
On Sun, 2021-01-24 at 07:39:55 UTC, Christophe JAILLET wrote: > If 'dmaengine_prep_slave_single()' fails, we must undo a previous > 'dma_map_single()' call, as already done in all the other error handling > paths of this function. > > Fixes: 0b1039f016e8 ("mtd: rawnand: Add NAND controller support on Intel LGM SoC") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel
diff --git a/drivers/mtd/nand/raw/intel-nand-controller.c b/drivers/mtd/nand/raw/intel-nand-controller.c index a304fda5d1fa..8b49fd56cf96 100644 --- a/drivers/mtd/nand/raw/intel-nand-controller.c +++ b/drivers/mtd/nand/raw/intel-nand-controller.c @@ -318,8 +318,10 @@ static int ebu_dma_start(struct ebu_nand_controller *ebu_host, u32 dir, } tx = dmaengine_prep_slave_single(chan, buf_dma, len, dir, flags); - if (!tx) - return -ENXIO; + if (!tx) { + ret = -ENXIO; + goto err_unmap; + } tx->callback = callback; tx->callback_param = ebu_host;
If 'dmaengine_prep_slave_single()' fails, we must undo a previous 'dma_map_single()' call, as already done in all the other error handling paths of this function. Fixes: 0b1039f016e8 ("mtd: rawnand: Add NAND controller support on Intel LGM SoC") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- drivers/mtd/nand/raw/intel-nand-controller.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)