All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	John Fastabend <john.fastabend@gmail.com>,
	Andrii Nakryiko <andrii@kernel.org>,
	Martin KaFai Lau <martin.lau@linux.dev>,
	Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
	Yonghong Song <yonghong.song@linux.dev>,
	KP Singh <kpsingh@kernel.org>,
	Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>,
	Simon Sundberg <simon.sundberg@kau.se>,
	bpf@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH bpf 3/4] selftests/bpf: Provide a generic [un]load_module helper
Date: Tue, 8 Oct 2024 19:54:30 +0200	[thread overview]
Message-ID: <ZwVx1qFvDQXuUbIz@krava> (raw)
In-Reply-To: <20241008-fix-kfunc-btf-caching-for-modules-v1-3-dfefd9aa4318@redhat.com>

On Tue, Oct 08, 2024 at 12:35:18PM +0200, Toke Høiland-Jørgensen wrote:
> From: Simon Sundberg <simon.sundberg@kau.se>
> 
> Generalize the previous [un]load_bpf_testmod() helpers (in
> testing_helpers.c) to the more generic [un]load_module(), which can
> load an arbitrary kernel module by name. This allows future selftests
> to more easily load custom kernel modules other than bpf_testmod.ko.
> Refactor [un]load_bpf_testmod() to wrap this new helper.
> 
> Signed-off-by: Simon Sundberg <simon.sundberg@kau.se>
> Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>

Acked-by: Jiri Olsa <jolsa@kernel.org>

jirka

