All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Berg <benjamin@sipsolutions.net>
To: David Gow <davidgow@google.com>,
	Matti Vaittinen <mazziesaccount@gmail.com>,
	Maxime Ripard <maxime@cerno.tech>,
	Brendan Higgins <brendan.higgins@linux.dev>,
	Stephen Boyd <sboyd@kernel.org>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Daniel Latypov <dlatypov@google.com>, Rae Moar <rmoar@google.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Jonathan Cameron <jic23@kernel.org>,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	kunit-dev@googlegroups.com
Subject: Re: [RFC PATCH v2 3/3] kunit: kmalloc_array: Use kunit_add_action()
Date: Tue, 04 Apr 2023 19:58:58 +0200	[thread overview]
Message-ID: <fbfaed01ac773b72a5a79f9a514c646ac21d5583.camel@sipsolutions.net> (raw)
In-Reply-To: <20230331080411.981038-4-davidgow@google.com>

Hi,

On Fri, 2023-03-31 at 16:04 +0800, 'David Gow' via KUnit Development wrote:
> The kunit_add_action() function is much simpler and cleaner to use that
> the full KUnit resource API for simple things like the
> kunit_kmalloc_array() functionality.
> 
> Replacing it allows us to get rid of a number of helper functions, and
> leaves us with no uses of kunit_alloc_resource(), which has some
> usability problems and is going to have its behaviour modified in an
> upcoming patch.
> 
> Note that we need to use kunit_defer_trigger_all() to implement
> kunit_kfree().

Just a nitpick: kunit_defer_trigger_all does not exist in the new patch
anymore. I guess this should be kunit_release_action.

Benjamin

> 
> Signed-off-by: David Gow <davidgow@google.com>
> ---
>  lib/kunit/test.c | 48 ++++++++----------------------------------------
>  1 file changed, 8 insertions(+), 40 deletions(-)
> 
> diff --git a/lib/kunit/test.c b/lib/kunit/test.c
> index e2910b261112..ec45c8863f04 100644
> --- a/lib/kunit/test.c
> +++ b/lib/kunit/test.c
> @@ -712,58 +712,26 @@ static struct notifier_block kunit_mod_nb = {
>  };
>  #endif
>  
> -struct kunit_kmalloc_array_params {
> -       size_t n;
> -       size_t size;
> -       gfp_t gfp;
> -};
> -
> -static int kunit_kmalloc_array_init(struct kunit_resource *res, void *context)
> +void *kunit_kmalloc_array(struct kunit *test, size_t n, size_t size, gfp_t gfp)
>  {
> -       struct kunit_kmalloc_array_params *params = context;
> -
> -       res->data = kmalloc_array(params->n, params->size, params->gfp);
> -       if (!res->data)
> -               return -ENOMEM;
> -
> -       return 0;
> -}
> +       void *data;
>  
> -static void kunit_kmalloc_array_free(struct kunit_resource *res)
> -{
> -       kfree(res->data);
> -}
> +       data = kmalloc_array(n, size, gfp);
>  
> -void *kunit_kmalloc_array(struct kunit *test, size_t n, size_t size, gfp_t gfp)
> -{
> -       struct kunit_kmalloc_array_params params = {
> -               .size = size,
> -               .n = n,
> -               .gfp = gfp
> -       };
> +       if (!data)
> +               return NULL;
>  
> -       return kunit_alloc_resource(test,
> -                                   kunit_kmalloc_array_init,
> -                                   kunit_kmalloc_array_free,
> -                                   gfp,
> -                                   &params);
> +       kunit_add_action(test, (kunit_defer_function_t)kfree, data, gfp);
> +       return data;
>  }
>  EXPORT_SYMBOL_GPL(kunit_kmalloc_array);
>  
> -static inline bool kunit_kfree_match(struct kunit *test,
> -                                    struct kunit_resource *res, void *match_data)
> -{
> -       /* Only match resources allocated with kunit_kmalloc() and friends. */
> -       return res->free == kunit_kmalloc_array_free && res->data == match_data;
> -}
> -
>  void kunit_kfree(struct kunit *test, const void *ptr)
>  {
>         if (!ptr)
>                 return;
>  
> -       if (kunit_destroy_resource(test, kunit_kfree_match, (void *)ptr))
> -               KUNIT_FAIL(test, "kunit_kfree: %px already freed or not allocated by kunit", ptr);
> +       kunit_release_action(test, (kunit_defer_function_t)kfree, (void *)ptr);
>  }
>  EXPORT_SYMBOL_GPL(kunit_kfree);
>  
> -- 
> 2.40.0.348.gf938b09366-goog
> 


  reply	other threads:[~2023-04-04 17:59 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-31  8:04 [RFC PATCH v2 0/3] kunit: Deferred action helpers David Gow
2023-03-31  8:04 ` [RFC PATCH v2 1/3] kunit: Add kunit_add_action() to defer a call until test exit David Gow
2023-03-31 10:52   ` kernel test robot
2023-03-31 13:57   ` kernel test robot
2023-04-04 13:32   ` Maxime Ripard
2023-04-04 17:55     ` Benjamin Berg
2023-04-05  8:09       ` David Gow
2023-04-05  7:47     ` David Gow
2023-04-14  9:53       ` Maxime Ripard
2023-04-14 10:01   ` maxime
2023-04-14 11:00     ` Benjamin Berg
2023-04-14 11:33       ` Maxime Ripard
2023-04-15  8:48       ` David Gow
2023-04-15  8:42     ` David Gow
2023-04-17 11:07       ` Maxime Ripard
2023-03-31  8:04 ` [RFC PATCH v2 2/3] kunit: executor_test: Use kunit_add_action() David Gow
2023-03-31 12:35   ` kernel test robot
2023-03-31  8:04 ` [RFC PATCH v2 3/3] kunit: kmalloc_array: " David Gow
2023-04-04 17:58   ` Benjamin Berg [this message]
2023-04-05  7:48     ` David Gow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fbfaed01ac773b72a5a79f9a514c646ac21d5583.camel@sipsolutions.net \
    --to=benjamin@sipsolutions.net \
    --cc=brendan.higgins@linux.dev \
    --cc=davidgow@google.com \
    --cc=dlatypov@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jic23@kernel.org \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maxime@cerno.tech \
    --cc=mazziesaccount@gmail.com \
    --cc=rafael@kernel.org \
    --cc=rmoar@google.com \
    --cc=sboyd@kernel.org \
    --cc=skhan@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.