All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Robin Murphy <robin.murphy@arm.com>
Cc: arno@natisbad.org, herbert@gondor.apana.org.au,
	davem@davemloft.net, hch@lst.de, linux-crypto@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] crypto: marvell/cesa - Fix DMA API misuse
Date: Wed, 10 Jan 2018 16:25:22 +0100	[thread overview]
Message-ID: <20180110162522.580089a5@bbrezillon> (raw)
In-Reply-To: <55d3177407b00dd4a9d51fe4f8e2bf2282fe8e3d.1515596541.git.robin.murphy@arm.com>

On Wed, 10 Jan 2018 15:15:43 +0000
Robin Murphy <robin.murphy@arm.com> wrote:

> phys_to_dma() is an internal helper for certain DMA API implementations,
> and is not appropriate for drivers to use. It appears that what the CESA
> driver really wants to be using is dma_map_resource() - admittedly that
> didn't exist when the offending code was first merged, but it does now.
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

> ---
> 
> Found by inspection and compile-tested only
> 
>  drivers/crypto/marvell/cesa.c | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/crypto/marvell/cesa.c b/drivers/crypto/marvell/cesa.c
> index 293832488cc9..f81fa4a3e66b 100644
> --- a/drivers/crypto/marvell/cesa.c
> +++ b/drivers/crypto/marvell/cesa.c
> @@ -15,6 +15,7 @@
>   */
>  
>  #include <linux/delay.h>
> +#include <linux/dma-mapping.h>
>  #include <linux/genalloc.h>
>  #include <linux/interrupt.h>
>  #include <linux/io.h>
> @@ -409,8 +410,11 @@ static int mv_cesa_get_sram(struct platform_device *pdev, int idx)
>  	if (IS_ERR(engine->sram))
>  		return PTR_ERR(engine->sram);
>  
> -	engine->sram_dma = phys_to_dma(cesa->dev,
> -				       (phys_addr_t)res->start);
> +	engine->sram_dma = dma_map_resource(cesa->dev, res->start,
> +					    cesa->sram_size,
> +					    DMA_BIDIRECTIONAL, 0);
> +	if (dma_mapping_error(cesa->dev, engine->sram_dma))
> +		return -ENOMEM;
>  
>  	return 0;
>  }
> @@ -420,11 +424,12 @@ static void mv_cesa_put_sram(struct platform_device *pdev, int idx)
>  	struct mv_cesa_dev *cesa = platform_get_drvdata(pdev);
>  	struct mv_cesa_engine *engine = &cesa->engines[idx];
>  
> -	if (!engine->pool)
> -		return;
> -
> -	gen_pool_free(engine->pool, (unsigned long)engine->sram,
> -		      cesa->sram_size);
> +	if (engine->pool)
> +		gen_pool_free(engine->pool, (unsigned long)engine->sram,
> +			      cesa->sram_size);
> +	else
> +		dma_unmap_resource(cesa->dev, engine->sram_dma,
> +				   cesa->sram_size, DMA_BIDIRECTIONAL, 0);
>  }
>  
>  static int mv_cesa_probe(struct platform_device *pdev)

WARNING: multiple messages have this Message-ID (diff)
From: boris.brezillon@free-electrons.com (Boris Brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] crypto: marvell/cesa - Fix DMA API misuse
Date: Wed, 10 Jan 2018 16:25:22 +0100	[thread overview]
Message-ID: <20180110162522.580089a5@bbrezillon> (raw)
In-Reply-To: <55d3177407b00dd4a9d51fe4f8e2bf2282fe8e3d.1515596541.git.robin.murphy@arm.com>

On Wed, 10 Jan 2018 15:15:43 +0000
Robin Murphy <robin.murphy@arm.com> wrote:

> phys_to_dma() is an internal helper for certain DMA API implementations,
> and is not appropriate for drivers to use. It appears that what the CESA
> driver really wants to be using is dma_map_resource() - admittedly that
> didn't exist when the offending code was first merged, but it does now.
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

> ---
> 
> Found by inspection and compile-tested only
> 
>  drivers/crypto/marvell/cesa.c | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/crypto/marvell/cesa.c b/drivers/crypto/marvell/cesa.c
> index 293832488cc9..f81fa4a3e66b 100644
> --- a/drivers/crypto/marvell/cesa.c
> +++ b/drivers/crypto/marvell/cesa.c
> @@ -15,6 +15,7 @@
>   */
>  
>  #include <linux/delay.h>
> +#include <linux/dma-mapping.h>
>  #include <linux/genalloc.h>
>  #include <linux/interrupt.h>
>  #include <linux/io.h>
> @@ -409,8 +410,11 @@ static int mv_cesa_get_sram(struct platform_device *pdev, int idx)
>  	if (IS_ERR(engine->sram))
>  		return PTR_ERR(engine->sram);
>  
> -	engine->sram_dma = phys_to_dma(cesa->dev,
> -				       (phys_addr_t)res->start);
> +	engine->sram_dma = dma_map_resource(cesa->dev, res->start,
> +					    cesa->sram_size,
> +					    DMA_BIDIRECTIONAL, 0);
> +	if (dma_mapping_error(cesa->dev, engine->sram_dma))
> +		return -ENOMEM;
>  
>  	return 0;
>  }
> @@ -420,11 +424,12 @@ static void mv_cesa_put_sram(struct platform_device *pdev, int idx)
>  	struct mv_cesa_dev *cesa = platform_get_drvdata(pdev);
>  	struct mv_cesa_engine *engine = &cesa->engines[idx];
>  
> -	if (!engine->pool)
> -		return;
> -
> -	gen_pool_free(engine->pool, (unsigned long)engine->sram,
> -		      cesa->sram_size);
> +	if (engine->pool)
> +		gen_pool_free(engine->pool, (unsigned long)engine->sram,
> +			      cesa->sram_size);
> +	else
> +		dma_unmap_resource(cesa->dev, engine->sram_dma,
> +				   cesa->sram_size, DMA_BIDIRECTIONAL, 0);
>  }
>  
>  static int mv_cesa_probe(struct platform_device *pdev)

  reply	other threads:[~2018-01-10 15:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-10 15:15 [PATCH] crypto: marvell/cesa - Fix DMA API misuse Robin Murphy
2018-01-10 15:15 ` Robin Murphy
2018-01-10 15:25 ` Boris Brezillon [this message]
2018-01-10 15:25   ` Boris Brezillon
2018-01-10 15:48   ` Christoph Hellwig
2018-01-10 15:48     ` Christoph Hellwig
2018-01-10 16:23     ` Boris Brezillon
2018-01-10 16:23       ` Boris Brezillon
2018-01-18 12:03 ` Herbert Xu
2018-01-18 12:03   ` Herbert Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180110162522.580089a5@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=arno@natisbad.org \
    --cc=davem@davemloft.net \
    --cc=hch@lst.de \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.