> ---
>  tools/testing/selftests/bpf/testing_helpers.c | 34 +++++++++++++++++----------
>  tools/testing/selftests/bpf/testing_helpers.h |  2 ++
>  2 files changed, 24 insertions(+), 12 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/testing_helpers.c b/tools/testing/selftests/bpf/testing_helpers.c
> index d3c3c3a24150f99abd13ecb7d7b11d8f7351560d..5e9f16683be5460b1a295fb9754df761cbd090ea 100644
> --- a/tools/testing/selftests/bpf/testing_helpers.c
> +++ b/tools/testing/selftests/bpf/testing_helpers.c
> @@ -367,7 +367,7 @@ int delete_module(const char *name, int flags)
>  	return syscall(__NR_delete_module, name, flags);
>  }
>  
> -int unload_bpf_testmod(bool verbose)
> +int unload_module(const char *name, bool verbose)
>  {
>  	int ret, cnt = 0;
>  
> @@ -375,11 +375,11 @@ int unload_bpf_testmod(bool verbose)
>  		fprintf(stdout, "Failed to trigger kernel-side RCU sync!\n");
>  
>  	for (;;) {
> -		ret = delete_module("bpf_testmod", 0);
> +		ret = delete_module(name, 0);
>  		if (!ret || errno != EAGAIN)
>  			break;
>  		if (++cnt > 10000) {
> -			fprintf(stdout, "Unload of bpf_testmod timed out\n");
> +			fprintf(stdout, "Unload of %s timed out\n", name);
>  			break;
>  		}
>  		usleep(100);
> @@ -388,41 +388,51 @@ int unload_bpf_testmod(bool verbose)
>  	if (ret) {
>  		if (errno == ENOENT) {
>  			if (verbose)
> -				fprintf(stdout, "bpf_testmod.ko is already unloaded.\n");
> +				fprintf(stdout, "%s.ko is already unloaded.\n", name);
>  			return -1;
>  		}
> -		fprintf(stdout, "Failed to unload bpf_testmod.ko from kernel: %d\n", -errno);
> +		fprintf(stdout, "Failed to unload %s.ko from kernel: %d\n", name, -errno);
>  		return -1;
>  	}
>  	if (verbose)
> -		fprintf(stdout, "Successfully unloaded bpf_testmod.ko.\n");
> +		fprintf(stdout, "Successfully unloaded %s.ko.\n", name);
>  	return 0;
>  }
>  
> -int load_bpf_testmod(bool verbose)
> +int load_module(const char *path, bool verbose)
>  {
>  	int fd;
>  
>  	if (verbose)
> -		fprintf(stdout, "Loading bpf_testmod.ko...\n");
> +		fprintf(stdout, "Loading %s...\n", path);
>  
> -	fd = open("bpf_testmod.ko", O_RDONLY);
> +	fd = open(path, O_RDONLY);
>  	if (fd < 0) {
> -		fprintf(stdout, "Can't find bpf_testmod.ko kernel module: %d\n", -errno);
> +		fprintf(stdout, "Can't find %s kernel module: %d\n", path, -errno);
>  		return -ENOENT;
>  	}
>  	if (finit_module(fd, "", 0)) {
> -		fprintf(stdout, "Failed to load bpf_testmod.ko into the kernel: %d\n", -errno);
> +		fprintf(stdout, "Failed to load %s into the kernel: %d\n", path, -errno);
>  		close(fd);
>  		return -EINVAL;
>  	}
>  	close(fd);
>  
>  	if (verbose)
> -		fprintf(stdout, "Successfully loaded bpf_testmod.ko.\n");
> +		fprintf(stdout, "Successfully loaded %s.\n", path);
>  	return 0;
>  }
>  
> +int unload_bpf_testmod(bool verbose)
> +{
> +	return unload_module("bpf_testmod", verbose);
> +}
> +
> +int load_bpf_testmod(bool verbose)
> +{
> +	return load_module("bpf_testmod.ko", verbose);
> +}
> +
>  /*
>   * Trigger synchronize_rcu() in kernel.
>   */
> diff --git a/tools/testing/selftests/bpf/testing_helpers.h b/tools/testing/selftests/bpf/testing_helpers.h
> index d55f6ab124338ccab33bc120ca7e3baa18264aea..46d7f7089f636b0d2476859fd0fa5e1c4b305419 100644
> --- a/tools/testing/selftests/bpf/testing_helpers.h
> +++ b/tools/testing/selftests/bpf/testing_helpers.h
> @@ -38,6 +38,8 @@ int unload_bpf_testmod(bool verbose);
>  int kern_sync_rcu(void);
>  int finit_module(int fd, const char *param_values, int flags);
>  int delete_module(const char *name, int flags);
> +int load_module(const char *path, bool verbose);
> +int unload_module(const char *name, bool verbose);
>  
>  static inline __u64 get_time_ns(void)
>  {
> 
> -- 
> 2.47.0
> 

  reply	other threads:[~2024-10-08 17:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-08 10:35 [PATCH bpf 0/4] Fix caching of BTF for kfuncs in the verifier Toke Høiland-Jørgensen
2024-10-08 10:35 ` [PATCH bpf 1/4] bpf: fix kfunc btf caching for modules Toke Høiland-Jørgensen
2024-10-08 17:46   ` Jiri Olsa
2024-10-09  1:43   ` Kumar Kartikeya Dwivedi
2024-10-08 10:35 ` [PATCH bpf 2/4] selftests/bpf: Consolidate kernel modules into common directory Toke Høiland-Jørgensen
2024-10-08 17:46   ` Jiri Olsa
2024-10-08 17:55     ` Toke Høiland-Jørgensen
2024-10-08 18:18       ` Jiri Olsa
2024-10-08 18:23         ` Toke Høiland-Jørgensen
2024-10-09  2:08   ` Alexei Starovoitov
2024-10-09  7:39     ` Toke Høiland-Jørgensen
2024-10-09 23:36       ` Alexei Starovoitov
2024-10-10  8:59         ` Toke Høiland-Jørgensen
2024-10-08 10:35 ` [PATCH bpf 3/4] selftests/bpf: Provide a generic [un]load_module helper Toke Høiland-Jørgensen
2024-10-08 17:54   ` Jiri Olsa [this message]
2024-10-09  1:44   ` Kumar Kartikeya Dwivedi
2024-10-08 10:35 ` [PATCH bpf 4/4] selftests/bpf: Add test for kfunc module order Toke Høiland-Jørgensen
2024-10-08 17:46   ` Jiri Olsa
2024-10-08 18:05     ` Toke Høiland-Jørgensen
2024-10-09  2:09   ` Kumar Kartikeya Dwivedi

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=ZwVx1qFvDQXuUbIz@krava \
    --to=olsajiri@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=haoluo@google.com \
    --cc=john.fastabend@gmail.com \
    --cc=kpsingh@kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=memxor@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=sdf@fomichev.me \
    --cc=simon.sundberg@kau.se \
    --cc=song@kernel.org \
    --cc=toke@redhat.com \
    --cc=yonghong.song@linux.dev \
    /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.