diff mbox series

[bpf,v4,3/3] libbpf, selftests/bpf: pass array of u64 values in kprobe_multi.addrs

Message ID 0f500d9a17dcc1270c581f0b722be8f9d7ce781d.1652982525.git.esyr@redhat.com (mailing list archive)
State Changes Requested
Delegated to: BPF
Headers show
Series Fix kprobe_multi interface issues for 5.18 | expand

Checks

Context Check Description
bpf/vmtest-bpf-PR fail PR summary
bpf/vmtest-bpf-VM_Test-1 fail Logs for Kernel LATEST on ubuntu-latest with gcc
bpf/vmtest-bpf-VM_Test-2 fail Logs for Kernel LATEST on ubuntu-latest with llvm-15
netdev/tree_selection success Clearly marked for bpf
netdev/fixes_present success Fixes tag present in non-next series
netdev/subject_prefix success Link
netdev/cover_letter success Series has a cover letter
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers success CCed 14 of 14 maintainers
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch warning CHECK: No space is necessary after a cast
netdev/kdoc success Errors and warnings before: 46 this patch: 46
netdev/source_inline success Was 0 now: 0
bpf/vmtest-bpf-VM_Test-3 fail Logs for Kernel LATEST on z15 with gcc

Commit Message

Eugene Syromiatnikov May 19, 2022, 6:14 p.m. UTC
With the interface as defined, it is impossible to pass 64-bit kernel
addresses from a 32-bit userspace process in BPF_LINK_TYPE_KPROBE_MULTI,
which severly limits the useability of the interface, change the API
to accept an array of u64 values instead of (kernel? user?) longs.
This patch implements the user space part of the change (without
the relevant kernel changes, since, as of now, an attempt to add
kprobe_multi link will fail with -EOPNOTSUPP), to avoid changing
the interface after a release.

Fixes: 5117c26e877352bc ("libbpf: Add bpf_link_create support for multi kprobes")
Fixes: ddc6b04989eb0993 ("libbpf: Add bpf_program__attach_kprobe_multi_opts function")
Fixes: f7a11eeccb111854 ("selftests/bpf: Add kprobe_multi attach test")
Fixes: 9271a0c7ae7a9147 ("selftests/bpf: Add attach test for bpf_program__attach_kprobe_multi_opts")
Fixes: 2c6401c966ae1fbe ("selftests/bpf: Add kprobe_multi bpf_cookie test")
Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
---
 tools/lib/bpf/bpf.h                                        | 2 +-
 tools/lib/bpf/libbpf.c                                     | 8 ++++----
 tools/lib/bpf/libbpf.h                                     | 2 +-
 tools/testing/selftests/bpf/prog_tests/bpf_cookie.c        | 2 +-
 tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 8 ++++----
 5 files changed, 11 insertions(+), 11 deletions(-)

Comments

