Message ID | 1542657210-37739-2-git-send-email-clabbe@baylibre.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Herbert Xu |
Headers | show |
Series | crypto: crypto_user_stat: misc enhancement | expand |
On Mon, 19 Nov 2018 at 11:53, Corentin Labbe <clabbe@baylibre.com> wrote: > > Since we will need crypto_alg_get/crypto_alg_put for "locking" > crypto_alg when updating stats, we need it to be via linux/crypto.h > This seems backwards to me. Surely, crypto stats are permitted to use the internal crypto API? > Signed-off-by: Corentin Labbe <clabbe@baylibre.com> > --- > crypto/internal.h | 12 ------------ > include/linux/crypto.h | 12 ++++++++++++ > 2 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/crypto/internal.h b/crypto/internal.h > index ef769b5e8ad3..d81f033aeb5c 100644 > --- a/crypto/internal.h > +++ b/crypto/internal.h > @@ -91,18 +91,6 @@ unsigned int crypto_alg_extsize(struct crypto_alg *alg); > int crypto_type_has_alg(const char *name, const struct crypto_type *frontend, > u32 type, u32 mask); > > -static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) > -{ > - refcount_inc(&alg->cra_refcnt); > - return alg; > -} > - > -static inline void crypto_alg_put(struct crypto_alg *alg) > -{ > - if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) > - alg->cra_destroy(alg); > -} > - > static inline int crypto_tmpl_get(struct crypto_template *tmpl) > { > return try_module_get(tmpl->module); > diff --git a/include/linux/crypto.h b/include/linux/crypto.h > index 3634ad6fe202..ac8f4168a831 100644 > --- a/include/linux/crypto.h > +++ b/include/linux/crypto.h > @@ -607,6 +607,18 @@ int crypto_unregister_algs(struct crypto_alg *algs, int count); > */ > int crypto_has_alg(const char *name, u32 type, u32 mask); > > +static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) > +{ > + refcount_inc(&alg->cra_refcnt); > + return alg; > +} > + > +static inline void crypto_alg_put(struct crypto_alg *alg) > +{ > + if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) > + alg->cra_destroy(alg); > +} > + > /* > * Transforms: user-instantiated objects which encapsulate algorithms > * and core processing logic. Managed via crypto_alloc_*() and > -- > 2.18.1 >
On Mon, Nov 19, 2018 at 12:25:10PM -0800, Ard Biesheuvel wrote: > On Mon, 19 Nov 2018 at 11:53, Corentin Labbe <clabbe@baylibre.com> wrote: > > > > Since we will need crypto_alg_get/crypto_alg_put for "locking" > > crypto_alg when updating stats, we need it to be via linux/crypto.h > > > > This seems backwards to me. Surely, crypto stats are permitted to use > the internal crypto API? I agree. Thanks,
On Tue, Nov 20, 2018 at 11:10:47AM +0800, Herbert Xu wrote: > On Mon, Nov 19, 2018 at 12:25:10PM -0800, Ard Biesheuvel wrote: > > On Mon, 19 Nov 2018 at 11:53, Corentin Labbe <clabbe@baylibre.com> wrote: > > > > > > Since we will need crypto_alg_get/crypto_alg_put for "locking" > > > crypto_alg when updating stats, we need it to be via linux/crypto.h > > > > > > > This seems backwards to me. Surely, crypto stats are permitted to use > > the internal crypto API? > > I agree. > I dont understand what is backwards ? moving or using ? What do you suggest for "locking" crypto_alg ? Regards
On Tue, Nov 20, 2018 at 06:46:59AM +0100, LABBE Corentin wrote: > On Tue, Nov 20, 2018 at 11:10:47AM +0800, Herbert Xu wrote: > > On Mon, Nov 19, 2018 at 12:25:10PM -0800, Ard Biesheuvel wrote: > > > On Mon, 19 Nov 2018 at 11:53, Corentin Labbe <clabbe@baylibre.com> wrote: > > > > > > > > Since we will need crypto_alg_get/crypto_alg_put for "locking" > > > > crypto_alg when updating stats, we need it to be via linux/crypto.h > > > > > > > > > > This seems backwards to me. Surely, crypto stats are permitted to use > > > the internal crypto API? > > > > I agree. > > > > I dont understand what is backwards ? moving or using ? > What do you suggest for "locking" crypto_alg ? You should include "crypto/internal.h" directly in your code rather than exporting these functions for wider usage outside of the API code. Thanks,
diff --git a/crypto/internal.h b/crypto/internal.h index ef769b5e8ad3..d81f033aeb5c 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -91,18 +91,6 @@ unsigned int crypto_alg_extsize(struct crypto_alg *alg); int crypto_type_has_alg(const char *name, const struct crypto_type *frontend, u32 type, u32 mask); -static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) -{ - refcount_inc(&alg->cra_refcnt); - return alg; -} - -static inline void crypto_alg_put(struct crypto_alg *alg) -{ - if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) - alg->cra_destroy(alg); -} - static inline int crypto_tmpl_get(struct crypto_template *tmpl) { return try_module_get(tmpl->module); diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 3634ad6fe202..ac8f4168a831 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -607,6 +607,18 @@ int crypto_unregister_algs(struct crypto_alg *algs, int count); */ int crypto_has_alg(const char *name, u32 type, u32 mask); +static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) +{ + refcount_inc(&alg->cra_refcnt); + return alg; +} + +static inline void crypto_alg_put(struct crypto_alg *alg) +{ + if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) + alg->cra_destroy(alg); +} + /* * Transforms: user-instantiated objects which encapsulate algorithms * and core processing logic. Managed via crypto_alloc_*() and
Since we will need crypto_alg_get/crypto_alg_put for "locking" crypto_alg when updating stats, we need it to be via linux/crypto.h Signed-off-by: Corentin Labbe <clabbe@baylibre.com> --- crypto/internal.h | 12 ------------ include/linux/crypto.h | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-)