diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2018-08-20 18:05:17 +0200 | 
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2018-08-20 18:05:17 +0200 | 
| commit | 415d2b3392d7a80903e0f97f051201aa02bf20e9 (patch) | |
| tree | 47492d2386a0e7f00ef645313cb44ae4960b7e7e /kernel/bpf/cgroup.c | |
| parent | 4f65245f2d178b9cba48350620d76faa4a098841 (diff) | |
| parent | b8e759b8f6dab1c473c30ac12709095d0b81078e (diff) | |
Merge branch 'for-4.19/cougar' into for-linus
New device support for hid-cougar
Diffstat (limited to 'kernel/bpf/cgroup.c')
| -rw-r--r-- | kernel/bpf/cgroup.c | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/kernel/bpf/cgroup.c b/kernel/bpf/cgroup.c index f7c00bd6f8e4..3d83ee7df381 100644 --- a/kernel/bpf/cgroup.c +++ b/kernel/bpf/cgroup.c @@ -428,6 +428,60 @@ int __cgroup_bpf_query(struct cgroup *cgrp, const union bpf_attr *attr,  	return ret;  } +int cgroup_bpf_prog_attach(const union bpf_attr *attr, +			   enum bpf_prog_type ptype, struct bpf_prog *prog) +{ +	struct cgroup *cgrp; +	int ret; + +	cgrp = cgroup_get_from_fd(attr->target_fd); +	if (IS_ERR(cgrp)) +		return PTR_ERR(cgrp); + +	ret = cgroup_bpf_attach(cgrp, prog, attr->attach_type, +				attr->attach_flags); +	cgroup_put(cgrp); +	return ret; +} + +int cgroup_bpf_prog_detach(const union bpf_attr *attr, enum bpf_prog_type ptype) +{ +	struct bpf_prog *prog; +	struct cgroup *cgrp; +	int ret; + +	cgrp = cgroup_get_from_fd(attr->target_fd); +	if (IS_ERR(cgrp)) +		return PTR_ERR(cgrp); + +	prog = bpf_prog_get_type(attr->attach_bpf_fd, ptype); +	if (IS_ERR(prog)) +		prog = NULL; + +	ret = cgroup_bpf_detach(cgrp, prog, attr->attach_type, 0); +	if (prog) +		bpf_prog_put(prog); + +	cgroup_put(cgrp); +	return ret; +} + +int cgroup_bpf_prog_query(const union bpf_attr *attr, +			  union bpf_attr __user *uattr) +{ +	struct cgroup *cgrp; +	int ret; + +	cgrp = cgroup_get_from_fd(attr->query.target_fd); +	if (IS_ERR(cgrp)) +		return PTR_ERR(cgrp); + +	ret = cgroup_bpf_query(cgrp, attr, uattr); + +	cgroup_put(cgrp); +	return ret; +} +  /**   * __cgroup_bpf_run_filter_skb() - Run a program for packet filtering   * @sk: The socket sending or receiving traffic | 
