Skip to content

Commit b2cd125

Browse files
David Aherndavem330
authored andcommitted
bpf: Refactor cgroups code in prep for new type
Code move and rename only; no functional change intended. Signed-off-by: David Ahern <[email protected]> Acked-by: Alexei Starovoitov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7f7bf16 commit b2cd125

File tree

3 files changed

+43
-41
lines changed

3 files changed

+43
-41
lines changed

include/linux/bpf-cgroup.h

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,31 @@ void cgroup_bpf_update(struct cgroup *cgrp,
3636
struct bpf_prog *prog,
3737
enum bpf_attach_type type);
3838

39-
int __cgroup_bpf_run_filter(struct sock *sk,
40-
struct sk_buff *skb,
41-
enum bpf_attach_type type);
42-
43-
/* Wrappers for __cgroup_bpf_run_filter() guarded by cgroup_bpf_enabled. */
44-
#define BPF_CGROUP_RUN_PROG_INET_INGRESS(sk,skb) \
45-
({ \
46-
int __ret = 0; \
47-
if (cgroup_bpf_enabled) \
48-
__ret = __cgroup_bpf_run_filter(sk, skb, \
49-
BPF_CGROUP_INET_INGRESS); \
50-
\
51-
__ret; \
39+
int __cgroup_bpf_run_filter_skb(struct sock *sk,
40+
struct sk_buff *skb,
41+
enum bpf_attach_type type);
42+
43+
/* Wrappers for __cgroup_bpf_run_filter_skb() guarded by cgroup_bpf_enabled. */
44+
#define BPF_CGROUP_RUN_PROG_INET_INGRESS(sk, skb) \
45+
({ \
46+
int __ret = 0; \
47+
if (cgroup_bpf_enabled) \
48+
__ret = __cgroup_bpf_run_filter_skb(sk, skb, \
49+
BPF_CGROUP_INET_INGRESS); \
50+
\
51+
__ret; \
5252
})
5353

54-
#define BPF_CGROUP_RUN_PROG_INET_EGRESS(sk,skb) \
55-
({ \
56-
int __ret = 0; \
57-
if (cgroup_bpf_enabled && sk && sk == skb->sk) { \
58-
typeof(sk) __sk = sk_to_full_sk(sk); \
59-
if (sk_fullsock(__sk)) \
60-
__ret = __cgroup_bpf_run_filter(__sk, skb, \
61-
BPF_CGROUP_INET_EGRESS); \
62-
} \
63-
__ret; \
54+
#define BPF_CGROUP_RUN_PROG_INET_EGRESS(sk, skb) \
55+
({ \
56+
int __ret = 0; \
57+
if (cgroup_bpf_enabled && sk && sk == skb->sk) { \
58+
typeof(sk) __sk = sk_to_full_sk(sk); \
59+
if (sk_fullsock(__sk)) \
60+
__ret = __cgroup_bpf_run_filter_skb(__sk, skb, \
61+
BPF_CGROUP_INET_EGRESS); \
62+
} \
63+
__ret; \
6464
})
6565

6666
#else

kernel/bpf/cgroup.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ void __cgroup_bpf_update(struct cgroup *cgrp,
118118
}
119119

120120
/**
121-
* __cgroup_bpf_run_filter() - Run a program for packet filtering
121+
* __cgroup_bpf_run_filter_skb() - Run a program for packet filtering
122122
* @sk: The socken sending or receiving traffic
123123
* @skb: The skb that is being sent or received
124124
* @type: The type of program to be exectuted
@@ -132,9 +132,9 @@ void __cgroup_bpf_update(struct cgroup *cgrp,
132132
* This function will return %-EPERM if any if an attached program was found
133133
* and if it returned != 1 during execution. In all other cases, 0 is returned.
134134
*/
135-
int __cgroup_bpf_run_filter(struct sock *sk,
136-
struct sk_buff *skb,
137-
enum bpf_attach_type type)
135+
int __cgroup_bpf_run_filter_skb(struct sock *sk,
136+
struct sk_buff *skb,
137+
enum bpf_attach_type type)
138138
{
139139
struct bpf_prog *prog;
140140
struct cgroup *cgrp;
@@ -164,4 +164,4 @@ int __cgroup_bpf_run_filter(struct sock *sk,
164164

165165
return ret;
166166
}
167-
EXPORT_SYMBOL(__cgroup_bpf_run_filter);
167+
EXPORT_SYMBOL(__cgroup_bpf_run_filter_skb);

kernel/bpf/syscall.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,7 @@ static int bpf_prog_attach(const union bpf_attr *attr)
856856
{
857857
struct bpf_prog *prog;
858858
struct cgroup *cgrp;
859+
enum bpf_prog_type ptype;
859860

860861
if (!capable(CAP_NET_ADMIN))
861862
return -EPERM;
@@ -866,25 +867,26 @@ static int bpf_prog_attach(const union bpf_attr *attr)
866867
switch (attr->attach_type) {
867868
case BPF_CGROUP_INET_INGRESS:
868869
case BPF_CGROUP_INET_EGRESS:
869-
prog = bpf_prog_get_type(attr->attach_bpf_fd,
870-
BPF_PROG_TYPE_CGROUP_SKB);
871-
if (IS_ERR(prog))
872-
return PTR_ERR(prog);
873-
874-
cgrp = cgroup_get_from_fd(attr->target_fd);
875-
if (IS_ERR(cgrp)) {
876-
bpf_prog_put(prog);
877-
return PTR_ERR(cgrp);
878-
}
879-
880-
cgroup_bpf_update(cgrp, prog, attr->attach_type);
881-
cgroup_put(cgrp);
870+
ptype = BPF_PROG_TYPE_CGROUP_SKB;
882871
break;
883872

884873
default:
885874
return -EINVAL;
886875
}
887876

877+
prog = bpf_prog_get_type(attr->attach_bpf_fd, ptype);
878+
if (IS_ERR(prog))
879+
return PTR_ERR(prog);
880+
881+
cgrp = cgroup_get_from_fd(attr->target_fd);
882+
if (IS_ERR(cgrp)) {
883+
bpf_prog_put(prog);
884+
return PTR_ERR(cgrp);
885+
}
886+
887+
cgroup_bpf_update(cgrp, prog, attr->attach_type);
888+
cgroup_put(cgrp);
889+
888890
return 0;
889891
}
890892

0 commit comments

Comments
 (0)