+34
−18
Loading
The phmac implementation used the req->nbytes field on combined operations (finup, digest) to track the state: with req->nbytes > 0 the update needs to be processed, while req->nbytes == 0 means to do the final operation. For this purpose the req->nbytes field was set to 0 after successful update operation. However, aead uses the req->nbytes field after a successful hash operation to determine the amount of data to en/decrypt. So an implementation must not modify the nbytes field. Fixed by a slight rework on the phmac implementation. There is now a new field async_op in the request context which tracks the (asynch) operation to process. So the 'state' via req->nbytes is not needed any more and now this field is untouched and may be evaluated even after a request is processed by the phmac implementation. Fixes: cbbc6755 ("crypto: s390 - New s390 specific protected key hash phmac") Reported-by:Ingo Franzki <ifranzki@linux.ibm.com> Signed-off-by:
Harald Freudenberger <freude@linux.ibm.com> Tested-by:
Ingo Franzki <ifranzki@linux.ibm.com> Reviewed-by:
Ingo Franzki <ifranzki@linux.ibm.com> Reviewed-by:
Holger Dengler <dengler@linux.ibm.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au>