summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2025-04-25 11:05:29 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2025-04-28 19:45:26 +0800
commitb75fa20c127eb736b0ac9b30be051f526a2316a9 (patch)
treead56c6678c110145fac067d1e6628d51d58ce659
parente3b49657228c114099b4591821465dc6f9884c61 (diff)
crypto: api - Add crypto_stack_request_init and initialise flags fully
Add a helper to initialise crypto stack requests and use it for ahash and acomp. Make sure that the flags field is initialised fully in the helper to silence false-positive warnings from the compiler. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202504250751.mdy28Ibr-lkp@intel.com/ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--include/crypto/acompress.h3
-rw-r--r--include/crypto/hash.h3
-rw-r--r--include/crypto/internal/acompress.h4
-rw-r--r--include/crypto/internal/hash.h4
-rw-r--r--include/linux/crypto.h8
5 files changed, 14 insertions, 8 deletions
diff --git a/include/crypto/acompress.h b/include/crypto/acompress.h
index 933c48a4855b..f1812e92d3e3 100644
--- a/include/crypto/acompress.h
+++ b/include/crypto/acompress.h
@@ -547,8 +547,7 @@ static inline struct acomp_req *acomp_request_on_stack_init(
{
struct acomp_req *req = (void *)buf;
- acomp_request_set_tfm(req, tfm);
- req->base.flags = CRYPTO_TFM_REQ_ON_STACK;
+ crypto_stack_request_init(&req->base, crypto_acomp_tfm(tfm));
return req;
}
diff --git a/include/crypto/hash.h b/include/crypto/hash.h
index 68813a83443b..c2497c300a28 100644
--- a/include/crypto/hash.h
+++ b/include/crypto/hash.h
@@ -1029,8 +1029,7 @@ static inline struct ahash_request *ahash_request_on_stack_init(
{
struct ahash_request *req = (void *)buf;
- ahash_request_set_tfm(req, tfm);
- req->base.flags = CRYPTO_TFM_REQ_ON_STACK;
+ crypto_stack_request_init(&req->base, crypto_ahash_tfm(tfm));
return req;
}
diff --git a/include/crypto/internal/acompress.h b/include/crypto/internal/acompress.h
index 6550dad18e0f..b72bb7a6a2b2 100644
--- a/include/crypto/internal/acompress.h
+++ b/include/crypto/internal/acompress.h
@@ -231,8 +231,8 @@ static inline struct acomp_req *acomp_fbreq_on_stack_init(
struct crypto_acomp *tfm = crypto_acomp_reqtfm(old);
struct acomp_req *req = (void *)buf;
- acomp_request_set_tfm(req, crypto_acomp_fb(tfm));
- req->base.flags = CRYPTO_TFM_REQ_ON_STACK;
+ crypto_stack_request_init(&req->base,
+ crypto_acomp_tfm(crypto_acomp_fb(tfm)));
acomp_request_set_callback(req, acomp_request_flags(old), NULL, NULL);
req->base.flags &= ~CRYPTO_ACOMP_REQ_PRIVATE;
req->base.flags |= old->base.flags & CRYPTO_ACOMP_REQ_PRIVATE;
diff --git a/include/crypto/internal/hash.h b/include/crypto/internal/hash.h
index 0bc0fefc9b3c..33d45275f5bd 100644
--- a/include/crypto/internal/hash.h
+++ b/include/crypto/internal/hash.h
@@ -283,8 +283,8 @@ static inline struct ahash_request *ahash_fbreq_on_stack_init(
struct crypto_ahash *tfm = crypto_ahash_reqtfm(old);
struct ahash_request *req = (void *)buf;
- ahash_request_set_tfm(req, crypto_ahash_fb(tfm));
- req->base.flags = CRYPTO_TFM_REQ_ON_STACK;
+ crypto_stack_request_init(&req->base,
+ crypto_ahash_tfm(crypto_ahash_fb(tfm)));
ahash_request_set_callback(req, ahash_request_flags(old), NULL, NULL);
req->base.flags &= ~CRYPTO_AHASH_REQ_PRIVATE;
req->base.flags |= old->base.flags & CRYPTO_AHASH_REQ_PRIVATE;
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index fe75320ff9a3..b8d875b11193 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -514,5 +514,13 @@ static inline void crypto_request_set_tfm(struct crypto_async_request *req,
struct crypto_async_request *crypto_request_clone(
struct crypto_async_request *req, size_t total, gfp_t gfp);
+static inline void crypto_stack_request_init(struct crypto_async_request *req,
+ struct crypto_tfm *tfm)
+{
+ req->flags = 0;
+ crypto_request_set_tfm(req, tfm);
+ req->flags |= CRYPTO_TFM_REQ_ON_STACK;
+}
+
#endif /* _LINUX_CRYPTO_H */