diff mbox

crypto: hifn_795x: Fix a handful of minor bugs spotted by eye

Message ID 1493398960-25643-1-git-send-email-logang@deltatee.com (mailing list archive)
State Changes Requested
Delegated to: Herbert Xu
Headers show

Commit Message

Logan Gunthorpe April 28, 2017, 5:02 p.m. UTC
* Cleaned up the formatting of ablkcipher_get arguments so it complies
  with kernel style
* The offset in ablkcipher_get sould be added to the source, not the
  destination. We rename it to soffset for clarity.
* dst++ should be dst=sg_next(dst)
* We call kunmap_atomic earlier so we only have to do it once.
* If ablkcipher_get fails, we should probably ensure the request
  completes with an error.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
---
 drivers/crypto/hifn_795x.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Herbert Xu May 18, 2017, 3:25 a.m. UTC | #1
On Fri, Apr 28, 2017 at 11:02:40AM -0600, Logan Gunthorpe wrote:
> * Cleaned up the formatting of ablkcipher_get arguments so it complies
>   with kernel style
> * The offset in ablkcipher_get sould be added to the source, not the
>   destination. We rename it to soffset for clarity.
> * dst++ should be dst=sg_next(dst)
> * We call kunmap_atomic earlier so we only have to do it once.
> * If ablkcipher_get fails, we should probably ensure the request
>   completes with an error.

Please don't mix unrelated changes in the same patch.

Also was this tested on actual hardware? This is an old driver so
it's probably best to just let it be.

Thanks,
Herbert Xu May 18, 2017, 3:26 a.m. UTC | #2
On Thu, May 18, 2017 at 11:25:06AM +0800, Herbert Xu wrote:
> On Fri, Apr 28, 2017 at 11:02:40AM -0600, Logan Gunthorpe wrote:
> > * Cleaned up the formatting of ablkcipher_get arguments so it complies
> >   with kernel style
> > * The offset in ablkcipher_get sould be added to the source, not the
> >   destination. We rename it to soffset for clarity.
> > * dst++ should be dst=sg_next(dst)
> > * We call kunmap_atomic earlier so we only have to do it once.
> > * If ablkcipher_get fails, we should probably ensure the request
> >   completes with an error.
> 
> Please don't mix unrelated changes in the same patch.
> 
> Also was this tested on actual hardware? This is an old driver so
> it's probably best to just let it be.

Of course we do want fix the offset issue so could you please send
a new patch with just that fix?

Thanks,
Logan Gunthorpe May 18, 2017, 3:33 a.m. UTC | #3
On 17/05/17 09:26 PM, Herbert Xu wrote:
> On Thu, May 18, 2017 at 11:25:06AM +0800, Herbert Xu wrote:
>> On Fri, Apr 28, 2017 at 11:02:40AM -0600, Logan Gunthorpe wrote:
>>> * Cleaned up the formatting of ablkcipher_get arguments so it complies
>>>   with kernel style
>>> * The offset in ablkcipher_get sould be added to the source, not the
>>>   destination. We rename it to soffset for clarity.
>>> * dst++ should be dst=sg_next(dst)
>>> * We call kunmap_atomic earlier so we only have to do it once.
>>> * If ablkcipher_get fails, we should probably ensure the request
>>>   completes with an error.

>> Please don't mix unrelated changes in the same patch.

Seriously? The patch is tiny and those are all incredibly minor changes.

>> Also was this tested on actual hardware? This is an old driver so
>> it's probably best to just let it be.

No, I don't have that hardware. I sent this patch because you requested it.

> Of course we do want fix the offset issue so could you please send
> a new patch with just that fix?

Sorry, no, I honestly don't see that as worth my time. Feel free to drop
the patch or roll your own.

Logan
David Miller May 18, 2017, 4:02 a.m. UTC | #4
From: Logan Gunthorpe <logang@deltatee.com>
Date: Wed, 17 May 2017 21:33:22 -0600

> 
> 
> On 17/05/17 09:26 PM, Herbert Xu wrote:
>> On Thu, May 18, 2017 at 11:25:06AM +0800, Herbert Xu wrote:
>>> On Fri, Apr 28, 2017 at 11:02:40AM -0600, Logan Gunthorpe wrote:
>>>> * Cleaned up the formatting of ablkcipher_get arguments so it complies
>>>>   with kernel style
>>>> * The offset in ablkcipher_get sould be added to the source, not the
>>>>   destination. We rename it to soffset for clarity.
>>>> * dst++ should be dst=sg_next(dst)
>>>> * We call kunmap_atomic earlier so we only have to do it once.
>>>> * If ablkcipher_get fails, we should probably ensure the request
>>>>   completes with an error.
> 
>>> Please don't mix unrelated changes in the same patch.
> 
> Seriously? The patch is tiny and those are all incredibly minor changes.

Yes, seriously.

It is the only way to make your changes easy to review and audit.

Please do as Herbert is asking.
diff mbox

Patch

diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
index e09d405..4c19e4a 100644
--- a/drivers/crypto/hifn_795x.c
+++ b/drivers/crypto/hifn_795x.c
@@ -1619,8 +1619,9 @@  static int hifn_start_device(struct hifn_device *dev)
 	return 0;
 }
 
-static int ablkcipher_get(void *saddr, unsigned int *srestp, unsigned int offset,
-		struct scatterlist *dst, unsigned int size, unsigned int *nbytesp)
+static int ablkcipher_get(void *saddr, unsigned int *srestp,
+			  unsigned int soffset, struct scatterlist *dst,
+			  unsigned int size, unsigned int *nbytesp)
 {
 	unsigned int srest = *srestp, nbytes = *nbytesp, copy;
 	void *daddr;
@@ -1633,19 +1634,19 @@  static int ablkcipher_get(void *saddr, unsigned int *srestp, unsigned int offset
 		copy = min3(srest, dst->length, size);
 
 		daddr = kmap_atomic(sg_page(dst));
-		memcpy(daddr + dst->offset + offset, saddr, copy);
+		memcpy(daddr + dst->offset, saddr + soffset, copy);
 		kunmap_atomic(daddr);
 
 		nbytes -= copy;
 		size -= copy;
 		srest -= copy;
 		saddr += copy;
-		offset = 0;
+		soffset = 0;
 
 		pr_debug("%s: copy: %u, size: %u, srest: %u, nbytes: %u.\n",
 			 __func__, copy, size, srest, nbytes);
 
-		dst++;
+		dst = sg_next(dst);
 		idx++;
 	}
 
@@ -1699,13 +1700,15 @@  static void hifn_process_ready(struct ablkcipher_request *req, int error)
 
 			err = ablkcipher_get(saddr, &t->length, t->offset,
 					dst, nbytes, &nbytes);
+			kunmap_atomic(saddr);
+
 			if (err < 0) {
-				kunmap_atomic(saddr);
+				if (!error)
+					error = err;
 				break;
 			}
 
 			idx += err;
-			kunmap_atomic(saddr);
 		}
 
 		hifn_cipher_walk_exit(&rctx->walk);