From: LABBE Corentin <clabbe@baylibre.com>
To: Stephan Mueller <smueller@chronox.de>
Cc: davem@davemloft.net, herbert@gondor.apana.org.au,
nhorman@tuxdriver.com, linux-crypto@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] crypto: Implement a generic crypto statistics
Date: Fri, 12 Jan 2018 10:07:30 +0100 [thread overview]
Message-ID: <20180112090730.GA15630@Red> (raw)
In-Reply-To: <3297958.ndliyBY1jk@tauon.chronox.de>
On Fri, Jan 12, 2018 at 07:49:43AM +0100, Stephan Mueller wrote:
> Am Donnerstag, 11. Januar 2018, 20:56:56 CET schrieb Corentin Labbe:
>
> Hi Corentin,
>
> > This patch implement a generic way to get statistics about all crypto
> > usages.
> >
> > Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
> > ---
> > crypto/Kconfig | 11 ++++++++
> > crypto/ablkcipher.c | 9 +++++++
> > crypto/acompress.c | 9 +++++++
> > crypto/aead.c | 10 ++++++++
> > crypto/ahash.c | 8 ++++++
> > crypto/akcipher.c | 13 ++++++++++
> > crypto/algapi.c | 6 +++++
> > crypto/blkcipher.c | 9 +++++++
> > crypto/crypto_user.c | 28 +++++++++++++++++++++
> > crypto/kpp.c | 7 ++++++
> > crypto/rng.c | 8 ++++++
> > crypto/scompress.c | 9 +++++++
> > crypto/shash.c | 5 ++++
> > crypto/skcipher.c | 9 +++++++
> > include/crypto/acompress.h | 22 ++++++++++++++++
> > include/crypto/aead.h | 22 ++++++++++++++++
> > include/crypto/akcipher.h | 42 +++++++++++++++++++++++++++++++
> > include/crypto/hash.h | 21 ++++++++++++++++
> > include/crypto/kpp.h | 28 +++++++++++++++++++++
> > include/crypto/rng.h | 17 +++++++++++++
> > include/crypto/skcipher.h | 22 ++++++++++++++++
> > include/linux/crypto.h | 56
> > +++++++++++++++++++++++++++++++++++++++++ include/uapi/linux/cryptouser.h |
> > 34 +++++++++++++++++++++++++
> > 23 files changed, 405 insertions(+)
> >
> > diff --git a/crypto/Kconfig b/crypto/Kconfig
> > index 971d558494c3..3b88fba14b59 100644
> > --- a/crypto/Kconfig
> > +++ b/crypto/Kconfig
> > @@ -1780,6 +1780,17 @@ config CRYPTO_USER_API_AEAD
> > This option enables the user-spaces interface for AEAD
> > cipher algorithms.
> >
> > +config CRYPTO_STATS
> > + bool "Crypto usage statistics for User-space"
> > + help
> > + This option enables the gathering of crypto stats.
> > + This will collect:
> > + - encrypt/decrypt size and numbers of symmeric operations
> > + - compress/decompress size and numbers of compress operations
> > + - size and numbers of hash operations
> > + - encrypt/decrypt/sign/verify numbers for asymmetric operations
> > + - generate/seed numbers for rng operations
> > +
> > config CRYPTO_HASH_INFO
> > bool
> >
[...]
> > * crypto_acomp_compress() -- Invoke asynchronous compress operation
> > *
> > @@ -247,6 +267,7 @@ static inline int crypto_acomp_compress(struct acomp_req
> > *req) {
> > struct crypto_acomp *tfm = crypto_acomp_reqtfm(req);
> >
> > + crypto_stat_compress(req);
> > return tfm->compress(req);
>
> In general: should'nt the statistics increment only happen if the associated
> operation was successful?
>
I will do it.
This bring also a possibility to get errors counters.
> > /**
> > * crypto_ahash_finup() - update and finalize message digest
> > * @req: reference to the ahash_request handle that holds all information
> > @@ -519,6 +538,8 @@ static inline int crypto_ahash_init(struct ahash_request
> > *req) */
> > static inline int crypto_ahash_update(struct ahash_request *req)
> > {
> > +
> > + crypto_stat_ahash_update(req);
> > return crypto_ahash_reqtfm(req)->update(req);
>
> In case you roll another update: please remove the blank line.
Ok
> > diff --git a/include/uapi/linux/cryptouser.h
> > b/include/uapi/linux/cryptouser.h index 19bf0ca6d635..15e51ccb3679 100644
> > --- a/include/uapi/linux/cryptouser.h
> > +++ b/include/uapi/linux/cryptouser.h
> > @@ -73,6 +73,8 @@ struct crypto_report_hash {
> > char type[CRYPTO_MAX_NAME];
> > unsigned int blocksize;
> > unsigned int digestsize;
> > + __u64 stat_hash;
>
> Why do you use __u64? The atomic_t variable is an int, i.e. 32 bit. Thus I
> would think that __u32 would suffice?
You are right, I will downgrade to __u32
But I think I will set len stats to atomic64/__u64 and keep count on atomic_t/__u32.
>
>
> > + __u64 stat_hash_tlen;
> > };
>
> What I am slightly unsure here is: how should user space detect whether these
> additional parameters are part of the NETLINK_USER API or not? I use that
> interface in my libkcapi whose binary may be used on multiple different kernel
> versions. How should that library operate if one kernel has these parameters
> and another does not?
>
Userspace could check for kernel version and know if stat are present or not.
Another way is to add a new netlink request.
Thanks for your review.
Regards
Corentin Labbe
next prev parent reply other threads:[~2018-01-12 9:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-11 19:56 [PATCH 0/2] crypto: Implement generic crypto statistics Corentin Labbe
2018-01-11 19:56 ` [PATCH 1/2] crypto: Implement a " Corentin Labbe
2018-01-12 6:49 ` Stephan Mueller
2018-01-12 9:07 ` LABBE Corentin [this message]
2018-01-12 9:11 ` Stephan Mueller
2018-01-18 8:58 ` LABBE Corentin
2018-01-26 15:43 ` Herbert Xu
2018-01-31 8:33 ` Steffen Klassert
2018-01-11 19:56 ` [PATCH 2/2] crypto: tools: Add cryptostat userspace Corentin Labbe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180112090730.GA15630@Red \
--to=clabbe@baylibre.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=smueller@chronox.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.