* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn,
linux-crypto-u79uwXL29TY76Z2rM5mHXA,
linux-doc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
keyrings-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
2017-09-05 11:23 ` Harsh Jain
` (2 preceding siblings ...)
(?)
@ 2017-09-05 12:16 ` Gilad Ben-Yossef
-1 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-05 12:16 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris,
On Tue, Sep 5, 2017 at 2:23 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>>> HI Gilad,
>>>
>>> I think we need an update in ESP also. Now EBUSY return means driver
>>> has accepted, Packet should not be dropped in
>>>
>>> esp_output_tail() function.
>>
>> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>>
>> But I do wonder, the code there now treats -EBUSY as a special case
>> and returns NET_XMIT_DROP
>> but if an AEAD or AHASH transformation return some other error, like
>> -ENOMEM or -EINVAL shouldn't
>> we return NET_XMIT_DROP in that case too?
> I think we should not, XMIT_DROP implies drop current packet only,
> later on when device is recovered from busy state, Upper layer
> protocol(TCP) will re-transmit the packet. It helps in flow control.
>>
I see. Makes sense.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 12:16 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-05 12:16 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, Linux Crypto Mailing List,
linux-doc, Linux kernel mailing list, keyrings, linux-arm-kernel,
linux-mediatek, linux-raid, linux-cifs, samba-technical,
linux-fscrypt, linux-ima-devel, linux-ima-user,
linux-security-module, Ofir Drang
On Tue, Sep 5, 2017 at 2:23 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>>> HI Gilad,
>>>
>>> I think we need an update in ESP also. Now EBUSY return means driver
>>> has accepted, Packet should not be dropped in
>>>
>>> esp_output_tail() function.
>>
>> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>>
>> But I do wonder, the code there now treats -EBUSY as a special case
>> and returns NET_XMIT_DROP
>> but if an AEAD or AHASH transformation return some other error, like
>> -ENOMEM or -EINVAL shouldn't
>> we return NET_XMIT_DROP in that case too?
> I think we should not, XMIT_DROP implies drop current packet only,
> later on when device is recovered from busy state, Upper layer
> protocol(TCP) will re-transmit the packet. It helps in flow control.
>>
I see. Makes sense.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 12:16 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-05 12:16 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge
On Tue, Sep 5, 2017 at 2:23 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>>> HI Gilad,
>>>
>>> I think we need an update in ESP also. Now EBUSY return means driver
>>> has accepted, Packet should not be dropped in
>>>
>>> esp_output_tail() function.
>>
>> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>>
>> But I do wonder, the code there now treats -EBUSY as a special case
>> and returns NET_XMIT_DROP
>> but if an AEAD or AHASH transformation return some other error, like
>> -ENOMEM or -EINVAL shouldn't
>> we return NET_XMIT_DROP in that case too?
> I think we should not, XMIT_DROP implies drop current packet only,
> later on when device is recovered from busy state, Upper layer
> protocol(TCP) will re-transmit the packet. It helps in flow control.
>>
I see. Makes sense.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 12:16 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-05 12:16 UTC (permalink / raw)
To: linux-security-module
On Tue, Sep 5, 2017 at 2:23 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>>> HI Gilad,
>>>
>>> I think we need an update in ESP also. Now EBUSY return means driver
>>> has accepted, Packet should not be dropped in
>>>
>>> esp_output_tail() function.
>>
>> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>>
>> But I do wonder, the code there now treats -EBUSY as a special case
>> and returns NET_XMIT_DROP
>> but if an AEAD or AHASH transformation return some other error, like
>> -ENOMEM or -EINVAL shouldn't
>> we return NET_XMIT_DROP in that case too?
> I think we should not, XMIT_DROP implies drop current packet only,
> later on when device is recovered from busy state, Upper layer
> protocol(TCP) will re-transmit the packet. It helps in flow control.
>>
I see. Makes sense.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 12:16 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-05 12:16 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Sep 5, 2017 at 2:23 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>>> HI Gilad,
>>>
>>> I think we need an update in ESP also. Now EBUSY return means driver
>>> has accepted, Packet should not be dropped in
>>>
>>> esp_output_tail() function.
>>
>> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>>
>> But I do wonder, the code there now treats -EBUSY as a special case
>> and returns NET_XMIT_DROP
>> but if an AEAD or AHASH transformation return some other error, like
>> -ENOMEM or -EINVAL shouldn't
>> we return NET_XMIT_DROP in that case too?
> I think we should not, XMIT_DROP implies drop current packet only,
> later on when device is recovered from busy state, Upper layer
> protocol(TCP) will re-transmit the packet. It helps in flow control.
>>
I see. Makes sense.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
2017-09-03 6:17 ` Gilad Ben-Yossef
` (2 preceding siblings ...)
(?)
@ 2017-09-05 11:23 ` Harsh Jain
-1 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-09-05 11:35 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge
On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>> HI Gilad,
>>
>> I think we need an update in ESP also. Now EBUSY return means driver
>> has accepted, Packet should not be dropped in
>>
>> esp_output_tail() function.
>
> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>
> But I do wonder, the code there now treats -EBUSY as a special case
> and returns NET_XMIT_DROP
> but if an AEAD or AHASH transformation return some other error, like
> -ENOMEM or -EINVAL shouldn't
> we return NET_XMIT_DROP in that case too?
I think we should not, XMIT_DROP implies drop current packet only,
later on when device is recovered from busy state, Upper layer
protocol(TCP) will re-transmit the packet. It helps in flow control.
>
> Any ideas?
>
> Gilad
>
>>
>>
>> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>>> Many users of kernel async. crypto services have a pattern of
>>> starting an async. crypto op and than using a completion
>>> to wait for it to end.
>>>
>>> This patch set simplifies this common use case in two ways:
>>>
>>> First, by separating the return codes of the case where a
>>> request is queued to a backlog due to the provider being
>>> busy (-EBUSY) from the case the request has failed due
>>> to the provider being busy and backlogging is not enabled
>>> (-EAGAIN).
>>>
>>> Next, this change is than built on to create a generic API
>>> to wait for a async. crypto operation to complete.
>>>
>>> The end result is a smaller code base and an API that is
>>> easier to use and more difficult to get wrong.
>>>
>>> The patch set was boot tested on x86_64 and arm64 which
>>> at the very least tests the crypto users via testmgr and
>>> tcrypt but I do note that I do not have access to some
>>> of the HW whose drivers are modified nor do I claim I was
>>> able to test all of the corner cases.
>>>
>>> The patch set is based upon linux-next release tagged
>>> next-20170824.
>>>
>>> Changes from v6:
>>> - Fix brown paper bag compile error on marvell/cesa
>>> code.
>>>
>>> Changes from v5:
>>> - Remove redundant new line as spotted by Jonathan
>>> Cameron.
>>> - Reworded dm-verity change commit message to better
>>> clarify potential issue averted by change as
>>> pointed out by Mikulas Patocka.
>>>
>>> Changes from v4:
>>> - Rebase on top of latest algif changes from Stephan
>>> Mueller.
>>> - Fix typo in ccp patch title.
>>>
>>> Changes from v3:
>>> - Instead of changing the return code to indicate
>>> backlog queueing, change the return code to indicate
>>> transient busy state, as suggested by Herbert Xu.
>>>
>>> Changes from v2:
>>> - Patch title changed from "introduce crypto wait for
>>> async op" to better reflect the current state.
>>> - Rebase on top of latest linux-next.
>>> - Add a new return code of -EIOCBQUEUED for backlog
>>> queueing, as suggested by Herbert Xu.
>>> - Transform more users to the new API.
>>> - Update the drbg change to account for new init as
>>> indicated by Stephan Muller.
>>>
>>> Changes from v1:
>>> - Address review comments from Eric Biggers.
>>> - Separated out bug fixes of existing code and rebase
>>> on top of that patch set.
>>> - Rename 'ecr' to 'wait' in fscrypto code.
>>> - Split patch introducing the new API from the change
>>> moving over the algif code which it originated from
>>> to the new API.
>>> - Inline crypto_wait_req().
>>> - Some code indentation fixes.
>>>
>>> Gilad Ben-Yossef (19):
>>> crypto: change transient busy return code to -EAGAIN
>>> crypto: ccp: use -EAGAIN for transient busy indication
>>> crypto: remove redundant backlog checks on EBUSY
>>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>>> crypto: introduce crypto wait for async op
>>> crypto: move algif to generic async completion
>>> crypto: move pub key to generic async completion
>>> crypto: move drbg to generic async completion
>>> crypto: move gcm to generic async completion
>>> crypto: move testmgr to generic async completion
>>> fscrypt: move to generic async completion
>>> dm: move dm-verity to generic async completion
>>> cifs: move to generic async completion
>>> ima: move to generic async completion
>>> crypto: tcrypt: move to generic async completion
>>> crypto: talitos: move to generic async completion
>>> crypto: qce: move to generic async completion
>>> crypto: mediatek: move to generic async completion
>>> crypto: adapt api sample to use async. op wait
>>>
>>> Documentation/crypto/api-samples.rst | 52 ++-------
>>> crypto/af_alg.c | 27 -----
>>> crypto/ahash.c | 12 +--
>>> crypto/algapi.c | 6 +-
>>> crypto/algif_aead.c | 8 +-
>>> crypto/algif_hash.c | 50 +++++----
>>> crypto/algif_skcipher.c | 9 +-
>>> crypto/api.c | 13 +++
>>> crypto/asymmetric_keys/public_key.c | 28 +----
>>> crypto/cryptd.c | 4 +-
>>> crypto/cts.c | 6 +-
>>> crypto/drbg.c | 36 ++-----
>>> crypto/gcm.c | 32 ++----
>>> crypto/lrw.c | 8 +-
>>> crypto/rsa-pkcs1pad.c | 16 +--
>>> crypto/tcrypt.c | 84 +++++----------
>>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>>> crypto/xts.c | 8 +-
>>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>>> drivers/crypto/marvell/cesa.c | 3 +-
>>> drivers/crypto/marvell/cesa.h | 2 +-
>>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>>> drivers/crypto/qce/sha.c | 30 +-----
>>> drivers/crypto/talitos.c | 38 +------
>>> drivers/md/dm-verity-target.c | 81 ++++----------
>>> drivers/md/dm-verity.h | 5 -
>>> fs/cifs/smb2ops.c | 30 +-----
>>> fs/crypto/crypto.c | 28 +----
>>> fs/crypto/fname.c | 36 ++-----
>>> fs/crypto/fscrypt_private.h | 10 --
>>> fs/crypto/keyinfo.c | 21 +---
>>> include/crypto/drbg.h | 3 +-
>>> include/crypto/if_alg.h | 15 +--
>>> include/linux/crypto.h | 40 +++++++
>>> security/integrity/ima/ima_crypto.c | 56 +++-------
>>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>>
>>> --
>>> 2.1.4
>>>
>
>
>
> --
> Gilad Ben-Yossef
> Chief Coffee Drinker
>
> "If you take a class in large-scale robotics, can you end up in a
> situation where the homework eats your dog?"
> -- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 11:23 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-09-05 11:23 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris,
On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>> HI Gilad,
>>
>> I think we need an update in ESP also. Now EBUSY return means driver
>> has accepted, Packet should not be dropped in
>>
>> esp_output_tail() function.
>
> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>
> But I do wonder, the code there now treats -EBUSY as a special case
> and returns NET_XMIT_DROP
> but if an AEAD or AHASH transformation return some other error, like
> -ENOMEM or -EINVAL shouldn't
> we return NET_XMIT_DROP in that case too?
I think we should not, XMIT_DROP implies drop current packet only,
later on when device is recovered from busy state, Upper layer
protocol(TCP) will re-transmit the packet. It helps in flow control.
>
> Any ideas?
>
> Gilad
>
>>
>>
>> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>>> Many users of kernel async. crypto services have a pattern of
>>> starting an async. crypto op and than using a completion
>>> to wait for it to end.
>>>
>>> This patch set simplifies this common use case in two ways:
>>>
>>> First, by separating the return codes of the case where a
>>> request is queued to a backlog due to the provider being
>>> busy (-EBUSY) from the case the request has failed due
>>> to the provider being busy and backlogging is not enabled
>>> (-EAGAIN).
>>>
>>> Next, this change is than built on to create a generic API
>>> to wait for a async. crypto operation to complete.
>>>
>>> The end result is a smaller code base and an API that is
>>> easier to use and more difficult to get wrong.
>>>
>>> The patch set was boot tested on x86_64 and arm64 which
>>> at the very least tests the crypto users via testmgr and
>>> tcrypt but I do note that I do not have access to some
>>> of the HW whose drivers are modified nor do I claim I was
>>> able to test all of the corner cases.
>>>
>>> The patch set is based upon linux-next release tagged
>>> next-20170824.
>>>
>>> Changes from v6:
>>> - Fix brown paper bag compile error on marvell/cesa
>>> code.
>>>
>>> Changes from v5:
>>> - Remove redundant new line as spotted by Jonathan
>>> Cameron.
>>> - Reworded dm-verity change commit message to better
>>> clarify potential issue averted by change as
>>> pointed out by Mikulas Patocka.
>>>
>>> Changes from v4:
>>> - Rebase on top of latest algif changes from Stephan
>>> Mueller.
>>> - Fix typo in ccp patch title.
>>>
>>> Changes from v3:
>>> - Instead of changing the return code to indicate
>>> backlog queueing, change the return code to indicate
>>> transient busy state, as suggested by Herbert Xu.
>>>
>>> Changes from v2:
>>> - Patch title changed from "introduce crypto wait for
>>> async op" to better reflect the current state.
>>> - Rebase on top of latest linux-next.
>>> - Add a new return code of -EIOCBQUEUED for backlog
>>> queueing, as suggested by Herbert Xu.
>>> - Transform more users to the new API.
>>> - Update the drbg change to account for new init as
>>> indicated by Stephan Muller.
>>>
>>> Changes from v1:
>>> - Address review comments from Eric Biggers.
>>> - Separated out bug fixes of existing code and rebase
>>> on top of that patch set.
>>> - Rename 'ecr' to 'wait' in fscrypto code.
>>> - Split patch introducing the new API from the change
>>> moving over the algif code which it originated from
>>> to the new API.
>>> - Inline crypto_wait_req().
>>> - Some code indentation fixes.
>>>
>>> Gilad Ben-Yossef (19):
>>> crypto: change transient busy return code to -EAGAIN
>>> crypto: ccp: use -EAGAIN for transient busy indication
>>> crypto: remove redundant backlog checks on EBUSY
>>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>>> crypto: introduce crypto wait for async op
>>> crypto: move algif to generic async completion
>>> crypto: move pub key to generic async completion
>>> crypto: move drbg to generic async completion
>>> crypto: move gcm to generic async completion
>>> crypto: move testmgr to generic async completion
>>> fscrypt: move to generic async completion
>>> dm: move dm-verity to generic async completion
>>> cifs: move to generic async completion
>>> ima: move to generic async completion
>>> crypto: tcrypt: move to generic async completion
>>> crypto: talitos: move to generic async completion
>>> crypto: qce: move to generic async completion
>>> crypto: mediatek: move to generic async completion
>>> crypto: adapt api sample to use async. op wait
>>>
>>> Documentation/crypto/api-samples.rst | 52 ++-------
>>> crypto/af_alg.c | 27 -----
>>> crypto/ahash.c | 12 +--
>>> crypto/algapi.c | 6 +-
>>> crypto/algif_aead.c | 8 +-
>>> crypto/algif_hash.c | 50 +++++----
>>> crypto/algif_skcipher.c | 9 +-
>>> crypto/api.c | 13 +++
>>> crypto/asymmetric_keys/public_key.c | 28 +----
>>> crypto/cryptd.c | 4 +-
>>> crypto/cts.c | 6 +-
>>> crypto/drbg.c | 36 ++-----
>>> crypto/gcm.c | 32 ++----
>>> crypto/lrw.c | 8 +-
>>> crypto/rsa-pkcs1pad.c | 16 +--
>>> crypto/tcrypt.c | 84 +++++----------
>>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>>> crypto/xts.c | 8 +-
>>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>>> drivers/crypto/marvell/cesa.c | 3 +-
>>> drivers/crypto/marvell/cesa.h | 2 +-
>>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>>> drivers/crypto/qce/sha.c | 30 +-----
>>> drivers/crypto/talitos.c | 38 +------
>>> drivers/md/dm-verity-target.c | 81 ++++----------
>>> drivers/md/dm-verity.h | 5 -
>>> fs/cifs/smb2ops.c | 30 +-----
>>> fs/crypto/crypto.c | 28 +----
>>> fs/crypto/fname.c | 36 ++-----
>>> fs/crypto/fscrypt_private.h | 10 --
>>> fs/crypto/keyinfo.c | 21 +---
>>> include/crypto/drbg.h | 3 +-
>>> include/crypto/if_alg.h | 15 +--
>>> include/linux/crypto.h | 40 +++++++
>>> security/integrity/ima/ima_crypto.c | 56 +++-------
>>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>>
>>> --
>>> 2.1.4
>>>
>
>
>
> --
> Gilad Ben-Yossef
> Chief Coffee Drinker
>
> "If you take a class in large-scale robotics, can you end up in a
> situation where the homework eats your dog?"
> -- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 11:23 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-09-05 11:23 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, Linux Crypto Mailing List,
linux-doc, Linux kernel mailing list, keyrings, linux-arm-kernel,
linux-mediatek, linux-raid, linux-cifs, samba-technical,
linux-fscrypt, linux-ima-devel, linux-ima-user,
linux-security-module, Ofir Drang
On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>> HI Gilad,
>>
>> I think we need an update in ESP also. Now EBUSY return means driver
>> has accepted, Packet should not be dropped in
>>
>> esp_output_tail() function.
>
> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>
> But I do wonder, the code there now treats -EBUSY as a special case
> and returns NET_XMIT_DROP
> but if an AEAD or AHASH transformation return some other error, like
> -ENOMEM or -EINVAL shouldn't
> we return NET_XMIT_DROP in that case too?
I think we should not, XMIT_DROP implies drop current packet only,
later on when device is recovered from busy state, Upper layer
protocol(TCP) will re-transmit the packet. It helps in flow control.
>
> Any ideas?
>
> Gilad
>
>>
>>
>> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>>> Many users of kernel async. crypto services have a pattern of
>>> starting an async. crypto op and than using a completion
>>> to wait for it to end.
>>>
>>> This patch set simplifies this common use case in two ways:
>>>
>>> First, by separating the return codes of the case where a
>>> request is queued to a backlog due to the provider being
>>> busy (-EBUSY) from the case the request has failed due
>>> to the provider being busy and backlogging is not enabled
>>> (-EAGAIN).
>>>
>>> Next, this change is than built on to create a generic API
>>> to wait for a async. crypto operation to complete.
>>>
>>> The end result is a smaller code base and an API that is
>>> easier to use and more difficult to get wrong.
>>>
>>> The patch set was boot tested on x86_64 and arm64 which
>>> at the very least tests the crypto users via testmgr and
>>> tcrypt but I do note that I do not have access to some
>>> of the HW whose drivers are modified nor do I claim I was
>>> able to test all of the corner cases.
>>>
>>> The patch set is based upon linux-next release tagged
>>> next-20170824.
>>>
>>> Changes from v6:
>>> - Fix brown paper bag compile error on marvell/cesa
>>> code.
>>>
>>> Changes from v5:
>>> - Remove redundant new line as spotted by Jonathan
>>> Cameron.
>>> - Reworded dm-verity change commit message to better
>>> clarify potential issue averted by change as
>>> pointed out by Mikulas Patocka.
>>>
>>> Changes from v4:
>>> - Rebase on top of latest algif changes from Stephan
>>> Mueller.
>>> - Fix typo in ccp patch title.
>>>
>>> Changes from v3:
>>> - Instead of changing the return code to indicate
>>> backlog queueing, change the return code to indicate
>>> transient busy state, as suggested by Herbert Xu.
>>>
>>> Changes from v2:
>>> - Patch title changed from "introduce crypto wait for
>>> async op" to better reflect the current state.
>>> - Rebase on top of latest linux-next.
>>> - Add a new return code of -EIOCBQUEUED for backlog
>>> queueing, as suggested by Herbert Xu.
>>> - Transform more users to the new API.
>>> - Update the drbg change to account for new init as
>>> indicated by Stephan Muller.
>>>
>>> Changes from v1:
>>> - Address review comments from Eric Biggers.
>>> - Separated out bug fixes of existing code and rebase
>>> on top of that patch set.
>>> - Rename 'ecr' to 'wait' in fscrypto code.
>>> - Split patch introducing the new API from the change
>>> moving over the algif code which it originated from
>>> to the new API.
>>> - Inline crypto_wait_req().
>>> - Some code indentation fixes.
>>>
>>> Gilad Ben-Yossef (19):
>>> crypto: change transient busy return code to -EAGAIN
>>> crypto: ccp: use -EAGAIN for transient busy indication
>>> crypto: remove redundant backlog checks on EBUSY
>>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>>> crypto: introduce crypto wait for async op
>>> crypto: move algif to generic async completion
>>> crypto: move pub key to generic async completion
>>> crypto: move drbg to generic async completion
>>> crypto: move gcm to generic async completion
>>> crypto: move testmgr to generic async completion
>>> fscrypt: move to generic async completion
>>> dm: move dm-verity to generic async completion
>>> cifs: move to generic async completion
>>> ima: move to generic async completion
>>> crypto: tcrypt: move to generic async completion
>>> crypto: talitos: move to generic async completion
>>> crypto: qce: move to generic async completion
>>> crypto: mediatek: move to generic async completion
>>> crypto: adapt api sample to use async. op wait
>>>
>>> Documentation/crypto/api-samples.rst | 52 ++-------
>>> crypto/af_alg.c | 27 -----
>>> crypto/ahash.c | 12 +--
>>> crypto/algapi.c | 6 +-
>>> crypto/algif_aead.c | 8 +-
>>> crypto/algif_hash.c | 50 +++++----
>>> crypto/algif_skcipher.c | 9 +-
>>> crypto/api.c | 13 +++
>>> crypto/asymmetric_keys/public_key.c | 28 +----
>>> crypto/cryptd.c | 4 +-
>>> crypto/cts.c | 6 +-
>>> crypto/drbg.c | 36 ++-----
>>> crypto/gcm.c | 32 ++----
>>> crypto/lrw.c | 8 +-
>>> crypto/rsa-pkcs1pad.c | 16 +--
>>> crypto/tcrypt.c | 84 +++++----------
>>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>>> crypto/xts.c | 8 +-
>>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>>> drivers/crypto/marvell/cesa.c | 3 +-
>>> drivers/crypto/marvell/cesa.h | 2 +-
>>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>>> drivers/crypto/qce/sha.c | 30 +-----
>>> drivers/crypto/talitos.c | 38 +------
>>> drivers/md/dm-verity-target.c | 81 ++++----------
>>> drivers/md/dm-verity.h | 5 -
>>> fs/cifs/smb2ops.c | 30 +-----
>>> fs/crypto/crypto.c | 28 +----
>>> fs/crypto/fname.c | 36 ++-----
>>> fs/crypto/fscrypt_private.h | 10 --
>>> fs/crypto/keyinfo.c | 21 +---
>>> include/crypto/drbg.h | 3 +-
>>> include/crypto/if_alg.h | 15 +--
>>> include/linux/crypto.h | 40 +++++++
>>> security/integrity/ima/ima_crypto.c | 56 +++-------
>>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>>
>>> --
>>> 2.1.4
>>>
>
>
>
> --
> Gilad Ben-Yossef
> Chief Coffee Drinker
>
> "If you take a class in large-scale robotics, can you end up in a
> situation where the homework eats your dog?"
> -- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 11:23 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-09-05 11:23 UTC (permalink / raw)
To: linux-security-module
On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>> HI Gilad,
>>
>> I think we need an update in ESP also. Now EBUSY return means driver
>> has accepted, Packet should not be dropped in
>>
>> esp_output_tail() function.
>
> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>
> But I do wonder, the code there now treats -EBUSY as a special case
> and returns NET_XMIT_DROP
> but if an AEAD or AHASH transformation return some other error, like
> -ENOMEM or -EINVAL shouldn't
> we return NET_XMIT_DROP in that case too?
I think we should not, XMIT_DROP implies drop current packet only,
later on when device is recovered from busy state, Upper layer
protocol(TCP) will re-transmit the packet. It helps in flow control.
>
> Any ideas?
>
> Gilad
>
>>
>>
>> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>>> Many users of kernel async. crypto services have a pattern of
>>> starting an async. crypto op and than using a completion
>>> to wait for it to end.
>>>
>>> This patch set simplifies this common use case in two ways:
>>>
>>> First, by separating the return codes of the case where a
>>> request is queued to a backlog due to the provider being
>>> busy (-EBUSY) from the case the request has failed due
>>> to the provider being busy and backlogging is not enabled
>>> (-EAGAIN).
>>>
>>> Next, this change is than built on to create a generic API
>>> to wait for a async. crypto operation to complete.
>>>
>>> The end result is a smaller code base and an API that is
>>> easier to use and more difficult to get wrong.
>>>
>>> The patch set was boot tested on x86_64 and arm64 which
>>> at the very least tests the crypto users via testmgr and
>>> tcrypt but I do note that I do not have access to some
>>> of the HW whose drivers are modified nor do I claim I was
>>> able to test all of the corner cases.
>>>
>>> The patch set is based upon linux-next release tagged
>>> next-20170824.
>>>
>>> Changes from v6:
>>> - Fix brown paper bag compile error on marvell/cesa
>>> code.
>>>
>>> Changes from v5:
>>> - Remove redundant new line as spotted by Jonathan
>>> Cameron.
>>> - Reworded dm-verity change commit message to better
>>> clarify potential issue averted by change as
>>> pointed out by Mikulas Patocka.
>>>
>>> Changes from v4:
>>> - Rebase on top of latest algif changes from Stephan
>>> Mueller.
>>> - Fix typo in ccp patch title.
>>>
>>> Changes from v3:
>>> - Instead of changing the return code to indicate
>>> backlog queueing, change the return code to indicate
>>> transient busy state, as suggested by Herbert Xu.
>>>
>>> Changes from v2:
>>> - Patch title changed from "introduce crypto wait for
>>> async op" to better reflect the current state.
>>> - Rebase on top of latest linux-next.
>>> - Add a new return code of -EIOCBQUEUED for backlog
>>> queueing, as suggested by Herbert Xu.
>>> - Transform more users to the new API.
>>> - Update the drbg change to account for new init as
>>> indicated by Stephan Muller.
>>>
>>> Changes from v1:
>>> - Address review comments from Eric Biggers.
>>> - Separated out bug fixes of existing code and rebase
>>> on top of that patch set.
>>> - Rename 'ecr' to 'wait' in fscrypto code.
>>> - Split patch introducing the new API from the change
>>> moving over the algif code which it originated from
>>> to the new API.
>>> - Inline crypto_wait_req().
>>> - Some code indentation fixes.
>>>
>>> Gilad Ben-Yossef (19):
>>> crypto: change transient busy return code to -EAGAIN
>>> crypto: ccp: use -EAGAIN for transient busy indication
>>> crypto: remove redundant backlog checks on EBUSY
>>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>>> crypto: introduce crypto wait for async op
>>> crypto: move algif to generic async completion
>>> crypto: move pub key to generic async completion
>>> crypto: move drbg to generic async completion
>>> crypto: move gcm to generic async completion
>>> crypto: move testmgr to generic async completion
>>> fscrypt: move to generic async completion
>>> dm: move dm-verity to generic async completion
>>> cifs: move to generic async completion
>>> ima: move to generic async completion
>>> crypto: tcrypt: move to generic async completion
>>> crypto: talitos: move to generic async completion
>>> crypto: qce: move to generic async completion
>>> crypto: mediatek: move to generic async completion
>>> crypto: adapt api sample to use async. op wait
>>>
>>> Documentation/crypto/api-samples.rst | 52 ++-------
>>> crypto/af_alg.c | 27 -----
>>> crypto/ahash.c | 12 +--
>>> crypto/algapi.c | 6 +-
>>> crypto/algif_aead.c | 8 +-
>>> crypto/algif_hash.c | 50 +++++----
>>> crypto/algif_skcipher.c | 9 +-
>>> crypto/api.c | 13 +++
>>> crypto/asymmetric_keys/public_key.c | 28 +----
>>> crypto/cryptd.c | 4 +-
>>> crypto/cts.c | 6 +-
>>> crypto/drbg.c | 36 ++-----
>>> crypto/gcm.c | 32 ++----
>>> crypto/lrw.c | 8 +-
>>> crypto/rsa-pkcs1pad.c | 16 +--
>>> crypto/tcrypt.c | 84 +++++----------
>>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>>> crypto/xts.c | 8 +-
>>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>>> drivers/crypto/marvell/cesa.c | 3 +-
>>> drivers/crypto/marvell/cesa.h | 2 +-
>>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>>> drivers/crypto/qce/sha.c | 30 +-----
>>> drivers/crypto/talitos.c | 38 +------
>>> drivers/md/dm-verity-target.c | 81 ++++----------
>>> drivers/md/dm-verity.h | 5 -
>>> fs/cifs/smb2ops.c | 30 +-----
>>> fs/crypto/crypto.c | 28 +----
>>> fs/crypto/fname.c | 36 ++-----
>>> fs/crypto/fscrypt_private.h | 10 --
>>> fs/crypto/keyinfo.c | 21 +---
>>> include/crypto/drbg.h | 3 +-
>>> include/crypto/if_alg.h | 15 +--
>>> include/linux/crypto.h | 40 +++++++
>>> security/integrity/ima/ima_crypto.c | 56 +++-------
>>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>>
>>> --
>>> 2.1.4
>>>
>
>
>
> --
> Gilad Ben-Yossef
> Chief Coffee Drinker
>
> "If you take a class in large-scale robotics, can you end up in a
> situation where the homework eats your dog?"
> -- Jean-Baptiste Queru
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-05 11:23 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-09-05 11:23 UTC (permalink / raw)
To: linux-arm-kernel
On Sun, Sep 3, 2017 at 11:47 AM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
>> HI Gilad,
>>
>> I think we need an update in ESP also. Now EBUSY return means driver
>> has accepted, Packet should not be dropped in
>>
>> esp_output_tail() function.
>
> Good catch. You are right and the same holds true for ah_output() in ah4.c.
>
> But I do wonder, the code there now treats -EBUSY as a special case
> and returns NET_XMIT_DROP
> but if an AEAD or AHASH transformation return some other error, like
> -ENOMEM or -EINVAL shouldn't
> we return NET_XMIT_DROP in that case too?
I think we should not, XMIT_DROP implies drop current packet only,
later on when device is recovered from busy state, Upper layer
protocol(TCP) will re-transmit the packet. It helps in flow control.
>
> Any ideas?
>
> Gilad
>
>>
>>
>> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>>> Many users of kernel async. crypto services have a pattern of
>>> starting an async. crypto op and than using a completion
>>> to wait for it to end.
>>>
>>> This patch set simplifies this common use case in two ways:
>>>
>>> First, by separating the return codes of the case where a
>>> request is queued to a backlog due to the provider being
>>> busy (-EBUSY) from the case the request has failed due
>>> to the provider being busy and backlogging is not enabled
>>> (-EAGAIN).
>>>
>>> Next, this change is than built on to create a generic API
>>> to wait for a async. crypto operation to complete.
>>>
>>> The end result is a smaller code base and an API that is
>>> easier to use and more difficult to get wrong.
>>>
>>> The patch set was boot tested on x86_64 and arm64 which
>>> at the very least tests the crypto users via testmgr and
>>> tcrypt but I do note that I do not have access to some
>>> of the HW whose drivers are modified nor do I claim I was
>>> able to test all of the corner cases.
>>>
>>> The patch set is based upon linux-next release tagged
>>> next-20170824.
>>>
>>> Changes from v6:
>>> - Fix brown paper bag compile error on marvell/cesa
>>> code.
>>>
>>> Changes from v5:
>>> - Remove redundant new line as spotted by Jonathan
>>> Cameron.
>>> - Reworded dm-verity change commit message to better
>>> clarify potential issue averted by change as
>>> pointed out by Mikulas Patocka.
>>>
>>> Changes from v4:
>>> - Rebase on top of latest algif changes from Stephan
>>> Mueller.
>>> - Fix typo in ccp patch title.
>>>
>>> Changes from v3:
>>> - Instead of changing the return code to indicate
>>> backlog queueing, change the return code to indicate
>>> transient busy state, as suggested by Herbert Xu.
>>>
>>> Changes from v2:
>>> - Patch title changed from "introduce crypto wait for
>>> async op" to better reflect the current state.
>>> - Rebase on top of latest linux-next.
>>> - Add a new return code of -EIOCBQUEUED for backlog
>>> queueing, as suggested by Herbert Xu.
>>> - Transform more users to the new API.
>>> - Update the drbg change to account for new init as
>>> indicated by Stephan Muller.
>>>
>>> Changes from v1:
>>> - Address review comments from Eric Biggers.
>>> - Separated out bug fixes of existing code and rebase
>>> on top of that patch set.
>>> - Rename 'ecr' to 'wait' in fscrypto code.
>>> - Split patch introducing the new API from the change
>>> moving over the algif code which it originated from
>>> to the new API.
>>> - Inline crypto_wait_req().
>>> - Some code indentation fixes.
>>>
>>> Gilad Ben-Yossef (19):
>>> crypto: change transient busy return code to -EAGAIN
>>> crypto: ccp: use -EAGAIN for transient busy indication
>>> crypto: remove redundant backlog checks on EBUSY
>>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>>> crypto: introduce crypto wait for async op
>>> crypto: move algif to generic async completion
>>> crypto: move pub key to generic async completion
>>> crypto: move drbg to generic async completion
>>> crypto: move gcm to generic async completion
>>> crypto: move testmgr to generic async completion
>>> fscrypt: move to generic async completion
>>> dm: move dm-verity to generic async completion
>>> cifs: move to generic async completion
>>> ima: move to generic async completion
>>> crypto: tcrypt: move to generic async completion
>>> crypto: talitos: move to generic async completion
>>> crypto: qce: move to generic async completion
>>> crypto: mediatek: move to generic async completion
>>> crypto: adapt api sample to use async. op wait
>>>
>>> Documentation/crypto/api-samples.rst | 52 ++-------
>>> crypto/af_alg.c | 27 -----
>>> crypto/ahash.c | 12 +--
>>> crypto/algapi.c | 6 +-
>>> crypto/algif_aead.c | 8 +-
>>> crypto/algif_hash.c | 50 +++++----
>>> crypto/algif_skcipher.c | 9 +-
>>> crypto/api.c | 13 +++
>>> crypto/asymmetric_keys/public_key.c | 28 +----
>>> crypto/cryptd.c | 4 +-
>>> crypto/cts.c | 6 +-
>>> crypto/drbg.c | 36 ++-----
>>> crypto/gcm.c | 32 ++----
>>> crypto/lrw.c | 8 +-
>>> crypto/rsa-pkcs1pad.c | 16 +--
>>> crypto/tcrypt.c | 84 +++++----------
>>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>>> crypto/xts.c | 8 +-
>>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>>> drivers/crypto/marvell/cesa.c | 3 +-
>>> drivers/crypto/marvell/cesa.h | 2 +-
>>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>>> drivers/crypto/qce/sha.c | 30 +-----
>>> drivers/crypto/talitos.c | 38 +------
>>> drivers/md/dm-verity-target.c | 81 ++++----------
>>> drivers/md/dm-verity.h | 5 -
>>> fs/cifs/smb2ops.c | 30 +-----
>>> fs/crypto/crypto.c | 28 +----
>>> fs/crypto/fname.c | 36 ++-----
>>> fs/crypto/fscrypt_private.h | 10 --
>>> fs/crypto/keyinfo.c | 21 +---
>>> include/crypto/drbg.h | 3 +-
>>> include/crypto/if_alg.h | 15 +--
>>> include/linux/crypto.h | 40 +++++++
>>> security/integrity/ima/ima_crypto.c | 56 +++-------
>>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>>
>>> --
>>> 2.1.4
>>>
>
>
>
> --
> Gilad Ben-Yossef
> Chief Coffee Drinker
>
> "If you take a class in large-scale robotics, can you end up in a
> situation where the homework eats your dog?"
> -- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
2017-08-31 12:31 ` Harsh Jain
` (2 preceding siblings ...)
(?)
@ 2017-09-03 6:17 ` Gilad Ben-Yossef
-1 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:17 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris,
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case
and returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org> wrote:
>> Many users of kernel async. crypto services have a pattern of
>> starting an async. crypto op and than using a completion
>> to wait for it to end.
>>
>> This patch set simplifies this common use case in two ways:
>>
>> First, by separating the return codes of the case where a
>> request is queued to a backlog due to the provider being
>> busy (-EBUSY) from the case the request has failed due
>> to the provider being busy and backlogging is not enabled
>> (-EAGAIN).
>>
>> Next, this change is than built on to create a generic API
>> to wait for a async. crypto operation to complete.
>>
>> The end result is a smaller code base and an API that is
>> easier to use and more difficult to get wrong.
>>
>> The patch set was boot tested on x86_64 and arm64 which
>> at the very least tests the crypto users via testmgr and
>> tcrypt but I do note that I do not have access to some
>> of the HW whose drivers are modified nor do I claim I was
>> able to test all of the corner cases.
>>
>> The patch set is based upon linux-next release tagged
>> next-20170824.
>>
>> Changes from v6:
>> - Fix brown paper bag compile error on marvell/cesa
>> code.
>>
>> Changes from v5:
>> - Remove redundant new line as spotted by Jonathan
>> Cameron.
>> - Reworded dm-verity change commit message to better
>> clarify potential issue averted by change as
>> pointed out by Mikulas Patocka.
>>
>> Changes from v4:
>> - Rebase on top of latest algif changes from Stephan
>> Mueller.
>> - Fix typo in ccp patch title.
>>
>> Changes from v3:
>> - Instead of changing the return code to indicate
>> backlog queueing, change the return code to indicate
>> transient busy state, as suggested by Herbert Xu.
>>
>> Changes from v2:
>> - Patch title changed from "introduce crypto wait for
>> async op" to better reflect the current state.
>> - Rebase on top of latest linux-next.
>> - Add a new return code of -EIOCBQUEUED for backlog
>> queueing, as suggested by Herbert Xu.
>> - Transform more users to the new API.
>> - Update the drbg change to account for new init as
>> indicated by Stephan Muller.
>>
>> Changes from v1:
>> - Address review comments from Eric Biggers.
>> - Separated out bug fixes of existing code and rebase
>> on top of that patch set.
>> - Rename 'ecr' to 'wait' in fscrypto code.
>> - Split patch introducing the new API from the change
>> moving over the algif code which it originated from
>> to the new API.
>> - Inline crypto_wait_req().
>> - Some code indentation fixes.
>>
>> Gilad Ben-Yossef (19):
>> crypto: change transient busy return code to -EAGAIN
>> crypto: ccp: use -EAGAIN for transient busy indication
>> crypto: remove redundant backlog checks on EBUSY
>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>> crypto: introduce crypto wait for async op
>> crypto: move algif to generic async completion
>> crypto: move pub key to generic async completion
>> crypto: move drbg to generic async completion
>> crypto: move gcm to generic async completion
>> crypto: move testmgr to generic async completion
>> fscrypt: move to generic async completion
>> dm: move dm-verity to generic async completion
>> cifs: move to generic async completion
>> ima: move to generic async completion
>> crypto: tcrypt: move to generic async completion
>> crypto: talitos: move to generic async completion
>> crypto: qce: move to generic async completion
>> crypto: mediatek: move to generic async completion
>> crypto: adapt api sample to use async. op wait
>>
>> Documentation/crypto/api-samples.rst | 52 ++-------
>> crypto/af_alg.c | 27 -----
>> crypto/ahash.c | 12 +--
>> crypto/algapi.c | 6 +-
>> crypto/algif_aead.c | 8 +-
>> crypto/algif_hash.c | 50 +++++----
>> crypto/algif_skcipher.c | 9 +-
>> crypto/api.c | 13 +++
>> crypto/asymmetric_keys/public_key.c | 28 +----
>> crypto/cryptd.c | 4 +-
>> crypto/cts.c | 6 +-
>> crypto/drbg.c | 36 ++-----
>> crypto/gcm.c | 32 ++----
>> crypto/lrw.c | 8 +-
>> crypto/rsa-pkcs1pad.c | 16 +--
>> crypto/tcrypt.c | 84 +++++----------
>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>> crypto/xts.c | 8 +-
>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>> drivers/crypto/marvell/cesa.c | 3 +-
>> drivers/crypto/marvell/cesa.h | 2 +-
>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>> drivers/crypto/qce/sha.c | 30 +-----
>> drivers/crypto/talitos.c | 38 +------
>> drivers/md/dm-verity-target.c | 81 ++++----------
>> drivers/md/dm-verity.h | 5 -
>> fs/cifs/smb2ops.c | 30 +-----
>> fs/crypto/crypto.c | 28 +----
>> fs/crypto/fname.c | 36 ++-----
>> fs/crypto/fscrypt_private.h | 10 --
>> fs/crypto/keyinfo.c | 21 +---
>> include/crypto/drbg.h | 3 +-
>> include/crypto/if_alg.h | 15 +--
>> include/linux/crypto.h | 40 +++++++
>> security/integrity/ima/ima_crypto.c | 56 +++-------
>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>
>> --
>> 2.1.4
>>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-03 6:17 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:17 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, Linux Crypto Mailing List,
linux-doc, Linux kernel mailing list, keyrings, linux-arm-kernel,
linux-mediatek, linux-raid, linux-cifs, samba-technical,
linux-fscrypt, linux-ima-devel, linux-ima-user,
linux-security-module, Ofir Drang
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case
and returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> Many users of kernel async. crypto services have a pattern of
>> starting an async. crypto op and than using a completion
>> to wait for it to end.
>>
>> This patch set simplifies this common use case in two ways:
>>
>> First, by separating the return codes of the case where a
>> request is queued to a backlog due to the provider being
>> busy (-EBUSY) from the case the request has failed due
>> to the provider being busy and backlogging is not enabled
>> (-EAGAIN).
>>
>> Next, this change is than built on to create a generic API
>> to wait for a async. crypto operation to complete.
>>
>> The end result is a smaller code base and an API that is
>> easier to use and more difficult to get wrong.
>>
>> The patch set was boot tested on x86_64 and arm64 which
>> at the very least tests the crypto users via testmgr and
>> tcrypt but I do note that I do not have access to some
>> of the HW whose drivers are modified nor do I claim I was
>> able to test all of the corner cases.
>>
>> The patch set is based upon linux-next release tagged
>> next-20170824.
>>
>> Changes from v6:
>> - Fix brown paper bag compile error on marvell/cesa
>> code.
>>
>> Changes from v5:
>> - Remove redundant new line as spotted by Jonathan
>> Cameron.
>> - Reworded dm-verity change commit message to better
>> clarify potential issue averted by change as
>> pointed out by Mikulas Patocka.
>>
>> Changes from v4:
>> - Rebase on top of latest algif changes from Stephan
>> Mueller.
>> - Fix typo in ccp patch title.
>>
>> Changes from v3:
>> - Instead of changing the return code to indicate
>> backlog queueing, change the return code to indicate
>> transient busy state, as suggested by Herbert Xu.
>>
>> Changes from v2:
>> - Patch title changed from "introduce crypto wait for
>> async op" to better reflect the current state.
>> - Rebase on top of latest linux-next.
>> - Add a new return code of -EIOCBQUEUED for backlog
>> queueing, as suggested by Herbert Xu.
>> - Transform more users to the new API.
>> - Update the drbg change to account for new init as
>> indicated by Stephan Muller.
>>
>> Changes from v1:
>> - Address review comments from Eric Biggers.
>> - Separated out bug fixes of existing code and rebase
>> on top of that patch set.
>> - Rename 'ecr' to 'wait' in fscrypto code.
>> - Split patch introducing the new API from the change
>> moving over the algif code which it originated from
>> to the new API.
>> - Inline crypto_wait_req().
>> - Some code indentation fixes.
>>
>> Gilad Ben-Yossef (19):
>> crypto: change transient busy return code to -EAGAIN
>> crypto: ccp: use -EAGAIN for transient busy indication
>> crypto: remove redundant backlog checks on EBUSY
>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>> crypto: introduce crypto wait for async op
>> crypto: move algif to generic async completion
>> crypto: move pub key to generic async completion
>> crypto: move drbg to generic async completion
>> crypto: move gcm to generic async completion
>> crypto: move testmgr to generic async completion
>> fscrypt: move to generic async completion
>> dm: move dm-verity to generic async completion
>> cifs: move to generic async completion
>> ima: move to generic async completion
>> crypto: tcrypt: move to generic async completion
>> crypto: talitos: move to generic async completion
>> crypto: qce: move to generic async completion
>> crypto: mediatek: move to generic async completion
>> crypto: adapt api sample to use async. op wait
>>
>> Documentation/crypto/api-samples.rst | 52 ++-------
>> crypto/af_alg.c | 27 -----
>> crypto/ahash.c | 12 +--
>> crypto/algapi.c | 6 +-
>> crypto/algif_aead.c | 8 +-
>> crypto/algif_hash.c | 50 +++++----
>> crypto/algif_skcipher.c | 9 +-
>> crypto/api.c | 13 +++
>> crypto/asymmetric_keys/public_key.c | 28 +----
>> crypto/cryptd.c | 4 +-
>> crypto/cts.c | 6 +-
>> crypto/drbg.c | 36 ++-----
>> crypto/gcm.c | 32 ++----
>> crypto/lrw.c | 8 +-
>> crypto/rsa-pkcs1pad.c | 16 +--
>> crypto/tcrypt.c | 84 +++++----------
>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>> crypto/xts.c | 8 +-
>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>> drivers/crypto/marvell/cesa.c | 3 +-
>> drivers/crypto/marvell/cesa.h | 2 +-
>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>> drivers/crypto/qce/sha.c | 30 +-----
>> drivers/crypto/talitos.c | 38 +------
>> drivers/md/dm-verity-target.c | 81 ++++----------
>> drivers/md/dm-verity.h | 5 -
>> fs/cifs/smb2ops.c | 30 +-----
>> fs/crypto/crypto.c | 28 +----
>> fs/crypto/fname.c | 36 ++-----
>> fs/crypto/fscrypt_private.h | 10 --
>> fs/crypto/keyinfo.c | 21 +---
>> include/crypto/drbg.h | 3 +-
>> include/crypto/if_alg.h | 15 +--
>> include/linux/crypto.h | 40 +++++++
>> security/integrity/ima/ima_crypto.c | 56 +++-------
>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>
>> --
>> 2.1.4
>>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-03 6:17 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:17 UTC (permalink / raw)
To: Harsh Jain
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
device-mapper development, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case
and returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> Many users of kernel async. crypto services have a pattern of
>> starting an async. crypto op and than using a completion
>> to wait for it to end.
>>
>> This patch set simplifies this common use case in two ways:
>>
>> First, by separating the return codes of the case where a
>> request is queued to a backlog due to the provider being
>> busy (-EBUSY) from the case the request has failed due
>> to the provider being busy and backlogging is not enabled
>> (-EAGAIN).
>>
>> Next, this change is than built on to create a generic API
>> to wait for a async. crypto operation to complete.
>>
>> The end result is a smaller code base and an API that is
>> easier to use and more difficult to get wrong.
>>
>> The patch set was boot tested on x86_64 and arm64 which
>> at the very least tests the crypto users via testmgr and
>> tcrypt but I do note that I do not have access to some
>> of the HW whose drivers are modified nor do I claim I was
>> able to test all of the corner cases.
>>
>> The patch set is based upon linux-next release tagged
>> next-20170824.
>>
>> Changes from v6:
>> - Fix brown paper bag compile error on marvell/cesa
>> code.
>>
>> Changes from v5:
>> - Remove redundant new line as spotted by Jonathan
>> Cameron.
>> - Reworded dm-verity change commit message to better
>> clarify potential issue averted by change as
>> pointed out by Mikulas Patocka.
>>
>> Changes from v4:
>> - Rebase on top of latest algif changes from Stephan
>> Mueller.
>> - Fix typo in ccp patch title.
>>
>> Changes from v3:
>> - Instead of changing the return code to indicate
>> backlog queueing, change the return code to indicate
>> transient busy state, as suggested by Herbert Xu.
>>
>> Changes from v2:
>> - Patch title changed from "introduce crypto wait for
>> async op" to better reflect the current state.
>> - Rebase on top of latest linux-next.
>> - Add a new return code of -EIOCBQUEUED for backlog
>> queueing, as suggested by Herbert Xu.
>> - Transform more users to the new API.
>> - Update the drbg change to account for new init as
>> indicated by Stephan Muller.
>>
>> Changes from v1:
>> - Address review comments from Eric Biggers.
>> - Separated out bug fixes of existing code and rebase
>> on top of that patch set.
>> - Rename 'ecr' to 'wait' in fscrypto code.
>> - Split patch introducing the new API from the change
>> moving over the algif code which it originated from
>> to the new API.
>> - Inline crypto_wait_req().
>> - Some code indentation fixes.
>>
>> Gilad Ben-Yossef (19):
>> crypto: change transient busy return code to -EAGAIN
>> crypto: ccp: use -EAGAIN for transient busy indication
>> crypto: remove redundant backlog checks on EBUSY
>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>> crypto: introduce crypto wait for async op
>> crypto: move algif to generic async completion
>> crypto: move pub key to generic async completion
>> crypto: move drbg to generic async completion
>> crypto: move gcm to generic async completion
>> crypto: move testmgr to generic async completion
>> fscrypt: move to generic async completion
>> dm: move dm-verity to generic async completion
>> cifs: move to generic async completion
>> ima: move to generic async completion
>> crypto: tcrypt: move to generic async completion
>> crypto: talitos: move to generic async completion
>> crypto: qce: move to generic async completion
>> crypto: mediatek: move to generic async completion
>> crypto: adapt api sample to use async. op wait
>>
>> Documentation/crypto/api-samples.rst | 52 ++-------
>> crypto/af_alg.c | 27 -----
>> crypto/ahash.c | 12 +--
>> crypto/algapi.c | 6 +-
>> crypto/algif_aead.c | 8 +-
>> crypto/algif_hash.c | 50 +++++----
>> crypto/algif_skcipher.c | 9 +-
>> crypto/api.c | 13 +++
>> crypto/asymmetric_keys/public_key.c | 28 +----
>> crypto/cryptd.c | 4 +-
>> crypto/cts.c | 6 +-
>> crypto/drbg.c | 36 ++-----
>> crypto/gcm.c | 32 ++----
>> crypto/lrw.c | 8 +-
>> crypto/rsa-pkcs1pad.c | 16 +--
>> crypto/tcrypt.c | 84 +++++----------
>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>> crypto/xts.c | 8 +-
>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>> drivers/crypto/marvell/cesa.c | 3 +-
>> drivers/crypto/marvell/cesa.h | 2 +-
>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>> drivers/crypto/qce/sha.c | 30 +-----
>> drivers/crypto/talitos.c | 38 +------
>> drivers/md/dm-verity-target.c | 81 ++++----------
>> drivers/md/dm-verity.h | 5 -
>> fs/cifs/smb2ops.c | 30 +-----
>> fs/crypto/crypto.c | 28 +----
>> fs/crypto/fname.c | 36 ++-----
>> fs/crypto/fscrypt_private.h | 10 --
>> fs/crypto/keyinfo.c | 21 +---
>> include/crypto/drbg.h | 3 +-
>> include/crypto/if_alg.h | 15 +--
>> include/linux/crypto.h | 40 +++++++
>> security/integrity/ima/ima_crypto.c | 56 +++-------
>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>
>> --
>> 2.1.4
>>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-03 6:17 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:17 UTC (permalink / raw)
To: linux-security-module
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case
and returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> Many users of kernel async. crypto services have a pattern of
>> starting an async. crypto op and than using a completion
>> to wait for it to end.
>>
>> This patch set simplifies this common use case in two ways:
>>
>> First, by separating the return codes of the case where a
>> request is queued to a backlog due to the provider being
>> busy (-EBUSY) from the case the request has failed due
>> to the provider being busy and backlogging is not enabled
>> (-EAGAIN).
>>
>> Next, this change is than built on to create a generic API
>> to wait for a async. crypto operation to complete.
>>
>> The end result is a smaller code base and an API that is
>> easier to use and more difficult to get wrong.
>>
>> The patch set was boot tested on x86_64 and arm64 which
>> at the very least tests the crypto users via testmgr and
>> tcrypt but I do note that I do not have access to some
>> of the HW whose drivers are modified nor do I claim I was
>> able to test all of the corner cases.
>>
>> The patch set is based upon linux-next release tagged
>> next-20170824.
>>
>> Changes from v6:
>> - Fix brown paper bag compile error on marvell/cesa
>> code.
>>
>> Changes from v5:
>> - Remove redundant new line as spotted by Jonathan
>> Cameron.
>> - Reworded dm-verity change commit message to better
>> clarify potential issue averted by change as
>> pointed out by Mikulas Patocka.
>>
>> Changes from v4:
>> - Rebase on top of latest algif changes from Stephan
>> Mueller.
>> - Fix typo in ccp patch title.
>>
>> Changes from v3:
>> - Instead of changing the return code to indicate
>> backlog queueing, change the return code to indicate
>> transient busy state, as suggested by Herbert Xu.
>>
>> Changes from v2:
>> - Patch title changed from "introduce crypto wait for
>> async op" to better reflect the current state.
>> - Rebase on top of latest linux-next.
>> - Add a new return code of -EIOCBQUEUED for backlog
>> queueing, as suggested by Herbert Xu.
>> - Transform more users to the new API.
>> - Update the drbg change to account for new init as
>> indicated by Stephan Muller.
>>
>> Changes from v1:
>> - Address review comments from Eric Biggers.
>> - Separated out bug fixes of existing code and rebase
>> on top of that patch set.
>> - Rename 'ecr' to 'wait' in fscrypto code.
>> - Split patch introducing the new API from the change
>> moving over the algif code which it originated from
>> to the new API.
>> - Inline crypto_wait_req().
>> - Some code indentation fixes.
>>
>> Gilad Ben-Yossef (19):
>> crypto: change transient busy return code to -EAGAIN
>> crypto: ccp: use -EAGAIN for transient busy indication
>> crypto: remove redundant backlog checks on EBUSY
>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>> crypto: introduce crypto wait for async op
>> crypto: move algif to generic async completion
>> crypto: move pub key to generic async completion
>> crypto: move drbg to generic async completion
>> crypto: move gcm to generic async completion
>> crypto: move testmgr to generic async completion
>> fscrypt: move to generic async completion
>> dm: move dm-verity to generic async completion
>> cifs: move to generic async completion
>> ima: move to generic async completion
>> crypto: tcrypt: move to generic async completion
>> crypto: talitos: move to generic async completion
>> crypto: qce: move to generic async completion
>> crypto: mediatek: move to generic async completion
>> crypto: adapt api sample to use async. op wait
>>
>> Documentation/crypto/api-samples.rst | 52 ++-------
>> crypto/af_alg.c | 27 -----
>> crypto/ahash.c | 12 +--
>> crypto/algapi.c | 6 +-
>> crypto/algif_aead.c | 8 +-
>> crypto/algif_hash.c | 50 +++++----
>> crypto/algif_skcipher.c | 9 +-
>> crypto/api.c | 13 +++
>> crypto/asymmetric_keys/public_key.c | 28 +----
>> crypto/cryptd.c | 4 +-
>> crypto/cts.c | 6 +-
>> crypto/drbg.c | 36 ++-----
>> crypto/gcm.c | 32 ++----
>> crypto/lrw.c | 8 +-
>> crypto/rsa-pkcs1pad.c | 16 +--
>> crypto/tcrypt.c | 84 +++++----------
>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>> crypto/xts.c | 8 +-
>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>> drivers/crypto/marvell/cesa.c | 3 +-
>> drivers/crypto/marvell/cesa.h | 2 +-
>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>> drivers/crypto/qce/sha.c | 30 +-----
>> drivers/crypto/talitos.c | 38 +------
>> drivers/md/dm-verity-target.c | 81 ++++----------
>> drivers/md/dm-verity.h | 5 -
>> fs/cifs/smb2ops.c | 30 +-----
>> fs/crypto/crypto.c | 28 +----
>> fs/crypto/fname.c | 36 ++-----
>> fs/crypto/fscrypt_private.h | 10 --
>> fs/crypto/keyinfo.c | 21 +---
>> include/crypto/drbg.h | 3 +-
>> include/crypto/if_alg.h | 15 +--
>> include/linux/crypto.h | 40 +++++++
>> security/integrity/ima/ima_crypto.c | 56 +++-------
>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>
>> --
>> 2.1.4
>>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-09-03 6:17 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:17 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com> wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case
and returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
>> Many users of kernel async. crypto services have a pattern of
>> starting an async. crypto op and than using a completion
>> to wait for it to end.
>>
>> This patch set simplifies this common use case in two ways:
>>
>> First, by separating the return codes of the case where a
>> request is queued to a backlog due to the provider being
>> busy (-EBUSY) from the case the request has failed due
>> to the provider being busy and backlogging is not enabled
>> (-EAGAIN).
>>
>> Next, this change is than built on to create a generic API
>> to wait for a async. crypto operation to complete.
>>
>> The end result is a smaller code base and an API that is
>> easier to use and more difficult to get wrong.
>>
>> The patch set was boot tested on x86_64 and arm64 which
>> at the very least tests the crypto users via testmgr and
>> tcrypt but I do note that I do not have access to some
>> of the HW whose drivers are modified nor do I claim I was
>> able to test all of the corner cases.
>>
>> The patch set is based upon linux-next release tagged
>> next-20170824.
>>
>> Changes from v6:
>> - Fix brown paper bag compile error on marvell/cesa
>> code.
>>
>> Changes from v5:
>> - Remove redundant new line as spotted by Jonathan
>> Cameron.
>> - Reworded dm-verity change commit message to better
>> clarify potential issue averted by change as
>> pointed out by Mikulas Patocka.
>>
>> Changes from v4:
>> - Rebase on top of latest algif changes from Stephan
>> Mueller.
>> - Fix typo in ccp patch title.
>>
>> Changes from v3:
>> - Instead of changing the return code to indicate
>> backlog queueing, change the return code to indicate
>> transient busy state, as suggested by Herbert Xu.
>>
>> Changes from v2:
>> - Patch title changed from "introduce crypto wait for
>> async op" to better reflect the current state.
>> - Rebase on top of latest linux-next.
>> - Add a new return code of -EIOCBQUEUED for backlog
>> queueing, as suggested by Herbert Xu.
>> - Transform more users to the new API.
>> - Update the drbg change to account for new init as
>> indicated by Stephan Muller.
>>
>> Changes from v1:
>> - Address review comments from Eric Biggers.
>> - Separated out bug fixes of existing code and rebase
>> on top of that patch set.
>> - Rename 'ecr' to 'wait' in fscrypto code.
>> - Split patch introducing the new API from the change
>> moving over the algif code which it originated from
>> to the new API.
>> - Inline crypto_wait_req().
>> - Some code indentation fixes.
>>
>> Gilad Ben-Yossef (19):
>> crypto: change transient busy return code to -EAGAIN
>> crypto: ccp: use -EAGAIN for transient busy indication
>> crypto: remove redundant backlog checks on EBUSY
>> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
>> crypto: introduce crypto wait for async op
>> crypto: move algif to generic async completion
>> crypto: move pub key to generic async completion
>> crypto: move drbg to generic async completion
>> crypto: move gcm to generic async completion
>> crypto: move testmgr to generic async completion
>> fscrypt: move to generic async completion
>> dm: move dm-verity to generic async completion
>> cifs: move to generic async completion
>> ima: move to generic async completion
>> crypto: tcrypt: move to generic async completion
>> crypto: talitos: move to generic async completion
>> crypto: qce: move to generic async completion
>> crypto: mediatek: move to generic async completion
>> crypto: adapt api sample to use async. op wait
>>
>> Documentation/crypto/api-samples.rst | 52 ++-------
>> crypto/af_alg.c | 27 -----
>> crypto/ahash.c | 12 +--
>> crypto/algapi.c | 6 +-
>> crypto/algif_aead.c | 8 +-
>> crypto/algif_hash.c | 50 +++++----
>> crypto/algif_skcipher.c | 9 +-
>> crypto/api.c | 13 +++
>> crypto/asymmetric_keys/public_key.c | 28 +----
>> crypto/cryptd.c | 4 +-
>> crypto/cts.c | 6 +-
>> crypto/drbg.c | 36 ++-----
>> crypto/gcm.c | 32 ++----
>> crypto/lrw.c | 8 +-
>> crypto/rsa-pkcs1pad.c | 16 +--
>> crypto/tcrypt.c | 84 +++++----------
>> crypto/testmgr.c | 204 ++++++++++++-----------------------
>> crypto/xts.c | 8 +-
>> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
>> drivers/crypto/ccp/ccp-dev.c | 7 +-
>> drivers/crypto/marvell/cesa.c | 3 +-
>> drivers/crypto/marvell/cesa.h | 2 +-
>> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
>> drivers/crypto/qce/sha.c | 30 +-----
>> drivers/crypto/talitos.c | 38 +------
>> drivers/md/dm-verity-target.c | 81 ++++----------
>> drivers/md/dm-verity.h | 5 -
>> fs/cifs/smb2ops.c | 30 +-----
>> fs/crypto/crypto.c | 28 +----
>> fs/crypto/fname.c | 36 ++-----
>> fs/crypto/fscrypt_private.h | 10 --
>> fs/crypto/keyinfo.c | 21 +---
>> include/crypto/drbg.h | 3 +-
>> include/crypto/if_alg.h | 15 +--
>> include/linux/crypto.h | 40 +++++++
>> security/integrity/ima/ima_crypto.c | 56 +++-------
>> 36 files changed, 310 insertions(+), 737 deletions(-)
>>
>> --
>> 2.1.4
>>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
2017-08-31 12:31 ` Harsh Jain
` (3 preceding siblings ...)
(?)
@ 2017-09-03 6:09 ` Gilad Ben-Yossef
-1 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-09-03 6:09 UTC (permalink / raw)
To: Harsh Jain
Cc: Mike Snitzer, linux-doc, Gary Hook, David Howells,
device-mapper development, keyrings, linux-ima-devel,
Alasdair Kergon, Boris Brezillon, Herbert Xu, Jonathan Corbet,
Mimi Zohar, Serge E. Hallyn, Tom Lendacky, linux-cifs,
linux-ima-user, Arnaud Ebalard, linux-raid, linux-fscrypt,
linux-mediatek, James Morris, Matthias Brugger, Jaegeuk Kim,
linux-arm-kernel, O
[-- Attachment #1.1: Type: text/plain, Size: 6541 bytes --]
On Thu, Aug 31, 2017 at 3:31 PM, Harsh Jain <harshjain.prof@gmail.com>
wrote:
> HI Gilad,
>
> I think we need an update in ESP also. Now EBUSY return means driver
> has accepted, Packet should not be dropped in
>
> esp_output_tail() function.
>
>
>
Good catch. You are right and the same holds true for ah_output() in ah4.c.
But I do wonder, the code there now treats -EBUSY as a special case and
returns NET_XMIT_DROP
but if an AEAD or AHASH transformation return some other error, like
-ENOMEM or -EINVAL shouldn't
we return NET_XMIT_DROP in that case too?
Any ideas?
Gilad
>
>
> On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com>
> wrote:
> > Many users of kernel async. crypto services have a pattern of
> > starting an async. crypto op and than using a completion
> > to wait for it to end.
> >
> > This patch set simplifies this common use case in two ways:
> >
> > First, by separating the return codes of the case where a
> > request is queued to a backlog due to the provider being
> > busy (-EBUSY) from the case the request has failed due
> > to the provider being busy and backlogging is not enabled
> > (-EAGAIN).
> >
> > Next, this change is than built on to create a generic API
> > to wait for a async. crypto operation to complete.
> >
> > The end result is a smaller code base and an API that is
> > easier to use and more difficult to get wrong.
> >
> > The patch set was boot tested on x86_64 and arm64 which
> > at the very least tests the crypto users via testmgr and
> > tcrypt but I do note that I do not have access to some
> > of the HW whose drivers are modified nor do I claim I was
> > able to test all of the corner cases.
> >
> > The patch set is based upon linux-next release tagged
> > next-20170824.
> >
> > Changes from v6:
> > - Fix brown paper bag compile error on marvell/cesa
> > code.
> >
> > Changes from v5:
> > - Remove redundant new line as spotted by Jonathan
> > Cameron.
> > - Reworded dm-verity change commit message to better
> > clarify potential issue averted by change as
> > pointed out by Mikulas Patocka.
> >
> > Changes from v4:
> > - Rebase on top of latest algif changes from Stephan
> > Mueller.
> > - Fix typo in ccp patch title.
> >
> > Changes from v3:
> > - Instead of changing the return code to indicate
> > backlog queueing, change the return code to indicate
> > transient busy state, as suggested by Herbert Xu.
> >
> > Changes from v2:
> > - Patch title changed from "introduce crypto wait for
> > async op" to better reflect the current state.
> > - Rebase on top of latest linux-next.
> > - Add a new return code of -EIOCBQUEUED for backlog
> > queueing, as suggested by Herbert Xu.
> > - Transform more users to the new API.
> > - Update the drbg change to account for new init as
> > indicated by Stephan Muller.
> >
> > Changes from v1:
> > - Address review comments from Eric Biggers.
> > - Separated out bug fixes of existing code and rebase
> > on top of that patch set.
> > - Rename 'ecr' to 'wait' in fscrypto code.
> > - Split patch introducing the new API from the change
> > moving over the algif code which it originated from
> > to the new API.
> > - Inline crypto_wait_req().
> > - Some code indentation fixes.
> >
> > Gilad Ben-Yossef (19):
> > crypto: change transient busy return code to -EAGAIN
> > crypto: ccp: use -EAGAIN for transient busy indication
> > crypto: remove redundant backlog checks on EBUSY
> > crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> > crypto: introduce crypto wait for async op
> > crypto: move algif to generic async completion
> > crypto: move pub key to generic async completion
> > crypto: move drbg to generic async completion
> > crypto: move gcm to generic async completion
> > crypto: move testmgr to generic async completion
> > fscrypt: move to generic async completion
> > dm: move dm-verity to generic async completion
> > cifs: move to generic async completion
> > ima: move to generic async completion
> > crypto: tcrypt: move to generic async completion
> > crypto: talitos: move to generic async completion
> > crypto: qce: move to generic async completion
> > crypto: mediatek: move to generic async completion
> > crypto: adapt api sample to use async. op wait
> >
> > Documentation/crypto/api-samples.rst | 52 ++-------
> > crypto/af_alg.c | 27 -----
> > crypto/ahash.c | 12 +--
> > crypto/algapi.c | 6 +-
> > crypto/algif_aead.c | 8 +-
> > crypto/algif_hash.c | 50 +++++----
> > crypto/algif_skcipher.c | 9 +-
> > crypto/api.c | 13 +++
> > crypto/asymmetric_keys/public_key.c | 28 +----
> > crypto/cryptd.c | 4 +-
> > crypto/cts.c | 6 +-
> > crypto/drbg.c | 36 ++-----
> > crypto/gcm.c | 32 ++----
> > crypto/lrw.c | 8 +-
> > crypto/rsa-pkcs1pad.c | 16 +--
> > crypto/tcrypt.c | 84 +++++----------
> > crypto/testmgr.c | 204
> ++++++++++++-----------------------
> > crypto/xts.c | 8 +-
> > drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> > drivers/crypto/ccp/ccp-dev.c | 7 +-
> > drivers/crypto/marvell/cesa.c | 3 +-
> > drivers/crypto/marvell/cesa.h | 2 +-
> > drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> > drivers/crypto/qce/sha.c | 30 +-----
> > drivers/crypto/talitos.c | 38 +------
> > drivers/md/dm-verity-target.c | 81 ++++----------
> > drivers/md/dm-verity.h | 5 -
> > fs/cifs/smb2ops.c | 30 +-----
> > fs/crypto/crypto.c | 28 +----
> > fs/crypto/fname.c | 36 ++-----
> > fs/crypto/fscrypt_private.h | 10 --
> > fs/crypto/keyinfo.c | 21 +---
> > include/crypto/drbg.h | 3 +-
> > include/crypto/if_alg.h | 15 +--
> > include/linux/crypto.h | 40 +++++++
> > security/integrity/ima/ima_crypto.c | 56 +++-------
> > 36 files changed, 310 insertions(+), 737 deletions(-)
> >
> > --
> > 2.1.4
> >
>
--
Gilad Ben-Yossef
Chief Coffee Drinker
"If you take a class in large-scale robotics, can you end up in a situation
where the homework eats your dog?"
-- Jean-Baptiste Queru
[-- Attachment #1.2: Type: text/html, Size: 8644 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
[not found] ` <1503584350-7831-1-git-send-email-gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org>
` (2 preceding siblings ...)
(?)
@ 2017-08-31 12:31 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-08-31 12:43 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, linux-crypto
HI Gilad,
I think we need an update in ESP also. Now EBUSY return means driver
has accepted, Packet should not be dropped in
esp_output_tail() function.
.
Regards
Harsh Jain
On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> Many users of kernel async. crypto services have a pattern of
> starting an async. crypto op and than using a completion
> to wait for it to end.
>
> This patch set simplifies this common use case in two ways:
>
> First, by separating the return codes of the case where a
> request is queued to a backlog due to the provider being
> busy (-EBUSY) from the case the request has failed due
> to the provider being busy and backlogging is not enabled
> (-EAGAIN).
>
> Next, this change is than built on to create a generic API
> to wait for a async. crypto operation to complete.
>
> The end result is a smaller code base and an API that is
> easier to use and more difficult to get wrong.
>
> The patch set was boot tested on x86_64 and arm64 which
> at the very least tests the crypto users via testmgr and
> tcrypt but I do note that I do not have access to some
> of the HW whose drivers are modified nor do I claim I was
> able to test all of the corner cases.
>
> The patch set is based upon linux-next release tagged
> next-20170824.
>
> Changes from v6:
> - Fix brown paper bag compile error on marvell/cesa
> code.
>
> Changes from v5:
> - Remove redundant new line as spotted by Jonathan
> Cameron.
> - Reworded dm-verity change commit message to better
> clarify potential issue averted by change as
> pointed out by Mikulas Patocka.
>
> Changes from v4:
> - Rebase on top of latest algif changes from Stephan
> Mueller.
> - Fix typo in ccp patch title.
>
> Changes from v3:
> - Instead of changing the return code to indicate
> backlog queueing, change the return code to indicate
> transient busy state, as suggested by Herbert Xu.
>
> Changes from v2:
> - Patch title changed from "introduce crypto wait for
> async op" to better reflect the current state.
> - Rebase on top of latest linux-next.
> - Add a new return code of -EIOCBQUEUED for backlog
> queueing, as suggested by Herbert Xu.
> - Transform more users to the new API.
> - Update the drbg change to account for new init as
> indicated by Stephan Muller.
>
> Changes from v1:
> - Address review comments from Eric Biggers.
> - Separated out bug fixes of existing code and rebase
> on top of that patch set.
> - Rename 'ecr' to 'wait' in fscrypto code.
> - Split patch introducing the new API from the change
> moving over the algif code which it originated from
> to the new API.
> - Inline crypto_wait_req().
> - Some code indentation fixes.
>
> Gilad Ben-Yossef (19):
> crypto: change transient busy return code to -EAGAIN
> crypto: ccp: use -EAGAIN for transient busy indication
> crypto: remove redundant backlog checks on EBUSY
> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> crypto: introduce crypto wait for async op
> crypto: move algif to generic async completion
> crypto: move pub key to generic async completion
> crypto: move drbg to generic async completion
> crypto: move gcm to generic async completion
> crypto: move testmgr to generic async completion
> fscrypt: move to generic async completion
> dm: move dm-verity to generic async completion
> cifs: move to generic async completion
> ima: move to generic async completion
> crypto: tcrypt: move to generic async completion
> crypto: talitos: move to generic async completion
> crypto: qce: move to generic async completion
> crypto: mediatek: move to generic async completion
> crypto: adapt api sample to use async. op wait
>
> Documentation/crypto/api-samples.rst | 52 ++-------
> crypto/af_alg.c | 27 -----
> crypto/ahash.c | 12 +--
> crypto/algapi.c | 6 +-
> crypto/algif_aead.c | 8 +-
> crypto/algif_hash.c | 50 +++++----
> crypto/algif_skcipher.c | 9 +-
> crypto/api.c | 13 +++
> crypto/asymmetric_keys/public_key.c | 28 +----
> crypto/cryptd.c | 4 +-
> crypto/cts.c | 6 +-
> crypto/drbg.c | 36 ++-----
> crypto/gcm.c | 32 ++----
> crypto/lrw.c | 8 +-
> crypto/rsa-pkcs1pad.c | 16 +--
> crypto/tcrypt.c | 84 +++++----------
> crypto/testmgr.c | 204 ++++++++++++-----------------------
> crypto/xts.c | 8 +-
> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> drivers/crypto/ccp/ccp-dev.c | 7 +-
> drivers/crypto/marvell/cesa.c | 3 +-
> drivers/crypto/marvell/cesa.h | 2 +-
> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> drivers/crypto/qce/sha.c | 30 +-----
> drivers/crypto/talitos.c | 38 +------
> drivers/md/dm-verity-target.c | 81 ++++----------
> drivers/md/dm-verity.h | 5 -
> fs/cifs/smb2ops.c | 30 +-----
> fs/crypto/crypto.c | 28 +----
> fs/crypto/fname.c | 36 ++-----
> fs/crypto/fscrypt_private.h | 10 --
> fs/crypto/keyinfo.c | 21 +---
> include/crypto/drbg.h | 3 +-
> include/crypto/if_alg.h | 15 +--
> include/linux/crypto.h | 40 +++++++
> security/integrity/ima/ima_crypto.c | 56 +++-------
> 36 files changed, 310 insertions(+), 737 deletions(-)
>
> --
> 2.1.4
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-31 12:31 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-08-31 12:31 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, linux-crypto
HI Gilad,
I think we need an update in ESP also. Now EBUSY return means driver
has accepted, Packet should not be dropped in
esp_output_tail() function.
.
Regards
Harsh Jain
On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org> wrote:
> Many users of kernel async. crypto services have a pattern of
> starting an async. crypto op and than using a completion
> to wait for it to end.
>
> This patch set simplifies this common use case in two ways:
>
> First, by separating the return codes of the case where a
> request is queued to a backlog due to the provider being
> busy (-EBUSY) from the case the request has failed due
> to the provider being busy and backlogging is not enabled
> (-EAGAIN).
>
> Next, this change is than built on to create a generic API
> to wait for a async. crypto operation to complete.
>
> The end result is a smaller code base and an API that is
> easier to use and more difficult to get wrong.
>
> The patch set was boot tested on x86_64 and arm64 which
> at the very least tests the crypto users via testmgr and
> tcrypt but I do note that I do not have access to some
> of the HW whose drivers are modified nor do I claim I was
> able to test all of the corner cases.
>
> The patch set is based upon linux-next release tagged
> next-20170824.
>
> Changes from v6:
> - Fix brown paper bag compile error on marvell/cesa
> code.
>
> Changes from v5:
> - Remove redundant new line as spotted by Jonathan
> Cameron.
> - Reworded dm-verity change commit message to better
> clarify potential issue averted by change as
> pointed out by Mikulas Patocka.
>
> Changes from v4:
> - Rebase on top of latest algif changes from Stephan
> Mueller.
> - Fix typo in ccp patch title.
>
> Changes from v3:
> - Instead of changing the return code to indicate
> backlog queueing, change the return code to indicate
> transient busy state, as suggested by Herbert Xu.
>
> Changes from v2:
> - Patch title changed from "introduce crypto wait for
> async op" to better reflect the current state.
> - Rebase on top of latest linux-next.
> - Add a new return code of -EIOCBQUEUED for backlog
> queueing, as suggested by Herbert Xu.
> - Transform more users to the new API.
> - Update the drbg change to account for new init as
> indicated by Stephan Muller.
>
> Changes from v1:
> - Address review comments from Eric Biggers.
> - Separated out bug fixes of existing code and rebase
> on top of that patch set.
> - Rename 'ecr' to 'wait' in fscrypto code.
> - Split patch introducing the new API from the change
> moving over the algif code which it originated from
> to the new API.
> - Inline crypto_wait_req().
> - Some code indentation fixes.
>
> Gilad Ben-Yossef (19):
> crypto: change transient busy return code to -EAGAIN
> crypto: ccp: use -EAGAIN for transient busy indication
> crypto: remove redundant backlog checks on EBUSY
> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> crypto: introduce crypto wait for async op
> crypto: move algif to generic async completion
> crypto: move pub key to generic async completion
> crypto: move drbg to generic async completion
> crypto: move gcm to generic async completion
> crypto: move testmgr to generic async completion
> fscrypt: move to generic async completion
> dm: move dm-verity to generic async completion
> cifs: move to generic async completion
> ima: move to generic async completion
> crypto: tcrypt: move to generic async completion
> crypto: talitos: move to generic async completion
> crypto: qce: move to generic async completion
> crypto: mediatek: move to generic async completion
> crypto: adapt api sample to use async. op wait
>
> Documentation/crypto/api-samples.rst | 52 ++-------
> crypto/af_alg.c | 27 -----
> crypto/ahash.c | 12 +--
> crypto/algapi.c | 6 +-
> crypto/algif_aead.c | 8 +-
> crypto/algif_hash.c | 50 +++++----
> crypto/algif_skcipher.c | 9 +-
> crypto/api.c | 13 +++
> crypto/asymmetric_keys/public_key.c | 28 +----
> crypto/cryptd.c | 4 +-
> crypto/cts.c | 6 +-
> crypto/drbg.c | 36 ++-----
> crypto/gcm.c | 32 ++----
> crypto/lrw.c | 8 +-
> crypto/rsa-pkcs1pad.c | 16 +--
> crypto/tcrypt.c | 84 +++++----------
> crypto/testmgr.c | 204 ++++++++++++-----------------------
> crypto/xts.c | 8 +-
> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> drivers/crypto/ccp/ccp-dev.c | 7 +-
> drivers/crypto/marvell/cesa.c | 3 +-
> drivers/crypto/marvell/cesa.h | 2 +-
> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> drivers/crypto/qce/sha.c | 30 +-----
> drivers/crypto/talitos.c | 38 +------
> drivers/md/dm-verity-target.c | 81 ++++----------
> drivers/md/dm-verity.h | 5 -
> fs/cifs/smb2ops.c | 30 +-----
> fs/crypto/crypto.c | 28 +----
> fs/crypto/fname.c | 36 ++-----
> fs/crypto/fscrypt_private.h | 10 --
> fs/crypto/keyinfo.c | 21 +---
> include/crypto/drbg.h | 3 +-
> include/crypto/if_alg.h | 15 +--
> include/linux/crypto.h | 40 +++++++
> security/integrity/ima/ima_crypto.c | 56 +++-------
> 36 files changed, 310 insertions(+), 737 deletions(-)
>
> --
> 2.1.4
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-31 12:31 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-08-31 12:31 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer, dm-devel,
Shaohua Li, Steve French, Theodore Y. Ts'o, Jaegeuk Kim,
Mimi Zohar, Dmitry Kasatkin, James Morris, Serge E. Hallyn,
linux-crypto, linux-doc, linux-kernel, keyrings,
linux-arm-kernel, linux-mediatek, linux-raid, linux-cifs,
samba-technical, linux-fscrypt, linux-ima-devel, linux-ima-user,
linux-security-module, Ofir Drang
HI Gilad,
I think we need an update in ESP also. Now EBUSY return means driver
has accepted, Packet should not be dropped in
esp_output_tail() function.
.
Regards
Harsh Jain
On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> Many users of kernel async. crypto services have a pattern of
> starting an async. crypto op and than using a completion
> to wait for it to end.
>
> This patch set simplifies this common use case in two ways:
>
> First, by separating the return codes of the case where a
> request is queued to a backlog due to the provider being
> busy (-EBUSY) from the case the request has failed due
> to the provider being busy and backlogging is not enabled
> (-EAGAIN).
>
> Next, this change is than built on to create a generic API
> to wait for a async. crypto operation to complete.
>
> The end result is a smaller code base and an API that is
> easier to use and more difficult to get wrong.
>
> The patch set was boot tested on x86_64 and arm64 which
> at the very least tests the crypto users via testmgr and
> tcrypt but I do note that I do not have access to some
> of the HW whose drivers are modified nor do I claim I was
> able to test all of the corner cases.
>
> The patch set is based upon linux-next release tagged
> next-20170824.
>
> Changes from v6:
> - Fix brown paper bag compile error on marvell/cesa
> code.
>
> Changes from v5:
> - Remove redundant new line as spotted by Jonathan
> Cameron.
> - Reworded dm-verity change commit message to better
> clarify potential issue averted by change as
> pointed out by Mikulas Patocka.
>
> Changes from v4:
> - Rebase on top of latest algif changes from Stephan
> Mueller.
> - Fix typo in ccp patch title.
>
> Changes from v3:
> - Instead of changing the return code to indicate
> backlog queueing, change the return code to indicate
> transient busy state, as suggested by Herbert Xu.
>
> Changes from v2:
> - Patch title changed from "introduce crypto wait for
> async op" to better reflect the current state.
> - Rebase on top of latest linux-next.
> - Add a new return code of -EIOCBQUEUED for backlog
> queueing, as suggested by Herbert Xu.
> - Transform more users to the new API.
> - Update the drbg change to account for new init as
> indicated by Stephan Muller.
>
> Changes from v1:
> - Address review comments from Eric Biggers.
> - Separated out bug fixes of existing code and rebase
> on top of that patch set.
> - Rename 'ecr' to 'wait' in fscrypto code.
> - Split patch introducing the new API from the change
> moving over the algif code which it originated from
> to the new API.
> - Inline crypto_wait_req().
> - Some code indentation fixes.
>
> Gilad Ben-Yossef (19):
> crypto: change transient busy return code to -EAGAIN
> crypto: ccp: use -EAGAIN for transient busy indication
> crypto: remove redundant backlog checks on EBUSY
> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> crypto: introduce crypto wait for async op
> crypto: move algif to generic async completion
> crypto: move pub key to generic async completion
> crypto: move drbg to generic async completion
> crypto: move gcm to generic async completion
> crypto: move testmgr to generic async completion
> fscrypt: move to generic async completion
> dm: move dm-verity to generic async completion
> cifs: move to generic async completion
> ima: move to generic async completion
> crypto: tcrypt: move to generic async completion
> crypto: talitos: move to generic async completion
> crypto: qce: move to generic async completion
> crypto: mediatek: move to generic async completion
> crypto: adapt api sample to use async. op wait
>
> Documentation/crypto/api-samples.rst | 52 ++-------
> crypto/af_alg.c | 27 -----
> crypto/ahash.c | 12 +--
> crypto/algapi.c | 6 +-
> crypto/algif_aead.c | 8 +-
> crypto/algif_hash.c | 50 +++++----
> crypto/algif_skcipher.c | 9 +-
> crypto/api.c | 13 +++
> crypto/asymmetric_keys/public_key.c | 28 +----
> crypto/cryptd.c | 4 +-
> crypto/cts.c | 6 +-
> crypto/drbg.c | 36 ++-----
> crypto/gcm.c | 32 ++----
> crypto/lrw.c | 8 +-
> crypto/rsa-pkcs1pad.c | 16 +--
> crypto/tcrypt.c | 84 +++++----------
> crypto/testmgr.c | 204 ++++++++++++-----------------------
> crypto/xts.c | 8 +-
> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> drivers/crypto/ccp/ccp-dev.c | 7 +-
> drivers/crypto/marvell/cesa.c | 3 +-
> drivers/crypto/marvell/cesa.h | 2 +-
> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> drivers/crypto/qce/sha.c | 30 +-----
> drivers/crypto/talitos.c | 38 +------
> drivers/md/dm-verity-target.c | 81 ++++----------
> drivers/md/dm-verity.h | 5 -
> fs/cifs/smb2ops.c | 30 +-----
> fs/crypto/crypto.c | 28 +----
> fs/crypto/fname.c | 36 ++-----
> fs/crypto/fscrypt_private.h | 10 --
> fs/crypto/keyinfo.c | 21 +---
> include/crypto/drbg.h | 3 +-
> include/crypto/if_alg.h | 15 +--
> include/linux/crypto.h | 40 +++++++
> security/integrity/ima/ima_crypto.c | 56 +++-------
> 36 files changed, 310 insertions(+), 737 deletions(-)
>
> --
> 2.1.4
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-31 12:31 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-08-31 12:31 UTC (permalink / raw)
To: linux-security-module
HI Gilad,
I think we need an update in ESP also. Now EBUSY return means driver
has accepted, Packet should not be dropped in
esp_output_tail() function.
.
Regards
Harsh Jain
On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> Many users of kernel async. crypto services have a pattern of
> starting an async. crypto op and than using a completion
> to wait for it to end.
>
> This patch set simplifies this common use case in two ways:
>
> First, by separating the return codes of the case where a
> request is queued to a backlog due to the provider being
> busy (-EBUSY) from the case the request has failed due
> to the provider being busy and backlogging is not enabled
> (-EAGAIN).
>
> Next, this change is than built on to create a generic API
> to wait for a async. crypto operation to complete.
>
> The end result is a smaller code base and an API that is
> easier to use and more difficult to get wrong.
>
> The patch set was boot tested on x86_64 and arm64 which
> at the very least tests the crypto users via testmgr and
> tcrypt but I do note that I do not have access to some
> of the HW whose drivers are modified nor do I claim I was
> able to test all of the corner cases.
>
> The patch set is based upon linux-next release tagged
> next-20170824.
>
> Changes from v6:
> - Fix brown paper bag compile error on marvell/cesa
> code.
>
> Changes from v5:
> - Remove redundant new line as spotted by Jonathan
> Cameron.
> - Reworded dm-verity change commit message to better
> clarify potential issue averted by change as
> pointed out by Mikulas Patocka.
>
> Changes from v4:
> - Rebase on top of latest algif changes from Stephan
> Mueller.
> - Fix typo in ccp patch title.
>
> Changes from v3:
> - Instead of changing the return code to indicate
> backlog queueing, change the return code to indicate
> transient busy state, as suggested by Herbert Xu.
>
> Changes from v2:
> - Patch title changed from "introduce crypto wait for
> async op" to better reflect the current state.
> - Rebase on top of latest linux-next.
> - Add a new return code of -EIOCBQUEUED for backlog
> queueing, as suggested by Herbert Xu.
> - Transform more users to the new API.
> - Update the drbg change to account for new init as
> indicated by Stephan Muller.
>
> Changes from v1:
> - Address review comments from Eric Biggers.
> - Separated out bug fixes of existing code and rebase
> on top of that patch set.
> - Rename 'ecr' to 'wait' in fscrypto code.
> - Split patch introducing the new API from the change
> moving over the algif code which it originated from
> to the new API.
> - Inline crypto_wait_req().
> - Some code indentation fixes.
>
> Gilad Ben-Yossef (19):
> crypto: change transient busy return code to -EAGAIN
> crypto: ccp: use -EAGAIN for transient busy indication
> crypto: remove redundant backlog checks on EBUSY
> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> crypto: introduce crypto wait for async op
> crypto: move algif to generic async completion
> crypto: move pub key to generic async completion
> crypto: move drbg to generic async completion
> crypto: move gcm to generic async completion
> crypto: move testmgr to generic async completion
> fscrypt: move to generic async completion
> dm: move dm-verity to generic async completion
> cifs: move to generic async completion
> ima: move to generic async completion
> crypto: tcrypt: move to generic async completion
> crypto: talitos: move to generic async completion
> crypto: qce: move to generic async completion
> crypto: mediatek: move to generic async completion
> crypto: adapt api sample to use async. op wait
>
> Documentation/crypto/api-samples.rst | 52 ++-------
> crypto/af_alg.c | 27 -----
> crypto/ahash.c | 12 +--
> crypto/algapi.c | 6 +-
> crypto/algif_aead.c | 8 +-
> crypto/algif_hash.c | 50 +++++----
> crypto/algif_skcipher.c | 9 +-
> crypto/api.c | 13 +++
> crypto/asymmetric_keys/public_key.c | 28 +----
> crypto/cryptd.c | 4 +-
> crypto/cts.c | 6 +-
> crypto/drbg.c | 36 ++-----
> crypto/gcm.c | 32 ++----
> crypto/lrw.c | 8 +-
> crypto/rsa-pkcs1pad.c | 16 +--
> crypto/tcrypt.c | 84 +++++----------
> crypto/testmgr.c | 204 ++++++++++++-----------------------
> crypto/xts.c | 8 +-
> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> drivers/crypto/ccp/ccp-dev.c | 7 +-
> drivers/crypto/marvell/cesa.c | 3 +-
> drivers/crypto/marvell/cesa.h | 2 +-
> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> drivers/crypto/qce/sha.c | 30 +-----
> drivers/crypto/talitos.c | 38 +------
> drivers/md/dm-verity-target.c | 81 ++++----------
> drivers/md/dm-verity.h | 5 -
> fs/cifs/smb2ops.c | 30 +-----
> fs/crypto/crypto.c | 28 +----
> fs/crypto/fname.c | 36 ++-----
> fs/crypto/fscrypt_private.h | 10 --
> fs/crypto/keyinfo.c | 21 +---
> include/crypto/drbg.h | 3 +-
> include/crypto/if_alg.h | 15 +--
> include/linux/crypto.h | 40 +++++++
> security/integrity/ima/ima_crypto.c | 56 +++-------
> 36 files changed, 310 insertions(+), 737 deletions(-)
>
> --
> 2.1.4
>
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-31 12:31 ` Harsh Jain
0 siblings, 0 replies; 29+ messages in thread
From: Harsh Jain @ 2017-08-31 12:31 UTC (permalink / raw)
To: linux-arm-kernel
HI Gilad,
I think we need an update in ESP also. Now EBUSY return means driver
has accepted, Packet should not be dropped in
esp_output_tail() function.
.
Regards
Harsh Jain
On Thu, Aug 24, 2017 at 7:48 PM, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> Many users of kernel async. crypto services have a pattern of
> starting an async. crypto op and than using a completion
> to wait for it to end.
>
> This patch set simplifies this common use case in two ways:
>
> First, by separating the return codes of the case where a
> request is queued to a backlog due to the provider being
> busy (-EBUSY) from the case the request has failed due
> to the provider being busy and backlogging is not enabled
> (-EAGAIN).
>
> Next, this change is than built on to create a generic API
> to wait for a async. crypto operation to complete.
>
> The end result is a smaller code base and an API that is
> easier to use and more difficult to get wrong.
>
> The patch set was boot tested on x86_64 and arm64 which
> at the very least tests the crypto users via testmgr and
> tcrypt but I do note that I do not have access to some
> of the HW whose drivers are modified nor do I claim I was
> able to test all of the corner cases.
>
> The patch set is based upon linux-next release tagged
> next-20170824.
>
> Changes from v6:
> - Fix brown paper bag compile error on marvell/cesa
> code.
>
> Changes from v5:
> - Remove redundant new line as spotted by Jonathan
> Cameron.
> - Reworded dm-verity change commit message to better
> clarify potential issue averted by change as
> pointed out by Mikulas Patocka.
>
> Changes from v4:
> - Rebase on top of latest algif changes from Stephan
> Mueller.
> - Fix typo in ccp patch title.
>
> Changes from v3:
> - Instead of changing the return code to indicate
> backlog queueing, change the return code to indicate
> transient busy state, as suggested by Herbert Xu.
>
> Changes from v2:
> - Patch title changed from "introduce crypto wait for
> async op" to better reflect the current state.
> - Rebase on top of latest linux-next.
> - Add a new return code of -EIOCBQUEUED for backlog
> queueing, as suggested by Herbert Xu.
> - Transform more users to the new API.
> - Update the drbg change to account for new init as
> indicated by Stephan Muller.
>
> Changes from v1:
> - Address review comments from Eric Biggers.
> - Separated out bug fixes of existing code and rebase
> on top of that patch set.
> - Rename 'ecr' to 'wait' in fscrypto code.
> - Split patch introducing the new API from the change
> moving over the algif code which it originated from
> to the new API.
> - Inline crypto_wait_req().
> - Some code indentation fixes.
>
> Gilad Ben-Yossef (19):
> crypto: change transient busy return code to -EAGAIN
> crypto: ccp: use -EAGAIN for transient busy indication
> crypto: remove redundant backlog checks on EBUSY
> crypto: marvell/cesa: remove redundant backlog checks on EBUSY
> crypto: introduce crypto wait for async op
> crypto: move algif to generic async completion
> crypto: move pub key to generic async completion
> crypto: move drbg to generic async completion
> crypto: move gcm to generic async completion
> crypto: move testmgr to generic async completion
> fscrypt: move to generic async completion
> dm: move dm-verity to generic async completion
> cifs: move to generic async completion
> ima: move to generic async completion
> crypto: tcrypt: move to generic async completion
> crypto: talitos: move to generic async completion
> crypto: qce: move to generic async completion
> crypto: mediatek: move to generic async completion
> crypto: adapt api sample to use async. op wait
>
> Documentation/crypto/api-samples.rst | 52 ++-------
> crypto/af_alg.c | 27 -----
> crypto/ahash.c | 12 +--
> crypto/algapi.c | 6 +-
> crypto/algif_aead.c | 8 +-
> crypto/algif_hash.c | 50 +++++----
> crypto/algif_skcipher.c | 9 +-
> crypto/api.c | 13 +++
> crypto/asymmetric_keys/public_key.c | 28 +----
> crypto/cryptd.c | 4 +-
> crypto/cts.c | 6 +-
> crypto/drbg.c | 36 ++-----
> crypto/gcm.c | 32 ++----
> crypto/lrw.c | 8 +-
> crypto/rsa-pkcs1pad.c | 16 +--
> crypto/tcrypt.c | 84 +++++----------
> crypto/testmgr.c | 204 ++++++++++++-----------------------
> crypto/xts.c | 8 +-
> drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
> drivers/crypto/ccp/ccp-dev.c | 7 +-
> drivers/crypto/marvell/cesa.c | 3 +-
> drivers/crypto/marvell/cesa.h | 2 +-
> drivers/crypto/mediatek/mtk-aes.c | 31 +-----
> drivers/crypto/qce/sha.c | 30 +-----
> drivers/crypto/talitos.c | 38 +------
> drivers/md/dm-verity-target.c | 81 ++++----------
> drivers/md/dm-verity.h | 5 -
> fs/cifs/smb2ops.c | 30 +-----
> fs/crypto/crypto.c | 28 +----
> fs/crypto/fname.c | 36 ++-----
> fs/crypto/fscrypt_private.h | 10 --
> fs/crypto/keyinfo.c | 21 +---
> include/crypto/drbg.h | 3 +-
> include/crypto/if_alg.h | 15 +--
> include/linux/crypto.h | 40 +++++++
> security/integrity/ima/ima_crypto.c | 56 +++-------
> 36 files changed, 310 insertions(+), 737 deletions(-)
>
> --
> 2.1.4
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, linux-crypto
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer, dm-devel,
Shaohua Li, Steve French, Theodore Y. Ts'o, Jaegeuk Kim,
Mimi Zohar, Dmitry Kasatkin, James Morris, Serge E. Hallyn,
linux-crypto, linux-doc, linux-kernel, keyrings,
linux-arm-kernel
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer, dm-devel,
Shaohua Li, Steve French, Theodore Y. Ts'o, Jaegeuk Kim,
Mimi Zohar, Dmitry Kasatkin, James Morris, Serge E. Hallyn,
linux-crypto
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer, dm-devel,
Shaohua Li, Steve French, Theodore Y. Ts'o, Jaegeuk Kim,
Mimi Zohar, Dmitry Kasatkin, James Morris, Serge E. Hallyn,
linux-crypto, linux-doc, linux-kernel, keyrings,
linux-arm-kernel, linux-mediatek, linux-raid, linux-cifs,
samba-technical, linux-fscrypt, linux-ima-devel, linux-ima-user,
linux-security-module
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
Matthias Brugger, Alasdair Kergon, Mike Snitzer,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Shaohua Li, Steve French,
Theodore Y. Ts'o, Jaegeuk Kim, Mimi Zohar, Dmitry Kasatkin,
James Morris, Serge E. Hallyn, linux-crypto
Cc: Ofir Drang
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: linux-security-module
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v7 00/19] simplify crypto wait for async op
@ 2017-08-24 14:18 ` Gilad Ben-Yossef
0 siblings, 0 replies; 29+ messages in thread
From: Gilad Ben-Yossef @ 2017-08-24 14:18 UTC (permalink / raw)
To: linux-arm-kernel
Many users of kernel async. crypto services have a pattern of
starting an async. crypto op and than using a completion
to wait for it to end.
This patch set simplifies this common use case in two ways:
First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).
Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.
The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.
The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.
The patch set is based upon linux-next release tagged
next-20170824.
Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
code.
Changes from v5:
- Remove redundant new line as spotted by Jonathan
Cameron.
- Reworded dm-verity change commit message to better
clarify potential issue averted by change as
pointed out by Mikulas Patocka.
Changes from v4:
- Rebase on top of latest algif changes from Stephan
Mueller.
- Fix typo in ccp patch title.
Changes from v3:
- Instead of changing the return code to indicate
backlog queueing, change the return code to indicate
transient busy state, as suggested by Herbert Xu.
Changes from v2:
- Patch title changed from "introduce crypto wait for
async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
indicated by Stephan Muller.
Changes from v1:
- Address review comments from Eric Biggers.
- Separated out bug fixes of existing code and rebase
on top of that patch set.
- Rename 'ecr' to 'wait' in fscrypto code.
- Split patch introducing the new API from the change
moving over the algif code which it originated from
to the new API.
- Inline crypto_wait_req().
- Some code indentation fixes.
Gilad Ben-Yossef (19):
crypto: change transient busy return code to -EAGAIN
crypto: ccp: use -EAGAIN for transient busy indication
crypto: remove redundant backlog checks on EBUSY
crypto: marvell/cesa: remove redundant backlog checks on EBUSY
crypto: introduce crypto wait for async op
crypto: move algif to generic async completion
crypto: move pub key to generic async completion
crypto: move drbg to generic async completion
crypto: move gcm to generic async completion
crypto: move testmgr to generic async completion
fscrypt: move to generic async completion
dm: move dm-verity to generic async completion
cifs: move to generic async completion
ima: move to generic async completion
crypto: tcrypt: move to generic async completion
crypto: talitos: move to generic async completion
crypto: qce: move to generic async completion
crypto: mediatek: move to generic async completion
crypto: adapt api sample to use async. op wait
Documentation/crypto/api-samples.rst | 52 ++-------
crypto/af_alg.c | 27 -----
crypto/ahash.c | 12 +--
crypto/algapi.c | 6 +-
crypto/algif_aead.c | 8 +-
crypto/algif_hash.c | 50 +++++----
crypto/algif_skcipher.c | 9 +-
crypto/api.c | 13 +++
crypto/asymmetric_keys/public_key.c | 28 +----
crypto/cryptd.c | 4 +-
crypto/cts.c | 6 +-
crypto/drbg.c | 36 ++-----
crypto/gcm.c | 32 ++----
crypto/lrw.c | 8 +-
crypto/rsa-pkcs1pad.c | 16 +--
crypto/tcrypt.c | 84 +++++----------
crypto/testmgr.c | 204 ++++++++++++-----------------------
crypto/xts.c | 8 +-
drivers/crypto/ccp/ccp-crypto-main.c | 8 +-
drivers/crypto/ccp/ccp-dev.c | 7 +-
drivers/crypto/marvell/cesa.c | 3 +-
drivers/crypto/marvell/cesa.h | 2 +-
drivers/crypto/mediatek/mtk-aes.c | 31 +-----
drivers/crypto/qce/sha.c | 30 +-----
drivers/crypto/talitos.c | 38 +------
drivers/md/dm-verity-target.c | 81 ++++----------
drivers/md/dm-verity.h | 5 -
fs/cifs/smb2ops.c | 30 +-----
fs/crypto/crypto.c | 28 +----
fs/crypto/fname.c | 36 ++-----
fs/crypto/fscrypt_private.h | 10 --
fs/crypto/keyinfo.c | 21 +---
include/crypto/drbg.h | 3 +-
include/crypto/if_alg.h | 15 +--
include/linux/crypto.h | 40 +++++++
security/integrity/ima/ima_crypto.c | 56 +++-------
36 files changed, 310 insertions(+), 737 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2017-09-05 12:16 UTC | newest]
Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-24 14:18 [PATCH v7 00/19] simplify crypto wait for async op Gilad Ben-Yossef
-- strict thread matches above, loose matches on Subject: below --
2017-08-24 14:18 Gilad Ben-Yossef
2017-08-24 14:18 Gilad Ben-Yossef
2017-08-24 14:18 ` Gilad Ben-Yossef
2017-08-24 14:18 ` Gilad Ben-Yossef
2017-08-24 14:18 ` Gilad Ben-Yossef
2017-08-24 14:18 ` Gilad Ben-Yossef
[not found] ` <1503584350-7831-1-git-send-email-gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org>
2017-08-31 12:43 ` Harsh Jain
2017-08-31 12:31 ` Harsh Jain
2017-08-31 12:31 ` Harsh Jain
2017-08-31 12:31 ` Harsh Jain
2017-08-31 12:31 ` Harsh Jain
2017-09-03 6:09 ` Gilad Ben-Yossef
[not found] ` <CAFXBA=n6W_n1P=NKHEUAgpaDDrdmh4QwB4aYma9xyio7UFP3Vw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-09-03 6:17 ` Gilad Ben-Yossef
2017-09-03 6:17 ` Gilad Ben-Yossef
2017-09-03 6:17 ` Gilad Ben-Yossef
2017-09-03 6:17 ` Gilad Ben-Yossef
2017-09-03 6:17 ` Gilad Ben-Yossef
2017-09-05 11:35 ` Harsh Jain
2017-09-05 11:23 ` Harsh Jain
2017-09-05 11:23 ` Harsh Jain
2017-09-05 11:23 ` Harsh Jain
2017-09-05 11:23 ` Harsh Jain
2017-09-05 12:16 ` Gilad Ben-Yossef
2017-09-05 12:16 ` Gilad Ben-Yossef
2017-09-05 12:16 ` Gilad Ben-Yossef
2017-09-05 12:16 ` Gilad Ben-Yossef
2017-09-05 12:16 ` Gilad Ben-Yossef
2017-08-24 14:18 Gilad Ben-Yossef
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.