Yonghong Song May 19, 2022, 7:43 p.m. UTC | #1
On 5/19/22 11:14 AM, Eugene Syromiatnikov wrote:
> With the interface as defined, it is impossible to pass 64-bit kernel
> addresses from a 32-bit userspace process in BPF_LINK_TYPE_KPROBE_MULTI,
> which severly limits the useability of the interface, change the API
> to accept an array of u64 values instead of (kernel? user?) longs.
> This patch implements the user space part of the change (without
> the relevant kernel changes, since, as of now, an attempt to add
> kprobe_multi link will fail with -EOPNOTSUPP), to avoid changing
> the interface after a release.
> 
> Fixes: 5117c26e877352bc ("libbpf: Add bpf_link_create support for multi kprobes")
> Fixes: ddc6b04989eb0993 ("libbpf: Add bpf_program__attach_kprobe_multi_opts function")
> Fixes: f7a11eeccb111854 ("selftests/bpf: Add kprobe_multi attach test")
> Fixes: 9271a0c7ae7a9147 ("selftests/bpf: Add attach test for bpf_program__attach_kprobe_multi_opts")
> Fixes: 2c6401c966ae1fbe ("selftests/bpf: Add kprobe_multi bpf_cookie test")
> Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
> ---
>   tools/lib/bpf/bpf.h                                        | 2 +-
>   tools/lib/bpf/libbpf.c                                     | 8 ++++----
>   tools/lib/bpf/libbpf.h                                     | 2 +-
>   tools/testing/selftests/bpf/prog_tests/bpf_cookie.c        | 2 +-
>   tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 8 ++++----
>   5 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> index f4b4afb..f677602 100644
> --- a/tools/lib/bpf/bpf.h
> +++ b/tools/lib/bpf/bpf.h
> @@ -417,7 +417,7 @@ struct bpf_link_create_opts {
>   			__u32 flags;
>   			__u32 cnt;
>   			const char **syms;
> -			const unsigned long *addrs;
> +			const __u64 *addrs;

Patch 2 and 3 will prevent supporting 64-bit kernel, 32-bit userspace 
for kprobe_multi. So effectively, kprobe_multi only supports
64-bit kernel and 64-bit user space.
This is definitely an option, but it would be great
if other people can chime in as well for whether this choice
is best or not.

>   			const __u64 *cookies;
>   		} kprobe_multi;
>   	};
> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> index 809fe20..03a14a6 100644
> --- a/tools/lib/bpf/libbpf.c
> +++ b/tools/lib/bpf/libbpf.c
> @@ -10279,7 +10279,7 @@ static bool glob_match(const char *str, const char *pat)
>   
>   struct kprobe_multi_resolve {
>   	const char *pattern;
> -	unsigned long *addrs;
> +	__u64 *addrs;
>   	size_t cap;
>   	size_t cnt;
>   };
> @@ -10294,12 +10294,12 @@ resolve_kprobe_multi_cb(unsigned long long sym_addr, char sym_type,
>   	if (!glob_match(sym_name, res->pattern))
>   		return 0;
>   
> -	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(unsigned long),
> +	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(__u64),
>   				res->cnt + 1);
>   	if (err)
>   		return err;
>   
> -	res->addrs[res->cnt++] = (unsigned long) sym_addr;
> +	res->addrs[res->cnt++] = sym_addr;
>   	return 0;
>   }
>   
> @@ -10314,7 +10314,7 @@ bpf_program__attach_kprobe_multi_opts(const struct bpf_program *prog,
>   	};
>   	struct bpf_link *link = NULL;
>   	char errmsg[STRERR_BUFSIZE];
> -	const unsigned long *addrs;
> +	const __u64 *addrs;
>   	int err, link_fd, prog_fd;
>   	const __u64 *cookies;
>   	const char **syms;
> diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
> index 05dde85..ec1cb61 100644
> --- a/tools/lib/bpf/libbpf.h
> +++ b/tools/lib/bpf/libbpf.h
> @@ -431,7 +431,7 @@ struct bpf_kprobe_multi_opts {
>   	/* array of function symbols to attach */
>   	const char **syms;
>   	/* array of function addresses to attach */
> -	const unsigned long *addrs;
> +	const __u64 *addrs;
>   	/* array of user-provided values fetchable through bpf_get_attach_cookie */
>   	const __u64 *cookies;
>   	/* number of elements in syms/addrs/cookies arrays */
> diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> index 923a613..5aa482a 100644
> --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> @@ -137,7 +137,7 @@ static void kprobe_multi_link_api_subtest(void)
>   	cookies[6] = 7;
>   	cookies[7] = 8;
>   
> -	opts.kprobe_multi.addrs = (const unsigned long *) &addrs;
> +	opts.kprobe_multi.addrs = (const __u64 *) &addrs;
>   	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
>   	opts.kprobe_multi.cookies = (const __u64 *) &cookies;
>   	prog_fd = bpf_program__fd(skel->progs.test_kprobe);
> diff --git a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> index b9876b5..fbf4cf2 100644
> --- a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> +++ b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> @@ -105,7 +105,7 @@ static void test_link_api_addrs(void)
>   	GET_ADDR("bpf_fentry_test7", addrs[6]);
>   	GET_ADDR("bpf_fentry_test8", addrs[7]);
>   
> -	opts.kprobe_multi.addrs = (const unsigned long*) addrs;
> +	opts.kprobe_multi.addrs = (const __u64 *) addrs;
>   	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
>   	test_link_api(&opts);
>   }
> @@ -183,7 +183,7 @@ static void test_attach_api_addrs(void)
>   	GET_ADDR("bpf_fentry_test7", addrs[6]);
>   	GET_ADDR("bpf_fentry_test8", addrs[7]);
>   
> -	opts.addrs = (const unsigned long *) addrs;
> +	opts.addrs = (const __u64 *) addrs;
>   	opts.cnt = ARRAY_SIZE(addrs);
>   	test_attach_api(NULL, &opts);
>   }
> @@ -241,7 +241,7 @@ static void test_attach_api_fails(void)
>   		goto cleanup;
>   
>   	/* fail_2 - both addrs and syms set */
> -	opts.addrs = (const unsigned long *) addrs;
> +	opts.addrs = (const __u64 *) addrs;
>   	opts.syms = syms;
>   	opts.cnt = ARRAY_SIZE(syms);
>   	opts.cookies = NULL;
> @@ -255,7 +255,7 @@ static void test_attach_api_fails(void)
>   		goto cleanup;
>   
>   	/* fail_3 - pattern and addrs set */
> -	opts.addrs = (const unsigned long *) addrs;
> +	opts.addrs = (const __u64 *) addrs;
>   	opts.syms = NULL;
>   	opts.cnt = ARRAY_SIZE(syms);
>   	opts.cookies = NULL;
Jiri Olsa May 19, 2022, 8:15 p.m. UTC | #2
On Thu, May 19, 2022 at 12:43:18PM -0700, Yonghong Song wrote:
> 
> 
> On 5/19/22 11:14 AM, Eugene Syromiatnikov wrote:
> > With the interface as defined, it is impossible to pass 64-bit kernel
> > addresses from a 32-bit userspace process in BPF_LINK_TYPE_KPROBE_MULTI,
> > which severly limits the useability of the interface, change the API
> > to accept an array of u64 values instead of (kernel? user?) longs.
> > This patch implements the user space part of the change (without
> > the relevant kernel changes, since, as of now, an attempt to add
> > kprobe_multi link will fail with -EOPNOTSUPP), to avoid changing
> > the interface after a release.
> > 
> > Fixes: 5117c26e877352bc ("libbpf: Add bpf_link_create support for multi kprobes")
> > Fixes: ddc6b04989eb0993 ("libbpf: Add bpf_program__attach_kprobe_multi_opts function")
> > Fixes: f7a11eeccb111854 ("selftests/bpf: Add kprobe_multi attach test")
> > Fixes: 9271a0c7ae7a9147 ("selftests/bpf: Add attach test for bpf_program__attach_kprobe_multi_opts")
> > Fixes: 2c6401c966ae1fbe ("selftests/bpf: Add kprobe_multi bpf_cookie test")
> > Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
> > ---
> >   tools/lib/bpf/bpf.h                                        | 2 +-
> >   tools/lib/bpf/libbpf.c                                     | 8 ++++----
> >   tools/lib/bpf/libbpf.h                                     | 2 +-
> >   tools/testing/selftests/bpf/prog_tests/bpf_cookie.c        | 2 +-
> >   tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 8 ++++----
> >   5 files changed, 11 insertions(+), 11 deletions(-)
> > 
> > diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> > index f4b4afb..f677602 100644
> > --- a/tools/lib/bpf/bpf.h
> > +++ b/tools/lib/bpf/bpf.h
> > @@ -417,7 +417,7 @@ struct bpf_link_create_opts {
> >   			__u32 flags;
> >   			__u32 cnt;
> >   			const char **syms;
> > -			const unsigned long *addrs;
> > +			const __u64 *addrs;
> 
> Patch 2 and 3 will prevent supporting 64-bit kernel, 32-bit userspace for
> kprobe_multi. So effectively, kprobe_multi only supports
> 64-bit kernel and 64-bit user space.
> This is definitely an option, but it would be great
> if other people can chime in as well for whether this choice
> is best or not.

IIUC patch 3 is preparation for kernel change that will enable 32 bit
userspace and 64 bit kernel, and Eugene will send it later

sounds good to me

jirka

> 
> >   			const __u64 *cookies;
> >   		} kprobe_multi;
> >   	};
> > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> > index 809fe20..03a14a6 100644
> > --- a/tools/lib/bpf/libbpf.c
> > +++ b/tools/lib/bpf/libbpf.c
> > @@ -10279,7 +10279,7 @@ static bool glob_match(const char *str, const char *pat)
> >   struct kprobe_multi_resolve {
> >   	const char *pattern;
> > -	unsigned long *addrs;
> > +	__u64 *addrs;
> >   	size_t cap;
> >   	size_t cnt;
> >   };
> > @@ -10294,12 +10294,12 @@ resolve_kprobe_multi_cb(unsigned long long sym_addr, char sym_type,
> >   	if (!glob_match(sym_name, res->pattern))
> >   		return 0;
> > -	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(unsigned long),
> > +	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(__u64),
> >   				res->cnt + 1);
> >   	if (err)
> >   		return err;
> > -	res->addrs[res->cnt++] = (unsigned long) sym_addr;
> > +	res->addrs[res->cnt++] = sym_addr;
> >   	return 0;
> >   }
> > @@ -10314,7 +10314,7 @@ bpf_program__attach_kprobe_multi_opts(const struct bpf_program *prog,
> >   	};
> >   	struct bpf_link *link = NULL;
> >   	char errmsg[STRERR_BUFSIZE];
> > -	const unsigned long *addrs;
> > +	const __u64 *addrs;
> >   	int err, link_fd, prog_fd;
> >   	const __u64 *cookies;
> >   	const char **syms;
> > diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
> > index 05dde85..ec1cb61 100644
> > --- a/tools/lib/bpf/libbpf.h
> > +++ b/tools/lib/bpf/libbpf.h
> > @@ -431,7 +431,7 @@ struct bpf_kprobe_multi_opts {
> >   	/* array of function symbols to attach */
> >   	const char **syms;
> >   	/* array of function addresses to attach */
> > -	const unsigned long *addrs;
> > +	const __u64 *addrs;
> >   	/* array of user-provided values fetchable through bpf_get_attach_cookie */
> >   	const __u64 *cookies;
> >   	/* number of elements in syms/addrs/cookies arrays */
> > diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > index 923a613..5aa482a 100644
> > --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
> > @@ -137,7 +137,7 @@ static void kprobe_multi_link_api_subtest(void)
> >   	cookies[6] = 7;
> >   	cookies[7] = 8;
> > -	opts.kprobe_multi.addrs = (const unsigned long *) &addrs;
> > +	opts.kprobe_multi.addrs = (const __u64 *) &addrs;
> >   	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
> >   	opts.kprobe_multi.cookies = (const __u64 *) &cookies;
> >   	prog_fd = bpf_program__fd(skel->progs.test_kprobe);
> > diff --git a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> > index b9876b5..fbf4cf2 100644
> > --- a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> > +++ b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
> > @@ -105,7 +105,7 @@ static void test_link_api_addrs(void)
> >   	GET_ADDR("bpf_fentry_test7", addrs[6]);
> >   	GET_ADDR("bpf_fentry_test8", addrs[7]);
> > -	opts.kprobe_multi.addrs = (const unsigned long*) addrs;
> > +	opts.kprobe_multi.addrs = (const __u64 *) addrs;
> >   	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
> >   	test_link_api(&opts);
> >   }
> > @@ -183,7 +183,7 @@ static void test_attach_api_addrs(void)
> >   	GET_ADDR("bpf_fentry_test7", addrs[6]);
> >   	GET_ADDR("bpf_fentry_test8", addrs[7]);
> > -	opts.addrs = (const unsigned long *) addrs;
> > +	opts.addrs = (const __u64 *) addrs;
> >   	opts.cnt = ARRAY_SIZE(addrs);
> >   	test_attach_api(NULL, &opts);
> >   }
> > @@ -241,7 +241,7 @@ static void test_attach_api_fails(void)
> >   		goto cleanup;
> >   	/* fail_2 - both addrs and syms set */
> > -	opts.addrs = (const unsigned long *) addrs;
> > +	opts.addrs = (const __u64 *) addrs;
> >   	opts.syms = syms;
> >   	opts.cnt = ARRAY_SIZE(syms);
> >   	opts.cookies = NULL;
> > @@ -255,7 +255,7 @@ static void test_attach_api_fails(void)
> >   		goto cleanup;
> >   	/* fail_3 - pattern and addrs set */
> > -	opts.addrs = (const unsigned long *) addrs;
> > +	opts.addrs = (const __u64 *) addrs;
> >   	opts.syms = NULL;
> >   	opts.cnt = ARRAY_SIZE(syms);
> >   	opts.cookies = NULL;
diff mbox series

Patch

diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index f4b4afb..f677602 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -417,7 +417,7 @@  struct bpf_link_create_opts {
 			__u32 flags;
 			__u32 cnt;
 			const char **syms;
-			const unsigned long *addrs;
+			const __u64 *addrs;
 			const __u64 *cookies;
 		} kprobe_multi;
 	};
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 809fe20..03a14a6 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -10279,7 +10279,7 @@  static bool glob_match(const char *str, const char *pat)
 
 struct kprobe_multi_resolve {
 	const char *pattern;
-	unsigned long *addrs;
+	__u64 *addrs;
 	size_t cap;
 	size_t cnt;
 };
@@ -10294,12 +10294,12 @@  resolve_kprobe_multi_cb(unsigned long long sym_addr, char sym_type,
 	if (!glob_match(sym_name, res->pattern))
 		return 0;
 
-	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(unsigned long),
+	err = libbpf_ensure_mem((void **) &res->addrs, &res->cap, sizeof(__u64),
 				res->cnt + 1);
 	if (err)
 		return err;
 
-	res->addrs[res->cnt++] = (unsigned long) sym_addr;
+	res->addrs[res->cnt++] = sym_addr;
 	return 0;
 }
 
@@ -10314,7 +10314,7 @@  bpf_program__attach_kprobe_multi_opts(const struct bpf_program *prog,
 	};
 	struct bpf_link *link = NULL;
 	char errmsg[STRERR_BUFSIZE];
-	const unsigned long *addrs;
+	const __u64 *addrs;
 	int err, link_fd, prog_fd;
 	const __u64 *cookies;
 	const char **syms;
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index 05dde85..ec1cb61 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -431,7 +431,7 @@  struct bpf_kprobe_multi_opts {
 	/* array of function symbols to attach */
 	const char **syms;
 	/* array of function addresses to attach */
-	const unsigned long *addrs;
+	const __u64 *addrs;
 	/* array of user-provided values fetchable through bpf_get_attach_cookie */
 	const __u64 *cookies;
 	/* number of elements in syms/addrs/cookies arrays */
diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
index 923a613..5aa482a 100644
--- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
+++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
@@ -137,7 +137,7 @@  static void kprobe_multi_link_api_subtest(void)
 	cookies[6] = 7;
 	cookies[7] = 8;
 
-	opts.kprobe_multi.addrs = (const unsigned long *) &addrs;
+	opts.kprobe_multi.addrs = (const __u64 *) &addrs;
 	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
 	opts.kprobe_multi.cookies = (const __u64 *) &cookies;
 	prog_fd = bpf_program__fd(skel->progs.test_kprobe);
diff --git a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
index b9876b5..fbf4cf2 100644
--- a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
+++ b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
@@ -105,7 +105,7 @@  static void test_link_api_addrs(void)
 	GET_ADDR("bpf_fentry_test7", addrs[6]);
 	GET_ADDR("bpf_fentry_test8", addrs[7]);
 
-	opts.kprobe_multi.addrs = (const unsigned long*) addrs;
+	opts.kprobe_multi.addrs = (const __u64 *) addrs;
 	opts.kprobe_multi.cnt = ARRAY_SIZE(addrs);
 	test_link_api(&opts);
 }
@@ -183,7 +183,7 @@  static void test_attach_api_addrs(void)
 	GET_ADDR("bpf_fentry_test7", addrs[6]);
 	GET_ADDR("bpf_fentry_test8", addrs[7]);
 
-	opts.addrs = (const unsigned long *) addrs;
+	opts.addrs = (const __u64 *) addrs;
 	opts.cnt = ARRAY_SIZE(addrs);
 	test_attach_api(NULL, &opts);
 }
@@ -241,7 +241,7 @@  static void test_attach_api_fails(void)
 		goto cleanup;
 
 	/* fail_2 - both addrs and syms set */
-	opts.addrs = (const unsigned long *) addrs;
+	opts.addrs = (const __u64 *) addrs;
 	opts.syms = syms;
 	opts.cnt = ARRAY_SIZE(syms);
 	opts.cookies = NULL;
@@ -255,7 +255,7 @@  static void test_attach_api_fails(void)
 		goto cleanup;
 
 	/* fail_3 - pattern and addrs set */
-	opts.addrs = (const unsigned long *) addrs;
+	opts.addrs = (const __u64 *) addrs;
 	opts.syms = NULL;
 	opts.cnt = ARRAY_SIZE(syms);
 	opts.cookies = NULL;