Thread (5 messages) 5 messages, 4 authors, 2008-08-22

Re: Oops in authenc: 2.6.26.3

From: Matt LaPlante <hidden>
Date: 2008-08-21 13:08:38
Also in: linux-crypto, lkml

Possibly related (same subject, not in this thread)

On Thu, 21 Aug 2008 18:36:15 +1000
Herbert Xu [off-list ref] wrote:
On Thu, Aug 21, 2008 at 07:02:25AM +0000, Sascha Biberhofer wrote:
quoted
I have the same problem on my system, starting with the release of
2.6.26. Shortly afterwards I've had the same problem with the 2.6.25
series starting with 2.6.25.12. I've looked up the changes between
2.6.25.11 and .12 and found commit
c2bd04d8040a91fe2ee2e9fee1a6562ca9792249 (it's commit
872ac8743cb400192a9fce4ba2d3ffd7bb309685 in the 2.6.26 series).
Reverting the commit seems to solve the problem here, I've been running
a 2.6.25.12 kernel without this commit for some weeks now.
In case it's important: I'm using an IPSec ESP transport with AES-256
and sha-256 auth. 
Sorry, I was skimping on memory and ended up calling a clobbered
function pointer.

This patch should fix it.

crypto: authenc - Avoid using clobbered request pointer

Authenc works in two stages for encryption, it first encrypts and
then computes an ICV.  The context memory of the request is used
by both operations.  The problem is that when an asynchronous
encryption completes, we will compute the ICV and then reread the
context memory of the encryption to get the original request.

It just happens that we have a buffer of 16 bytes in front of the
request pointer, so ICVs of 16 bytes (such as SHA1) do not trigger
the bug.  However, any attempt to uses a larger ICV instantly kills
the machine when the first asynchronous encryption is completed.

This patch fixes this by saving the request pointer before we start
the ICV computation.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Matt LaPlante <redacted>

Thanks for the quick fix!

-- 
Matt LaPlante
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help