2019-06-20 09:37:51

by Hauke Mehrtens

[permalink] [raw]
Subject: crypto: crypto4xx - properly set IV after de- and encrypt breaks kernel 4.4

Hi,

The patch "crypto: crypto4xx - properly set IV after de- and encrypt"
causes a compile error on kernel 4.4.

When I revert this commit it compiles for me again:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e9a60ab1609a7d975922adad1bf9c46ac6954584

I do not have hardware to test if it is really working.

Hauke

drivers/crypto/amcc/crypto4xx_core.c: In function
'crypto4xx_ablkcipher_done':
drivers/crypto/amcc/crypto4xx_core.c:649:21: warning: dereferencing
'void *' pointer
if (pd_uinfo->sa_va->sa_command_0.bf.save_iv == SA_SAVE_IV) {
^
drivers/crypto/amcc/crypto4xx_core.c:649:21: error: request for member
'sa_command_0' in something not a structure or union
drivers/crypto/amcc/crypto4xx_core.c:650:38: error: implicit declaration
of function 'crypto_skcipher_reqtfm' [-Werror=implicit-function-declaration]
struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
^
drivers/crypto/amcc/crypto4xx_core.c:650:61: error: 'req' undeclared
(first use in this function)
struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
^
drivers/crypto/amcc/crypto4xx_core.c:650:61: note: each undeclared
identifier is reported only once for each function it appears in
drivers/crypto/amcc/crypto4xx_core.c:652:3: error: implicit declaration
of function 'crypto4xx_memcpy_from_le32'
[-Werror=implicit-function-declaration]
crypto4xx_memcpy_from_le32((u32 *)req->iv,
^
drivers/crypto/amcc/crypto4xx_core.c:653:19: warning: dereferencing
'void *' pointer
pd_uinfo->sr_va->save_iv,
^
drivers/crypto/amcc/crypto4xx_core.c:653:19: error: request for member
'save_iv' in something not a structure or union
drivers/crypto/amcc/crypto4xx_core.c:654:4: error: implicit declaration
of function 'crypto_skcipher_ivsize' [-Werror=implicit-function-declaration]
crypto_skcipher_ivsize(skcipher));
^




Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2019-06-20 12:07:52

by Christian Lamparter

[permalink] [raw]
Subject: Re: crypto: crypto4xx - properly set IV after de- and encrypt breaks kernel 4.4

On Thursday, June 20, 2019 11:36:50 AM CEST Hauke Mehrtens wrote:
> Hi,
>
> The patch "crypto: crypto4xx - properly set IV after de- and encrypt"
> causes a compile error on kernel 4.4.

3.18 as well.
>
> When I revert this commit it compiles for me again:
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e9a60ab1609a7d975922adad1bf9c46ac6954584
>
> I do not have hardware to test if it is really working.

I have a few APM821XX. But please note drivers without

commit b66c685a482117d4e9ee987d252ca673689a5302
Author: Christian Lamparter <[email protected]>
Date: Fri Dec 22 21:18:36 2017 +0100

crypto: crypto4xx - support Revision B parts

don't work on those and I do have my doubts that 460EX
series (and older) would either. I also don't believe that
the inital driver as it was submitted would have worked.
From what I've seen in their SDK, they patched the testmgr
at the time to either disable tests or provided their own...
so, might as well revert these patches for 4.4 and 3.18.

Because...

> drivers/crypto/amcc/crypto4xx_core.c: In function
> 'crypto4xx_ablkcipher_done':
> drivers/crypto/amcc/crypto4xx_core.c:649:21: warning: dereferencing
> 'void *' pointer
> if (pd_uinfo->sa_va->sa_command_0.bf.save_iv == SA_SAVE_IV) {

This would probably need
9e0a0b3a1 ("crypto: crypto4xx - pointer arithmetic overhaul") which is
a big patch.

> ^
> drivers/crypto/amcc/crypto4xx_core.c:649:21: error: request for member
> 'sa_command_0' in something not a structure or union
> drivers/crypto/amcc/crypto4xx_core.c:650:38: error: implicit declaration
> of function 'crypto_skcipher_reqtfm' [-Werror=implicit-function-declaration]
> struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
> ^
This would require adding #include <crypto/skcipher.h> to crypto4xx_core.c

The patch that added it upstream was
ce05ffe10457 ("crypto: crypto4xx - convert to skcipher")

But this is more than just a one-liner.

> drivers/crypto/amcc/crypto4xx_core.c:650:61: error: 'req' undeclared
> (first use in this function)
> struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
> ^
> drivers/crypto/amcc/crypto4xx_core.c:650:61: note: each undeclared
> identifier is reported only once for each function it appears in
see "#include <crypto/skcipher.h>"

> drivers/crypto/amcc/crypto4xx_core.c:652:3: error: implicit declaration
> of function 'crypto4xx_memcpy_from_le32'
> [-Werror=implicit-function-declaration]
> crypto4xx_memcpy_from_le32((u32 *)req->iv,
> ^

crypto4xx_memcpy_from_le32 is from
4865b122d4af ("crypto: crypto4xx - use the correct LE32 format for IV and key defs")

I think crypto4xx_memcpy_le() could work in this place.
But again I do have my doubts that the device works
without said patch.

> drivers/crypto/amcc/crypto4xx_core.c:653:19: warning: dereferencing
> 'void *' pointer
> pd_uinfo->sr_va->save_iv,
> ^
> drivers/crypto/amcc/crypto4xx_core.c:653:19: error: request for member
> 'save_iv' in something not a structure or union
See "crypto: crypto4xx - pointer arithmetic overhaul".
> drivers/crypto/amcc/crypto4xx_core.c:654:4: error: implicit declaration
> of function 'crypto_skcipher_ivsize' [-Werror=implicit-function-declaration]
> crypto_skcipher_ivsize(skcipher));
> ^

see "#include <crypto/skcipher.h>"

(Yeaah, there seems to be a limit of what automatic cherry-picking of
patches can do :( )



2019-06-20 14:08:29

by Greg KH

[permalink] [raw]
Subject: Re: crypto: crypto4xx - properly set IV after de- and encrypt breaks kernel 4.4

On Thu, Jun 20, 2019 at 02:07:27PM +0200, Christian Lamparter wrote:
> On Thursday, June 20, 2019 11:36:50 AM CEST Hauke Mehrtens wrote:
> > Hi,
> >
> > The patch "crypto: crypto4xx - properly set IV after de- and encrypt"
> > causes a compile error on kernel 4.4.
>
> 3.18 as well.
> >
> > When I revert this commit it compiles for me again:
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e9a60ab1609a7d975922adad1bf9c46ac6954584
> >
> > I do not have hardware to test if it is really working.
>
> I have a few APM821XX. But please note drivers without
>
> commit b66c685a482117d4e9ee987d252ca673689a5302
> Author: Christian Lamparter <[email protected]>
> Date: Fri Dec 22 21:18:36 2017 +0100
>
> crypto: crypto4xx - support Revision B parts
>
> don't work on those and I do have my doubts that 460EX
> series (and older) would either. I also don't believe that
> the inital driver as it was submitted would have worked.
> >From what I've seen in their SDK, they patched the testmgr
> at the time to either disable tests or provided their own...
> so, might as well revert these patches for 4.4 and 3.18.

Now reverted from both, thanks.

greg k-h