• Nicolas Toromanoff's avatar
    crypto: stm32/cryp - fix bugs and crash in tests · 4b898d5c
    Nicolas Toromanoff authored
    Extra crypto manager auto test were crashing or failling due
    to 2 reasons:
    - block in a dead loop (dues to issues in cipher end process management)
    - crash due to read/write unmapped memory (this crash was also reported
    when using openssl afalg engine)
    
    Rework interrupt management, interrupts are masked as soon as they are
    no more used: if input buffer is fully consumed, "Input FIFO not full"
    interrupt is masked and if output buffer is full, "Output FIFO not
    empty" interrupt is masked.
    And crypto request finish when input *and* outpout buffer are fully
    read/write.
    
    About the crash due to unmapped memory, using scatterwalk_copychunks()
    that will map and copy each block fix the issue.
    Using this api and copying full block will also fix unaligned data
    access, avoid early copy of in/out buffer, and make useless the extra
    alignment constraint.
    
    Fixes: 9e054ec2 ("crypto: stm32 - Support for STM32 CRYP crypto module")
    Reported-by: default avatarMarek Vasut <marex@denx.de>
    Signed-off-by: default avatarNicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    4b898d5c
stm32-cryp.c 46.1 KB