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>
{
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;
}
{
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;
}
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;
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;
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 */