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