All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs
@ 2020-11-26 17:02 Florent Revest
  2020-11-26 17:02 ` [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie Florent Revest
  2020-11-27  8:08 ` [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Yonghong Song
  0 siblings, 2 replies; 6+ messages in thread
From: Florent Revest @ 2020-11-26 17:02 UTC (permalink / raw)
  To: bpf; +Cc: ast, daniel, andrii, kpsingh, revest, linux-kernel

This creates a new helper proto because the existing
bpf_get_socket_cookie_sock_proto has a ARG_PTR_TO_CTX argument and only
works for BPF programs where the context is a sock.

This helper could also be useful to other BPF program types such as LSM.

Signed-off-by: Florent Revest <revest@google.com>
---
 kernel/trace/bpf_trace.c | 4 ++++
 net/core/filter.c        | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index d255bc9b2bfa..14ad96579813 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -1725,6 +1725,8 @@ raw_tp_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
 	}
 }
 
+extern const struct bpf_func_proto bpf_get_socket_cookie_sock_tracing_proto;
+
 const struct bpf_func_proto *
 tracing_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
 {
@@ -1748,6 +1750,8 @@ tracing_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
 		return &bpf_sk_storage_get_tracing_proto;
 	case BPF_FUNC_sk_storage_delete:
 		return &bpf_sk_storage_delete_tracing_proto;
+	case BPF_FUNC_get_socket_cookie:
+		return &bpf_get_socket_cookie_sock_tracing_proto;
 #endif
 	case BPF_FUNC_seq_printf:
 		return prog->expected_attach_type == BPF_TRACE_ITER ?
diff --git a/net/core/filter.c b/net/core/filter.c
index 2ca5eecebacf..177c4e5e529d 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -4631,6 +4631,13 @@ static const struct bpf_func_proto bpf_get_socket_cookie_sock_proto = {
 	.arg1_type	= ARG_PTR_TO_CTX,
 };
 
+const struct bpf_func_proto bpf_get_socket_cookie_sock_tracing_proto = {
+	.func		= bpf_get_socket_cookie_sock,
+	.gpl_only	= false,
+	.ret_type	= RET_INTEGER,
+	.arg1_type      = ARG_PTR_TO_BTF_ID_SOCK_COMMON,
+};
+
 BPF_CALL_1(bpf_get_socket_cookie_sock_ops, struct bpf_sock_ops_kern *, ctx)
 {
 	return __sock_gen_cookie(ctx->sk);
-- 
2.29.2.454.gaff20da3a2-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie
  2020-11-26 17:02 [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Florent Revest
@ 2020-11-26 17:02 ` Florent Revest
  2020-11-27  7:56   ` Yonghong Song
  2020-12-02  1:01   ` Andrii Nakryiko
  2020-11-27  8:08 ` [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Yonghong Song
  1 sibling, 2 replies; 6+ messages in thread
From: Florent Revest @ 2020-11-26 17:02 UTC (permalink / raw)
  To: bpf; +Cc: ast, daniel, andrii, kpsingh, revest, linux-kernel

This builds up on the existing socket cookie test which checks whether
the bpf_get_socket_cookie helpers provide the same value in
cgroup/connect6 and sockops programs for a socket created by the
userspace part of the test.

Adding a tracing program to the existing objects requires a different
attachment strategy and different headers.

Signed-off-by: Florent Revest <revest@google.com>
---
 .../selftests/bpf/progs/socket_cookie_prog.c  | 41 ++++++++++++++++---
 .../selftests/bpf/test_socket_cookie.c        | 18 +++++---
 2 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
index 0cb5656a22b0..a11026aeaaf1 100644
--- a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
+++ b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
@@ -1,11 +1,13 @@
 // SPDX-License-Identifier: GPL-2.0
 // Copyright (c) 2018 Facebook
 
-#include <linux/bpf.h>
-#include <sys/socket.h>
+#include "vmlinux.h"
 
 #include <bpf/bpf_helpers.h>
 #include <bpf/bpf_endian.h>
+#include <bpf/bpf_tracing.h>
+
+#define AF_INET6 10
 
 struct socket_cookie {
 	__u64 cookie_key;
@@ -19,6 +21,14 @@ struct {
 	__type(value, struct socket_cookie);
 } socket_cookies SEC(".maps");
 
+/*
+ * These three programs get executed in a row on connect() syscalls. The
+ * userspace side of the test creates a client socket, issues a connect() on it
+ * and then checks that the local storage associated with this socket has:
+ * cookie_value == local_port << 8 | 0xFF
+ * The different parts of this cookie_value are appended by those hooks if they
+ * all agree on the output of bpf_get_socket_cookie().
+ */
 SEC("cgroup/connect6")
 int set_cookie(struct bpf_sock_addr *ctx)
 {
@@ -32,14 +42,14 @@ int set_cookie(struct bpf_sock_addr *ctx)
 	if (!p)
 		return 1;
 
-	p->cookie_value = 0xFF;
+	p->cookie_value = 0xF;
 	p->cookie_key = bpf_get_socket_cookie(ctx);
 
 	return 1;
 }
 
 SEC("sockops")
-int update_cookie(struct bpf_sock_ops *ctx)
+int update_cookie_sockops(struct bpf_sock_ops *ctx)
 {
 	struct bpf_sock *sk;
 	struct socket_cookie *p;
@@ -60,11 +70,32 @@ int update_cookie(struct bpf_sock_ops *ctx)
 	if (p->cookie_key != bpf_get_socket_cookie(ctx))
 		return 1;
 
-	p->cookie_value = (ctx->local_port << 8) | p->cookie_value;
+	p->cookie_value |= (ctx->local_port << 8);
 
 	return 1;
 }
 
+SEC("fexit/inet_stream_connect")
+int BPF_PROG(update_cookie_tracing, struct socket *sock,
+	     struct sockaddr *uaddr, int addr_len, int flags)
+{
+	struct socket_cookie *p;
+
+	if (uaddr->sa_family != AF_INET6)
+		return 0;
+
+	p = bpf_sk_storage_get(&socket_cookies, sock->sk, 0, 0);
+	if (!p)
+		return 0;
+
+	if (p->cookie_key != bpf_get_socket_cookie(sock->sk))
+		return 0;
+
+	p->cookie_value |= 0xF0;
+
+	return 0;
+}
+
 int _version SEC("version") = 1;
 
 char _license[] SEC("license") = "GPL";
diff --git a/tools/testing/selftests/bpf/test_socket_cookie.c b/tools/testing/selftests/bpf/test_socket_cookie.c
index ca7ca87e91aa..0d955c65a4f8 100644
--- a/tools/testing/selftests/bpf/test_socket_cookie.c
+++ b/tools/testing/selftests/bpf/test_socket_cookie.c
@@ -133,6 +133,7 @@ static int run_test(int cgfd)
 	struct bpf_prog_load_attr attr;
 	struct bpf_program *prog;
 	struct bpf_object *pobj;
+	struct bpf_link *link;
 	const char *prog_name;
 	int server_fd = -1;
 	int client_fd = -1;
@@ -153,11 +154,18 @@ static int run_test(int cgfd)
 	bpf_object__for_each_program(prog, pobj) {
 		prog_name = bpf_program__section_name(prog);
 
-		if (libbpf_attach_type_by_name(prog_name, &attach_type))
-			goto err;
-
-		err = bpf_prog_attach(bpf_program__fd(prog), cgfd, attach_type,
-				      BPF_F_ALLOW_OVERRIDE);
+		if (bpf_program__is_tracing(prog)) {
+			link = bpf_program__attach(prog);
+			err = !link;
+			continue;
+		} else {
+			if (libbpf_attach_type_by_name(prog_name, &attach_type))
+				goto err;
+
+			err = bpf_prog_attach(bpf_program__fd(prog), cgfd,
+					      attach_type,
+					      BPF_F_ALLOW_OVERRIDE);
+		}
 		if (err) {
 			log_err("Failed to attach prog %s", prog_name);
 			goto out;
-- 
2.29.2.454.gaff20da3a2-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie
  2020-11-26 17:02 ` [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie Florent Revest
@ 2020-11-27  7:56   ` Yonghong Song
  2020-11-27  9:17     ` Florent Revest
  2020-12-02  1:01   ` Andrii Nakryiko
  1 sibling, 1 reply; 6+ messages in thread
From: Yonghong Song @ 2020-11-27  7:56 UTC (permalink / raw)
  To: Florent Revest, bpf; +Cc: ast, daniel, andrii, kpsingh, revest, linux-kernel



On 11/26/20 9:02 AM, Florent Revest wrote:
> This builds up on the existing socket cookie test which checks whether
> the bpf_get_socket_cookie helpers provide the same value in
> cgroup/connect6 and sockops programs for a socket created by the
> userspace part of the test.
> 
> Adding a tracing program to the existing objects requires a different
> attachment strategy and different headers.
> 
> Signed-off-by: Florent Revest <revest@google.com>
> ---
>   .../selftests/bpf/progs/socket_cookie_prog.c  | 41 ++++++++++++++++---
>   .../selftests/bpf/test_socket_cookie.c        | 18 +++++---

Do you think it is possible to migrate test_socket_cookie.c to
selftests/bpf/prog_tests so it can be part of test_progs so
it will be regularly exercised?

>   2 files changed, 49 insertions(+), 10 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> index 0cb5656a22b0..a11026aeaaf1 100644
> --- a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> +++ b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> @@ -1,11 +1,13 @@
>   // SPDX-License-Identifier: GPL-2.0
>   // Copyright (c) 2018 Facebook
>   
[...]
> diff --git a/tools/testing/selftests/bpf/test_socket_cookie.c b/tools/testing/selftests/bpf/test_socket_cookie.c
> index ca7ca87e91aa..0d955c65a4f8 100644
> --- a/tools/testing/selftests/bpf/test_socket_cookie.c
> +++ b/tools/testing/selftests/bpf/test_socket_cookie.c
> @@ -133,6 +133,7 @@ static int run_test(int cgfd)
>   	struct bpf_prog_load_attr attr;
>   	struct bpf_program *prog;
>   	struct bpf_object *pobj;
> +	struct bpf_link *link;
>   	const char *prog_name;
>   	int server_fd = -1;
>   	int client_fd = -1;
> @@ -153,11 +154,18 @@ static int run_test(int cgfd)
>   	bpf_object__for_each_program(prog, pobj) {
>   		prog_name = bpf_program__section_name(prog);
>   
> -		if (libbpf_attach_type_by_name(prog_name, &attach_type))
> -			goto err;
> -
> -		err = bpf_prog_attach(bpf_program__fd(prog), cgfd, attach_type,
> -				      BPF_F_ALLOW_OVERRIDE);
> +		if (bpf_program__is_tracing(prog)) {
> +			link = bpf_program__attach(prog);
> +			err = !link;
> +			continue;
> +		} else {
> +			if (libbpf_attach_type_by_name(prog_name, &attach_type))
> +				goto err;
> +
> +			err = bpf_prog_attach(bpf_program__fd(prog), cgfd,
> +					      attach_type,
> +					      BPF_F_ALLOW_OVERRIDE);
> +		}
>   		if (err) {
>   			log_err("Failed to attach prog %s", prog_name);
>   			goto out;
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs
  2020-11-26 17:02 [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Florent Revest
  2020-11-26 17:02 ` [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie Florent Revest
@ 2020-11-27  8:08 ` Yonghong Song
  1 sibling, 0 replies; 6+ messages in thread
From: Yonghong Song @ 2020-11-27  8:08 UTC (permalink / raw)
  To: Florent Revest, bpf; +Cc: ast, daniel, andrii, kpsingh, revest, linux-kernel



On 11/26/20 9:02 AM, Florent Revest wrote:
> This creates a new helper proto because the existing
> bpf_get_socket_cookie_sock_proto has a ARG_PTR_TO_CTX argument and only
> works for BPF programs where the context is a sock.
> 
> This helper could also be useful to other BPF program types such as LSM.
> 
> Signed-off-by: Florent Revest <revest@google.com>
> ---
>   kernel/trace/bpf_trace.c | 4 ++++
>   net/core/filter.c        | 7 +++++++
>   2 files changed, 11 insertions(+)
> 
> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
> index d255bc9b2bfa..14ad96579813 100644
> --- a/kernel/trace/bpf_trace.c
> +++ b/kernel/trace/bpf_trace.c
> @@ -1725,6 +1725,8 @@ raw_tp_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
>   	}
>   }
>   
> +extern const struct bpf_func_proto bpf_get_socket_cookie_sock_tracing_proto;
> +
>   const struct bpf_func_proto *
>   tracing_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
>   {
> @@ -1748,6 +1750,8 @@ tracing_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
>   		return &bpf_sk_storage_get_tracing_proto;
>   	case BPF_FUNC_sk_storage_delete:
>   		return &bpf_sk_storage_delete_tracing_proto;
> +	case BPF_FUNC_get_socket_cookie:
> +		return &bpf_get_socket_cookie_sock_tracing_proto;
>   #endif
>   	case BPF_FUNC_seq_printf:
>   		return prog->expected_attach_type == BPF_TRACE_ITER ?
> diff --git a/net/core/filter.c b/net/core/filter.c
> index 2ca5eecebacf..177c4e5e529d 100644
> --- a/net/core/filter.c
> +++ b/net/core/filter.c
> @@ -4631,6 +4631,13 @@ static const struct bpf_func_proto bpf_get_socket_cookie_sock_proto = {
>   	.arg1_type	= ARG_PTR_TO_CTX,
>   };
>   
> +const struct bpf_func_proto bpf_get_socket_cookie_sock_tracing_proto = {
> +	.func		= bpf_get_socket_cookie_sock,
> +	.gpl_only	= false,
> +	.ret_type	= RET_INTEGER,
> +	.arg1_type      = ARG_PTR_TO_BTF_ID_SOCK_COMMON,
> +};

This seems correct to me. Could you add another helper description in 
uapi bpf.h? Currently we already have:
   u64 bpf_get_socket_cookie(struct sk_buff *skb)
   u64 bpf_get_socket_cookie(struct bpf_sock_addr *ctx)
   u64 bpf_get_socket_cookie(struct bpf_sock_ops *ctx)

The btf-id based helper will be something like below
   u64 bpf_get_socket_cookie(void *sk)


> +
>   BPF_CALL_1(bpf_get_socket_cookie_sock_ops, struct bpf_sock_ops_kern *, ctx)
>   {
>   	return __sock_gen_cookie(ctx->sk);
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie
  2020-11-27  7:56   ` Yonghong Song
@ 2020-11-27  9:17     ` Florent Revest
  0 siblings, 0 replies; 6+ messages in thread
From: Florent Revest @ 2020-11-27  9:17 UTC (permalink / raw)
  To: Yonghong Song, bpf; +Cc: ast, daniel, andrii, kpsingh, revest, linux-kernel

On Thu, 2020-11-26 at 23:56 -0800, Yonghong Song wrote:
> 
> On 11/26/20 9:02 AM, Florent Revest wrote:
> > This builds up on the existing socket cookie test which checks
> > whether
> > the bpf_get_socket_cookie helpers provide the same value in
> > cgroup/connect6 and sockops programs for a socket created by the
> > userspace part of the test.
> > 
> > Adding a tracing program to the existing objects requires a
> > different
> > attachment strategy and different headers.
> > 
> > Signed-off-by: Florent Revest <revest@google.com>
> > ---
> >   .../selftests/bpf/progs/socket_cookie_prog.c  | 41
> > ++++++++++++++++---
> >   .../selftests/bpf/test_socket_cookie.c        | 18 +++++---
> 
> Do you think it is possible to migrate test_socket_cookie.c to
> selftests/bpf/prog_tests so it can be part of test_progs so
> it will be regularly exercised?

I suppose it's possible, I can give it a try :)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie
  2020-11-26 17:02 ` [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie Florent Revest
  2020-11-27  7:56   ` Yonghong Song
@ 2020-12-02  1:01   ` Andrii Nakryiko
  1 sibling, 0 replies; 6+ messages in thread
From: Andrii Nakryiko @ 2020-12-02  1:01 UTC (permalink / raw)
  To: Florent Revest
  Cc: bpf, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	KP Singh, Florent Revest, open list

On Thu, Nov 26, 2020 at 9:02 AM Florent Revest <revest@chromium.org> wrote:
>
> This builds up on the existing socket cookie test which checks whether
> the bpf_get_socket_cookie helpers provide the same value in
> cgroup/connect6 and sockops programs for a socket created by the
> userspace part of the test.
>
> Adding a tracing program to the existing objects requires a different
> attachment strategy and different headers.
>
> Signed-off-by: Florent Revest <revest@google.com>
> ---
>  .../selftests/bpf/progs/socket_cookie_prog.c  | 41 ++++++++++++++++---
>  .../selftests/bpf/test_socket_cookie.c        | 18 +++++---
>  2 files changed, 49 insertions(+), 10 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> index 0cb5656a22b0..a11026aeaaf1 100644
> --- a/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> +++ b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c
> @@ -1,11 +1,13 @@
>  // SPDX-License-Identifier: GPL-2.0
>  // Copyright (c) 2018 Facebook
>
> -#include <linux/bpf.h>
> -#include <sys/socket.h>
> +#include "vmlinux.h"
>
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_endian.h>
> +#include <bpf/bpf_tracing.h>
> +
> +#define AF_INET6 10
>
>  struct socket_cookie {
>         __u64 cookie_key;
> @@ -19,6 +21,14 @@ struct {
>         __type(value, struct socket_cookie);
>  } socket_cookies SEC(".maps");
>
> +/*
> + * These three programs get executed in a row on connect() syscalls. The
> + * userspace side of the test creates a client socket, issues a connect() on it
> + * and then checks that the local storage associated with this socket has:
> + * cookie_value == local_port << 8 | 0xFF
> + * The different parts of this cookie_value are appended by those hooks if they
> + * all agree on the output of bpf_get_socket_cookie().
> + */
>  SEC("cgroup/connect6")
>  int set_cookie(struct bpf_sock_addr *ctx)
>  {
> @@ -32,14 +42,14 @@ int set_cookie(struct bpf_sock_addr *ctx)
>         if (!p)
>                 return 1;
>
> -       p->cookie_value = 0xFF;
> +       p->cookie_value = 0xF;
>         p->cookie_key = bpf_get_socket_cookie(ctx);
>
>         return 1;
>  }
>
>  SEC("sockops")
> -int update_cookie(struct bpf_sock_ops *ctx)
> +int update_cookie_sockops(struct bpf_sock_ops *ctx)
>  {
>         struct bpf_sock *sk;
>         struct socket_cookie *p;
> @@ -60,11 +70,32 @@ int update_cookie(struct bpf_sock_ops *ctx)
>         if (p->cookie_key != bpf_get_socket_cookie(ctx))
>                 return 1;
>
> -       p->cookie_value = (ctx->local_port << 8) | p->cookie_value;
> +       p->cookie_value |= (ctx->local_port << 8);
>
>         return 1;
>  }
>
> +SEC("fexit/inet_stream_connect")
> +int BPF_PROG(update_cookie_tracing, struct socket *sock,
> +            struct sockaddr *uaddr, int addr_len, int flags)
> +{
> +       struct socket_cookie *p;
> +
> +       if (uaddr->sa_family != AF_INET6)
> +               return 0;
> +
> +       p = bpf_sk_storage_get(&socket_cookies, sock->sk, 0, 0);
> +       if (!p)
> +               return 0;
> +
> +       if (p->cookie_key != bpf_get_socket_cookie(sock->sk))
> +               return 0;
> +
> +       p->cookie_value |= 0xF0;
> +
> +       return 0;
> +}
> +
>  int _version SEC("version") = 1;

please remove this, while you are at it

>
>  char _license[] SEC("license") = "GPL";
> diff --git a/tools/testing/selftests/bpf/test_socket_cookie.c b/tools/testing/selftests/bpf/test_socket_cookie.c
> index ca7ca87e91aa..0d955c65a4f8 100644
> --- a/tools/testing/selftests/bpf/test_socket_cookie.c
> +++ b/tools/testing/selftests/bpf/test_socket_cookie.c
> @@ -133,6 +133,7 @@ static int run_test(int cgfd)
>         struct bpf_prog_load_attr attr;
>         struct bpf_program *prog;
>         struct bpf_object *pobj;
> +       struct bpf_link *link;
>         const char *prog_name;
>         int server_fd = -1;
>         int client_fd = -1;
> @@ -153,11 +154,18 @@ static int run_test(int cgfd)
>         bpf_object__for_each_program(prog, pobj) {
>                 prog_name = bpf_program__section_name(prog);
>
> -               if (libbpf_attach_type_by_name(prog_name, &attach_type))
> -                       goto err;
> -
> -               err = bpf_prog_attach(bpf_program__fd(prog), cgfd, attach_type,
> -                                     BPF_F_ALLOW_OVERRIDE);
> +               if (bpf_program__is_tracing(prog)) {
> +                       link = bpf_program__attach(prog);
> +                       err = !link;

link is a pointer, so use libbpf_get_error()

> +                       continue;
> +               } else {

else branch is not really necessary, just adds indentation unnecessarily

> +                       if (libbpf_attach_type_by_name(prog_name, &attach_type))
> +                               goto err;
> +
> +                       err = bpf_prog_attach(bpf_program__fd(prog), cgfd,
> +                                             attach_type,
> +                                             BPF_F_ALLOW_OVERRIDE);
> +               }
>                 if (err) {
>                         log_err("Failed to attach prog %s", prog_name);
>                         goto out;
> --
> 2.29.2.454.gaff20da3a2-goog
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-12-02  1:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-26 17:02 [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Florent Revest
2020-11-26 17:02 ` [PATCH bpf-next 2/2] bpf: Add a selftest for the tracing bpf_get_socket_cookie Florent Revest
2020-11-27  7:56   ` Yonghong Song
2020-11-27  9:17     ` Florent Revest
2020-12-02  1:01   ` Andrii Nakryiko
2020-11-27  8:08 ` [PATCH bpf-next 1/2] bpf: Expose bpf_get_socket_cookie to tracing programs Yonghong Song

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.