This patch uses IS_ERR_OR_NULL() in zswap_cpu_comp_prepare() to check
for valid acomp/req, thereby making it consistent with acomp_ctx_dealloc().
Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
---
mm/zswap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/zswap.c b/mm/zswap.c
index 7970bd67f010..efd501a7fe29 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -893,7 +893,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node)
return ret;
acomp_ctx->acomp = crypto_alloc_acomp_node(pool->tfm_name, 0, 0, cpu_to_node(cpu));
- if (IS_ERR(acomp_ctx->acomp)) {
+ if (IS_ERR_OR_NULL(acomp_ctx->acomp)) {
pr_err("could not alloc crypto acomp %s : %ld\n",
pool->tfm_name, PTR_ERR(acomp_ctx->acomp));
ret = PTR_ERR(acomp_ctx->acomp);
@@ -902,7 +902,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node)
acomp_ctx->is_sleepable = acomp_is_async(acomp_ctx->acomp);
acomp_ctx->req = acomp_request_alloc(acomp_ctx->acomp);
- if (!acomp_ctx->req) {
+ if (IS_ERR_OR_NULL(acomp_ctx->req)) {
pr_err("could not alloc crypto acomp_request %s\n",
pool->tfm_name);
goto fail;
--
2.27.0
On Mon, Jul 7, 2025 at 1:13 PM Kanchana P Sridhar
<kanchana.p.sridhar@intel.com> wrote:
>
> This patch uses IS_ERR_OR_NULL() in zswap_cpu_comp_prepare() to check
> for valid acomp/req, thereby making it consistent with acomp_ctx_dealloc().
Is acomp_ctx_dealloc() introduced by the other patch series? I can't
seem to find it.
Also, why IS_ERR_OR_NULL() in the first place. Can
crypto_alloc_acomp_node() returns NULL?
>
> Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
> ---
> mm/zswap.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/zswap.c b/mm/zswap.c
> index 7970bd67f010..efd501a7fe29 100644
> --- a/mm/zswap.c
> +++ b/mm/zswap.c
> @@ -893,7 +893,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node)
> return ret;
>
> acomp_ctx->acomp = crypto_alloc_acomp_node(pool->tfm_name, 0, 0, cpu_to_node(cpu));
> - if (IS_ERR(acomp_ctx->acomp)) {
> + if (IS_ERR_OR_NULL(acomp_ctx->acomp)) {
> pr_err("could not alloc crypto acomp %s : %ld\n",
> pool->tfm_name, PTR_ERR(acomp_ctx->acomp));
> ret = PTR_ERR(acomp_ctx->acomp);
> @@ -902,7 +902,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node)
> acomp_ctx->is_sleepable = acomp_is_async(acomp_ctx->acomp);
>
> acomp_ctx->req = acomp_request_alloc(acomp_ctx->acomp);
> - if (!acomp_ctx->req) {
> + if (IS_ERR_OR_NULL(acomp_ctx->req)) {
> pr_err("could not alloc crypto acomp_request %s\n",
> pool->tfm_name);
> goto fail;
> --
> 2.27.0
>
> -----Original Message-----
> From: Nhat Pham <nphamcs@gmail.com>
> Sent: Monday, July 7, 2025 2:36 PM
> To: Sridhar, Kanchana P <kanchana.p.sridhar@intel.com>
> Cc: linux-kernel@vger.kernel.org; linux-mm@kvack.org;
> hannes@cmpxchg.org; yosry.ahmed@linux.dev; chengming.zhou@linux.dev;
> usamaarif642@gmail.com; ryan.roberts@arm.com; 21cnbao@gmail.com;
> ying.huang@linux.alibaba.com; akpm@linux-foundation.org;
> senozhatsky@chromium.org; Feghali, Wajdi K <wajdi.k.feghali@intel.com>;
> Gopal, Vinodh <vinodh.gopal@intel.com>
> Subject: Re: [PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL()
> to check acomp_ctx resources.
>
> On Mon, Jul 7, 2025 at 1:13 PM Kanchana P Sridhar
> <kanchana.p.sridhar@intel.com> wrote:
> >
> > This patch uses IS_ERR_OR_NULL() in zswap_cpu_comp_prepare() to check
> > for valid acomp/req, thereby making it consistent with acomp_ctx_dealloc().
>
> Is acomp_ctx_dealloc() introduced by the other patch series? I can't
> seem to find it.
Saw your follow-up response :)
>
> Also, why IS_ERR_OR_NULL() in the first place. Can
> crypto_alloc_acomp_node() returns NULL?
This is based on this earlier comment [1] from Yosry, when reviewing v8.
[1] https://patchwork.kernel.org/comment/26282128/
Since my commit was refactoring the code from zswap_cpu_comp_dead()
into the new acomp_ctx_dealloc(), my implementation of acomp_ctx_dealloc()
preserved the IS_ERR_OR_NULL() checks on acomp_ctx, req and acomp from
the existing implementation of zswap_cpu_comp_dead().
With this patch-series, the resulting acomp_ctx_dealloc() is called from:
1) zswap_cpu_comp_prepare() when an error is encountered,
2) zswap_pool_create() when an error is encountered, and
3) from zswap_pool_destroy().
Hope this clarifies the context some more.
Thanks,
Kanchana
>
> >
> > Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
> > ---
> > mm/zswap.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/mm/zswap.c b/mm/zswap.c
> > index 7970bd67f010..efd501a7fe29 100644
> > --- a/mm/zswap.c
> > +++ b/mm/zswap.c
> > @@ -893,7 +893,7 @@ static int zswap_cpu_comp_prepare(unsigned int
> cpu, struct hlist_node *node)
> > return ret;
> >
> > acomp_ctx->acomp = crypto_alloc_acomp_node(pool->tfm_name, 0, 0,
> cpu_to_node(cpu));
> > - if (IS_ERR(acomp_ctx->acomp)) {
> > + if (IS_ERR_OR_NULL(acomp_ctx->acomp)) {
> > pr_err("could not alloc crypto acomp %s : %ld\n",
> > pool->tfm_name, PTR_ERR(acomp_ctx->acomp));
> > ret = PTR_ERR(acomp_ctx->acomp);
> > @@ -902,7 +902,7 @@ static int zswap_cpu_comp_prepare(unsigned int
> cpu, struct hlist_node *node)
> > acomp_ctx->is_sleepable = acomp_is_async(acomp_ctx->acomp);
> >
> > acomp_ctx->req = acomp_request_alloc(acomp_ctx->acomp);
> > - if (!acomp_ctx->req) {
> > + if (IS_ERR_OR_NULL(acomp_ctx->req)) {
> > pr_err("could not alloc crypto acomp_request %s\n",
> > pool->tfm_name);
> > goto fail;
> > --
> > 2.27.0
> >
On Mon, Jul 7, 2025 at 2:36 PM Nhat Pham <nphamcs@gmail.com> wrote: > > On Mon, Jul 7, 2025 at 1:13 PM Kanchana P Sridhar > <kanchana.p.sridhar@intel.com> wrote: > > > > This patch uses IS_ERR_OR_NULL() in zswap_cpu_comp_prepare() to check > > for valid acomp/req, thereby making it consistent with acomp_ctx_dealloc(). > > Is acomp_ctx_dealloc() introduced by the other patch series? I can't > seem to find it. Ah nvm I found it in the other patch! > > Also, why IS_ERR_OR_NULL() in the first place. Can > crypto_alloc_acomp_node() returns NULL? >
© 2016 - 2026 Red Hat, Inc.