crypto: msm: fix hmac ahashing issues with simultaneous multiple requests.
This patch fixes two issues. One issue is to do with simultaneous requests of a ahash tfm. The other issue is to do with ahash import, and export functions. Agent issues chain of requests in sequence of init, followed by multiple updates, and final to the crypto driver for the hashing of a buffer. Each request can be asynchrounous. After a request is complete, the next one in the sequence is issued. Multiple simultaneous async requests can be issued to the driver for the same tfm if they are for independent hashing. In the driver, the state variables such as trailing buffer, first block, last block are maintained in the driver. The state variables are maintained in the request context, instead of tfm context. Otherwise, simultaneous async requests can confuse each other. This patch moves those variables out of tfm context to request context to fix this issue. Agent above the driver can import/export ahash state of a request. This patch fixes a few issues in the driver to support import/export. First issue, the byte count returned from hw for hmac has 64 bytes of padding on the first request to the hardware. In the import/export this special case needs to be accomodated. The 2nd issue is the state buffer is only updated after hardware operation complete. For the first, data being accumulated in the trailing buffer, and if request has not ever issued to the hw, when import function comes, the trailing data needs to be exported. This patch uses trailing buffer directly as state buffer variable for import and export. The context update functions after hareware request complete are not necessary and they are removed. The last issue is to do with state variable count. It was not initialized. That may cause hashing generated wrong digest after export and import. Change-Id: I608c2322b120825b9ca12c3794e0b0a4628ef693 Acked-by:Chemin Hsieh <cheminh@qti.qualcomm.com> Signed-off-by:
Rohit Vaswani <rvaswani@codeaurora.org>
Loading
Please register or sign in to comment