• Marek Vasut's avatar
    crypto: hash - Fix the pointer voodoo in unaligned ahash · ab6bf4e5
    Marek Vasut authored
    Add documentation for the pointer voodoo that is happening in crypto/ahash.c
    in ahash_op_unaligned(). This code is quite confusing, so add a beefy chunk
    of documentation.
    
    Moreover, make sure the mangled request is completely restored after finishing
    this unaligned operation. This means restoring all of .result, .base.data
    and .base.complete .
    
    Also, remove the crypto_completion_t complete = ... line present in the
    ahash_op_unaligned_done() function. This type actually declares a function
    pointer, which is very confusing.
    
    Finally, yet very important nonetheless, make sure the req->priv is free()'d
    only after the original request is restored in ahash_op_unaligned_done().
    The req->priv data must not be free()'d before that in ahash_op_unaligned_finish(),
    since we would be accessing previously free()'d data in ahash_op_unaligned_done()
    and cause corruption.
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Fabio Estevam <fabio.estevam@freescale.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Shawn Guo <shawn.guo@linaro.org>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    ab6bf4e5
ahash.c 14.3 KB