• Horia Geantă's avatar
    crypto: caam - fix error path for ctx_dma mapping failure · 87ec02e7
    Horia Geantă authored
    In case ctx_dma dma mapping fails, ahash_unmap_ctx() tries to
    dma unmap an invalid address:
    map_seq_out_ptr_ctx() / ctx_map_to_sec4_sg() -> goto unmap_ctx ->
    -> ahash_unmap_ctx() -> dma unmap ctx_dma
    
    There is also possible to reach ahash_unmap_ctx() with ctx_dma
    uninitialzed or to try to unmap the same address twice.
    
    Fix these by setting ctx_dma = 0 where needed:
    -initialize ctx_dma in ahash_init()
    -clear ctx_dma in case of mapping error (instead of holding
    the error code returned by the dma map function)
    -clear ctx_dma after each unmapping
    
    Fixes: 32686d34 ("crypto: caam - ensure that we clean up after an error")
    Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    87ec02e7
caamhash.c 53.2 KB