]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
crypto: padlock-aes - Fix Nano workaround data corruption
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 Jul 2018 08:12:32 +0000 (16:12 +0800)
committerJuerg Haefliger <juergh@canonical.com>
Wed, 24 Jul 2019 01:41:47 +0000 (19:41 -0600)
commite8e77341f35f4ce720101ee5568bc54855e1028a
tree40d5f891a7db901b0716afd7d0d20bae13b50b43
parentdd7a6e6bfec9733874046354249ceb48b458af12
crypto: padlock-aes - Fix Nano workaround data corruption

BugLink: https://bugs.launchpad.net/bugs/1835845
commit 46d8c4b28652d35dc6cfb5adf7f54e102fc04384 upstream.

This was detected by the self-test thanks to Ard's chunking patch.

I finally got around to testing this out on my ancient Via box.  It
turns out that the workaround got the assembly wrong and we end up
doing count + initial cycles of the loop instead of just count.

This obviously causes corruption, either by overwriting the source
that is yet to be processed, or writing over the end of the buffer.

On CPUs that don't require the workaround only ECB is affected.
On Nano CPUs both ECB and CBC are affected.

This patch fixes it by doing the subtraction prior to the assembly.

Fixes: a76c1c23d0c3 ("crypto: padlock-aes - work around Nano CPU...")
Cc: <stable@vger.kernel.org>
Reported-by: Jamie Heilman <jamie@audible.transient.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/crypto/padlock-aes.c