On Fri, May 29, 2009 at 12:04:32PM +0200, Martin Willi wrote: > > After doing further tests, it seems that this is additionally related to > User-Mode-Linux and/or it's TUN/TAP network driver. I couldn't reproduce > the issue on a x64 with e1000. > I think the bug is actually in the UML network code, but changing the > scatterwalk logic by using the hash_walk functions triggered the issue. Ah, I think I see the problem. You must getting an sg entry that crosses a page boundary, rather than two sg entries that both stay within a page. These things are very rare, and usually occurs as a result of SLAB debugging causing kmalloc to return memory that crosses page boundaries. Can you see if this patch fixes the problem? diff --git a/crypto/ahash.c b/crypto/ahash.c index b2d1ee3..f347637 100644 --- a/crypto/ahash.c +++ b/crypto/ahash.c @@ -82,10 +82,11 @@ int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) if (err) return err; - walk->offset = 0; - - if (nbytes) + if (nbytes) { + walk->offset = 0; + walk->pg++; return hash_walk_next(walk); + } if (!walk->total) return 0; Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html