Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1508851
| From | Mickaël Salaün <mic@digikod.net> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [RFC v4 14/18] bpf/cgroup: Make cgroup_bpf_update() return an error code |
| Date | 2016-10-26 09:10 +0200 |
| Message-ID | <swqvv-i6-17@gated-at.bofh.it> (permalink) |
| References | <swqlP-8qD-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
This will be useful to support Landlock for the next commits.
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Daniel Mack <daniel@zonque.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Tejun Heo <tj@kernel.org>
---
include/linux/bpf-cgroup.h | 4 ++--
kernel/bpf/cgroup.c | 3 ++-
kernel/bpf/syscall.c | 10 ++++++----
kernel/cgroup.c | 6 ++++--
4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index 2f608e5d94e9..aab1aa91c064 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -31,13 +31,13 @@ struct cgroup_bpf {
void cgroup_bpf_put(struct cgroup *cgrp);
void cgroup_bpf_inherit(struct cgroup *cgrp, struct cgroup *parent);
-void __cgroup_bpf_update(struct cgroup *cgrp,
+int __cgroup_bpf_update(struct cgroup *cgrp,
struct cgroup *parent,
struct bpf_prog *prog,
enum bpf_attach_type type);
/* Wrapper for __cgroup_bpf_update() protected by cgroup_mutex */
-void cgroup_bpf_update(struct cgroup *cgrp,
+int cgroup_bpf_update(struct cgroup *cgrp,
struct bpf_prog *prog,
enum bpf_attach_type type);
diff --git a/kernel/bpf/cgroup.c b/kernel/bpf/cgroup.c
index 75482cd92d56..269b410d890c 100644
--- a/kernel/bpf/cgroup.c
+++ b/kernel/bpf/cgroup.c
@@ -83,7 +83,7 @@ void cgroup_bpf_inherit(struct cgroup *cgrp, struct cgroup *parent)
*
* Must be called with cgroup_mutex held.
*/
-void __cgroup_bpf_update(struct cgroup *cgrp,
+int __cgroup_bpf_update(struct cgroup *cgrp,
struct cgroup *parent,
struct bpf_prog *prog,
enum bpf_attach_type type)
@@ -116,6 +116,7 @@ void __cgroup_bpf_update(struct cgroup *cgrp,
bpf_prog_put(old_prog);
static_branch_dec(&cgroup_bpf_enabled_key);
}
+ return 0;
}
/**
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index ac4cbb98596d..e62123aeb202 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -831,6 +831,7 @@ static int bpf_prog_attach(const union bpf_attr *attr)
{
struct bpf_prog *prog;
struct cgroup *cgrp;
+ int result;
if (!capable(CAP_NET_ADMIN))
return -EPERM;
@@ -858,10 +859,10 @@ static int bpf_prog_attach(const union bpf_attr *attr)
return PTR_ERR(cgrp);
}
- cgroup_bpf_update(cgrp, prog, attr->attach_type);
+ result = cgroup_bpf_update(cgrp, prog, attr->attach_type);
cgroup_put(cgrp);
- return 0;
+ return result;
}
#define BPF_PROG_DETACH_LAST_FIELD attach_type
@@ -869,6 +870,7 @@ static int bpf_prog_attach(const union bpf_attr *attr)
static int bpf_prog_detach(const union bpf_attr *attr)
{
struct cgroup *cgrp;
+ int result = 0;
if (!capable(CAP_NET_ADMIN))
return -EPERM;
@@ -883,7 +885,7 @@ static int bpf_prog_detach(const union bpf_attr *attr)
if (IS_ERR(cgrp))
return PTR_ERR(cgrp);
- cgroup_bpf_update(cgrp, NULL, attr->attach_type);
+ result = cgroup_bpf_update(cgrp, NULL, attr->attach_type);
cgroup_put(cgrp);
break;
@@ -891,7 +893,7 @@ static int bpf_prog_detach(const union bpf_attr *attr)
return -EINVAL;
}
- return 0;
+ return result;
}
#endif /* CONFIG_CGROUP_BPF */
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 2ee9ec3051b2..f77a974eb960 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -6501,15 +6501,17 @@ static __init int cgroup_namespaces_init(void)
subsys_initcall(cgroup_namespaces_init);
#ifdef CONFIG_CGROUP_BPF
-void cgroup_bpf_update(struct cgroup *cgrp,
+int cgroup_bpf_update(struct cgroup *cgrp,
struct bpf_prog *prog,
enum bpf_attach_type type)
{
struct cgroup *parent = cgroup_parent(cgrp);
+ int result;
mutex_lock(&cgroup_mutex);
- __cgroup_bpf_update(cgrp, parent, prog, type);
+ result = __cgroup_bpf_update(cgrp, parent, prog, type);
mutex_unlock(&cgroup_mutex);
+ return result;
}
#endif /* CONFIG_CGROUP_BPF */
--
2.9.3
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[RFC v4 00/18] Landlock LSM: Unprivileged sandboxing Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:00 +0200
[RFC v4 16/18] bpf/cgroup,landlock: Handle Landlock hooks per cgroup Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:00 +0200
[RFC v4 11/18] seccomp,landlock: Handle Landlock hooks per process hierarchy Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:00 +0200
[RFC v4 05/18] bpf,landlock: Define an eBPF program type for Landlock Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 06/18] fs: Constify path_is_under()'s arguments Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 10/18] seccomp: Split put_seccomp_filter() with put_seccomp() Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 14/18] bpf/cgroup: Make cgroup_bpf_update() return an error code Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 13/18] bpf/cgroup: Replace struct bpf_prog with struct bpf_object Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 12/18] bpf: Cosmetic change for bpf_prog_attach() Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 01/18] landlock: Add Kconfig Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 09/18] landlock: Add manager functions Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 03/18] bpf,landlock: Add a new arraymap type to deal with (Landlock) handles Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
Re: [kernel-hardening] [RFC v4 03/18] bpf,landlock: Add a new arraymap type to deal with (Landlock) handles Jann Horn <jann@thejh.net> - 2016-10-26 21:10 +0200
Re: [kernel-hardening] [RFC v4 03/18] bpf,landlock: Add a new arraymap type to deal with (Landlock) handles Mickaël Salaün <mic@digikod.net> - 2016-10-26 22:10 +0200
Re: [kernel-hardening] [RFC v4 03/18] bpf,landlock: Add a new arraymap type to deal with (Landlock) handles Jann Horn <jann@thejh.net> - 2016-10-26 22:20 +0200
[RFC v4 02/18] bpf: Move u64_to_ptr() to BPF headers and inline it Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
Re: [RFC v4 02/18] bpf: Move u64_to_ptr() to BPF headers and inline it Arnd Bergmann <arnd@arndb.de> - 2016-10-26 09:30 +0200
Re: [kernel-hardening] Re: [RFC v4 02/18] bpf: Move u64_to_ptr() to BPF headers and inline it David Sterba <dave@jikos.cz> - 2016-10-26 16:00 +0200
[RFC v4 08/18] landlock: Handle file comparisons Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 04/18] bpf,landlock: Add eBPF program subtype and is_valid_subtype() verifier Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 17/18] landlock: Add update and debug access flags Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
[RFC v4 07/18] landlock: Add LSM hooks Mickaël Salaün <mic@digikod.net> - 2016-10-26 09:10 +0200
Re: [RFC v4 00/18] Landlock LSM: Unprivileged sandboxing Jann Horn <jann@thejh.net> - 2016-10-26 17:00 +0200
Re: [RFC v4 00/18] Landlock LSM: Unprivileged sandboxing Mickaël Salaün <mic@digikod.net> - 2016-10-26 19:00 +0200
Re: [RFC v4 00/18] Landlock LSM: Unprivileged sandboxing Mickaël Salaün <mic@digikod.net> - 2016-10-26 19:30 +0200
csiph-web