crypto: atmel-tdes - simplify DMA buffer initialization
Subsystems (2)
PATCH 1/1 crypto: atmel-tdes - simplify DMA buffer initialization
Calculate the buffer length in a single statement and simplify the error handling. Inline the dma_mapping_error() checks and return -ENOMEM from the common error path. If mapping the output buffer fails, unmap the previously mapped input buffer first.
Also use dev_err() to log errors and %zu to format size_t, and clarify the error messages.
--- drivers/crypto/atmel-tdes.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-)
drivers/crypto/atmel-tdes.c +12 -24
@@ -308,45 +308,33 @@ static int atmel_tdes_crypt_pdc_stop(struct atmel_tdes_dev *dd)static int atmel_tdes_buff_init (struct atmel_tdes_dev *dd) { -int err = -ENOMEM ; - dd->buf_in = (void *)__get_free_page (GFP_KERNEL ); dd->buf_out = (void *)__get_free_page (GFP_KERNEL ); - dd->buflen =PAGE_SIZE ; - dd->buflen &= ~(DES_BLOCK_SIZE -1 ); + dd->buflen =PAGE_SIZE & ~(DES_BLOCK_SIZE -1 );if (!dd->buf_in || !dd->buf_out) { -dev_dbg (dd->dev,"unable to alloc pages.\n" ); +dev_err (dd->dev,"failed to allocate DMA buffers\n" ); goto err_alloc; } -/* MAP here */ - dd->dma_addr_in =dma_map_single (dd->dev, dd->buf_in, - dd->buflen,DMA_TO_DEVICE ); - err =dma_mapping_error (dd->dev, dd->dma_addr_in); -if (err) { -dev_dbg (dd->dev,"dma %zd bytes error\n" , dd->buflen); - goto err_map_in; - } + dd->dma_addr_in =dma_map_single (dd->dev, dd->buf_in, dd->buflen,DMA_TO_DEVICE ); +if (dma_mapping_error (dd->dev, dd->dma_addr_in)) + goto err_map; - dd->dma_addr_out =dma_map_single (dd->dev, dd->buf_out, - dd->buflen,DMA_FROM_DEVICE ); - err =dma_mapping_error (dd->dev, dd->dma_addr_out); -if (err) { -dev_dbg (dd->dev,"dma %zd bytes error\n" , dd->buflen); - goto err_map_out; + dd->dma_addr_out =dma_map_single (dd->dev, dd->buf_out, dd->buflen,DMA_FROM_DEVICE ); +if (dma_mapping_error (dd->dev, dd->dma_addr_out)) { +dma_unmap_single (dd->dev, dd->dma_addr_in, dd->buflen,DMA_TO_DEVICE ); + goto err_map; }return 0 ; -err_map_out: -dma_unmap_single (dd->dev, dd->dma_addr_in, dd->buflen, -DMA_TO_DEVICE ); -err_map_in: +err_map: +dev_err (dd->dev,"failed to map %zu bytes for DMA\n" , dd->buflen); err_alloc:free_page ((unsigned long )dd->buf_out);free_page ((unsigned long )dd->buf_in); -return err; +return -ENOMEM ; }static void atmel_tdes_buff_cleanup (struct atmel_tdes_dev *dd)
Herbert Xu
maintainerQuoted 5 lines · Thorsten Blum
Calculate the buffer length in a single statement and simplify the error handling. Inline the
dma_mapping_error()checks and return-ENOMEMfrom the common error path. If mapping the output buffer fails, unmap the previously mapped input buffer first.
Quoted 7 lines
Also use
dev_err()to log errors and %zu to formatsize_t, and clarify the error messages.Signed-off-by Thorsten Blum <[email protected]>--- drivers/crypto/atmel-tdes.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt