crypto: acomp - Clone folios properly
The folios contain references to the request itself so they must
be setup again in the cloned request.
Fixes: 5f3437e9c8 ("crypto: acomp - Simplify folio handling")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
pull/1250/head
parent
8f66ccbd8f
commit
0efae41128
|
|
@ -566,5 +566,23 @@ int acomp_walk_virt(struct acomp_walk *__restrict walk,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(acomp_walk_virt);
|
||||
|
||||
struct acomp_req *acomp_request_clone(struct acomp_req *req,
|
||||
size_t total, gfp_t gfp)
|
||||
{
|
||||
struct acomp_req *nreq;
|
||||
|
||||
nreq = container_of(crypto_request_clone(&req->base, total, gfp),
|
||||
struct acomp_req, base);
|
||||
if (nreq == req)
|
||||
return req;
|
||||
|
||||
if (req->src == &req->chain.ssg)
|
||||
nreq->src = &nreq->chain.ssg;
|
||||
if (req->dst == &req->chain.dsg)
|
||||
nreq->dst = &nreq->chain.dsg;
|
||||
return nreq;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acomp_request_clone);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("Asynchronous compression type");
|
||||
|
|
|
|||
|
|
@ -551,11 +551,7 @@ static inline struct acomp_req *acomp_request_on_stack_init(
|
|||
return req;
|
||||
}
|
||||
|
||||
static inline struct acomp_req *acomp_request_clone(struct acomp_req *req,
|
||||
size_t total, gfp_t gfp)
|
||||
{
|
||||
return container_of(crypto_request_clone(&req->base, total, gfp),
|
||||
struct acomp_req, base);
|
||||
}
|
||||
struct acomp_req *acomp_request_clone(struct acomp_req *req,
|
||||
size_t total, gfp_t gfp);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue