ahash - scheduling whilst atomic.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

I seem to get much the same whether using af_alg or tcrypt to poke
the support for ahashes that I just added to our driver.

Taking the af_alg path as that is the one I've chased further.
We return -EINPROGRESS (along with it seems lots of other ahash
implementations) if we have some data in flight. The hardware is
asynchronous and we don't currently bother to check if it is
already done or not (may do so later as an optimization).

In hash_sendmsg (algif_hash.c) we have

err = crypto_wait_req(crypto_ahash_update(&ctx->req), &ctx->wait);

Now crypto_wait does a wait_for_completion if it gets -EINPROGRESS
from the crypto_ahash_update call.

Given hash_sendmsg is called from a socket we can't do a wait_for_completion
here safely.  I note for the various wait calls in the equivalent skcipher code
we drop through with an error if they would otherwise sleep.

I'm guessing that I'm missing something!  As far as I can tell the first
few drivers I looked at caam_hash and crypto4xx do exactly the same thing
I am doing (superficially anyway)...

Anyone have any thoughts?

Thanks,

Jonathan



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux