Re: [PATCH 16/18] crypto: talitos - do hw_context DMA mapping outside the requests

From: Horia Geantă
Date: Tue Feb 20 2018 - 06:32:34 EST


On 2/20/2018 12:34 PM, Herbert Xu wrote:
> On Mon, Feb 19, 2018 at 01:16:30PM +0000, Horia Geantă wrote:
>>
>>> And what about ALGIF path from user space ?
>>> What if the user never calls the last sendmsg() which will call
>>> hash_finup() ?
>>>
>> User is expected to follow the rules of the crypto API.
>> Of course, kernel won't (or at least shouldn't) crash in case of misuse.
>> However, in these cases some resources might not be freed - it's unavoidable.
>
> the crypto API does not require the presence of a finalisation.
> It is entirely optional. So leaving resources pinned down until
> final/finup occurs is unacceptable, both from user-space and the
> kernel.
>
If final/finup is optional, how is the final hash supposed to be retrieved?

According to documentation, these are the accepted flows (with the option to
export/import a partial hash b/w update and final/finup):

.init() -> .update() -> .final()
^ | |
'----' '---> HASH

.init() -> .update() -> .finup()
^ | |
'----' '---> HASH

.digest()
|
'---------------> HASH

Note that digest() is not an issue in the case we are discussing, since resource
allocation happens only in init().

Thanks,
Horia