Linux cryptographic layer development
 help / color / mirror / Atom feed
* Locking for HW crypto accelerators
@ 2018-08-30 12:22 Krzysztof Kozlowski
  2018-08-30 12:56 ` Stephan Mueller
  2018-08-30 13:39 ` Herbert Xu
  0 siblings, 2 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2018-08-30 12:22 UTC (permalink / raw)
  To: Herbert Xu, David S. Miller, linux-crypto, linux-kernel, smueller

Hi,

I am trying to figure out necessary locking on the driver side of
crypto HW accelerator for symmetric hash (actually: CRC). I
implemented quite simple driver for shash_alg.

I looked at the docs, I looked at the crypto kcapi core code... and
there is nothing about necessary locking. kcapi does not perform it.

My HW is quite similar to drivers/crypto/stm32/stm32_crc32.c so it has
only one HW set of registers for dealing with CRC. Or in other words,
only one queue of one element. :) I implemented all shash_alg
callbacks - init(), update(), final()... and also finup() (manually
calling update+final) and digest() (init+update+final).

Now imagine multiple user-space users of this crypto alg where all of
them call kcapi_md_digest() (so essentially init() -> update() ->
final()). It seems that kcapi does not perform any locking here so at
some point updates from different processes might be mixed with
finals:

Process A:             Process B:
init()
                       init()
update()
                       update()
final()
                       final()

My findings show that the requests are indeed being mixed with each other...

Should driver perform any weird locking here? Or maybe that is the
case of using ONLY the digest() callback (so no update, no final)
because my HW cannot track different kcapi requests?

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-08-30 14:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-30 12:22 Locking for HW crypto accelerators Krzysztof Kozlowski
2018-08-30 12:56 ` Stephan Mueller
2018-08-30 13:09   ` Krzysztof Kozlowski
2018-08-30 13:19     ` Stephan Mueller
2018-08-30 13:54       ` Krzysztof Kozlowski
2018-08-30 13:27     ` Kamil Konieczny
2018-08-30 13:59       ` Krzysztof Kozlowski
2018-08-30 13:39 ` Herbert Xu
2018-08-30 14:00   ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox