• Horia Geantă's avatar
    crypto: caam/jr - fix ablkcipher_edesc pointer arithmetic · 13cc6f48
    Horia Geantă authored
    In some cases the zero-length hw_desc array at the end of
    ablkcipher_edesc struct requires for 4B of tail padding.
    
    Due to tail padding and the way pointers to S/G table and IV
    are computed:
    	edesc->sec4_sg = (void *)edesc + sizeof(struct ablkcipher_edesc) +
    			 desc_bytes;
    	iv = (u8 *)edesc->hw_desc + desc_bytes + sec4_sg_bytes;
    first 4 bytes of IV are overwritten by S/G table.
    
    Update computation of pointer to S/G table to rely on offset of hw_desc
    member and not on sizeof() operator.
    
    Cc: <stable@vger.kernel.org> # 4.13+
    Fixes: 115957bb ("crypto: caam - fix IV DMA mapping and updating")
    Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    13cc6f48
caamalg.c 93.9 KB