@@ -622,7 +622,7 @@ int acomp_walk_next_dst(struct acomp_walk *walk)
EXPORT_SYMBOL_GPL(acomp_walk_next_dst);
int acomp_walk_virt(struct acomp_walk *__restrict walk,
- struct acomp_req *__restrict req)
+ struct acomp_req *__restrict req, bool atomic)
{
struct scatterlist *src = req->src;
struct scatterlist *dst = req->dst;
@@ -634,7 +634,7 @@ int acomp_walk_virt(struct acomp_walk *__restrict walk,
return -EINVAL;
walk->flags = 0;
- if ((req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP))
+ if ((req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) && !atomic)
walk->flags |= ACOMP_WALK_SLEEP;
if ((req->base.flags & CRYPTO_ACOMP_REQ_SRC_VIRT))
walk->flags |= ACOMP_WALK_SRC_LINEAR;
@@ -60,7 +60,7 @@ static int deflate_compress_one(struct acomp_req *req,
struct acomp_walk walk;
int ret;
- ret = acomp_walk_virt(&walk, req);
+ ret = acomp_walk_virt(&walk, req, true);
if (ret)
return ret;
@@ -147,7 +147,7 @@ static int deflate_decompress_one(struct acomp_req *req,
struct acomp_walk walk;
int ret;
- ret = acomp_walk_virt(&walk, req);
+ ret = acomp_walk_virt(&walk, req, true);
if (ret)
return ret;
@@ -228,7 +228,7 @@ void acomp_walk_done_dst(struct acomp_walk *walk, int used);
int acomp_walk_next_src(struct acomp_walk *walk);
int acomp_walk_next_dst(struct acomp_walk *walk);
int acomp_walk_virt(struct acomp_walk *__restrict walk,
- struct acomp_req *__restrict req);
+ struct acomp_req *__restrict req, bool atomic);
static inline bool acomp_walk_more_src(const struct acomp_walk *walk, int cur)
{