[PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL() to check acomp_ctx resources.

Kanchana P Sridhar posted 2 patches 3 months ago
[PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL() to check acomp_ctx resources.
Posted by Kanchana P Sridhar 3 months ago
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
Re: [PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL() to check acomp_ctx resources.
Posted by Nhat Pham 3 months ago
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
>
RE: [PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL() to check acomp_ctx resources.
Posted by Sridhar, Kanchana P 3 months ago
> -----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
> >
Re: [PATCH v1 2/2] mm: zswap: Consistently use IS_ERR_OR_NULL() to check acomp_ctx resources.
Posted by Nhat Pham 3 months ago
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?
>