Commit 6aaae2b6 authored by Daniel Borkmann's avatar Daniel Borkmann Committed by David S. Miller

bpf: rename bpf_compute_data_end into bpf_compute_data_pointers

Just do the rename into bpf_compute_data_pointers() as we'll add
one more pointer here to recompute.
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3bd3b9ed
...@@ -496,10 +496,13 @@ struct xdp_buff { ...@@ -496,10 +496,13 @@ struct xdp_buff {
void *data_hard_start; void *data_hard_start;
}; };
/* compute the linear packet data range [data, data_end) which /* Compute the linear packet data range [data, data_end) which
* will be accessed by cls_bpf, act_bpf and lwt programs * will be accessed by various program types (cls_bpf, act_bpf,
* lwt, ...). Subsystems allowing direct data access must (!)
* ensure that cb[] area can be written to when BPF program is
* invoked (otherwise cb[] save/restore is necessary).
*/ */
static inline void bpf_compute_data_end(struct sk_buff *skb) static inline void bpf_compute_data_pointers(struct sk_buff *skb)
{ {
struct bpf_skb_data_end *cb = (struct bpf_skb_data_end *)skb->cb; struct bpf_skb_data_end *cb = (struct bpf_skb_data_end *)skb->cb;
......
...@@ -102,7 +102,7 @@ static int smap_verdict_func(struct smap_psock *psock, struct sk_buff *skb) ...@@ -102,7 +102,7 @@ static int smap_verdict_func(struct smap_psock *psock, struct sk_buff *skb)
skb_orphan(skb); skb_orphan(skb);
skb->sk = psock->sock; skb->sk = psock->sock;
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
rc = (*prog->bpf_func)(skb, prog->insnsi); rc = (*prog->bpf_func)(skb, prog->insnsi);
skb->sk = NULL; skb->sk = NULL;
...@@ -369,7 +369,7 @@ static int smap_parse_func_strparser(struct strparser *strp, ...@@ -369,7 +369,7 @@ static int smap_parse_func_strparser(struct strparser *strp,
* any socket yet. * any socket yet.
*/ */
skb->sk = psock->sock; skb->sk = psock->sock;
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
rc = (*prog->bpf_func)(skb, prog->insnsi); rc = (*prog->bpf_func)(skb, prog->insnsi);
skb->sk = NULL; skb->sk = NULL;
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -133,7 +133,7 @@ int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr, ...@@ -133,7 +133,7 @@ int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
if (is_l2) if (is_l2)
__skb_push(skb, ETH_HLEN); __skb_push(skb, ETH_HLEN);
if (is_direct_pkt_access) if (is_direct_pkt_access)
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
retval = bpf_test_run(prog, skb, repeat, &duration); retval = bpf_test_run(prog, skb, repeat, &duration);
if (!is_l2) if (!is_l2)
__skb_push(skb, ETH_HLEN); __skb_push(skb, ETH_HLEN);
......
...@@ -1402,7 +1402,7 @@ static inline int bpf_try_make_writable(struct sk_buff *skb, ...@@ -1402,7 +1402,7 @@ static inline int bpf_try_make_writable(struct sk_buff *skb,
{ {
int err = __bpf_try_make_writable(skb, write_len); int err = __bpf_try_make_writable(skb, write_len);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return err; return err;
} }
...@@ -1962,7 +1962,7 @@ BPF_CALL_3(bpf_skb_vlan_push, struct sk_buff *, skb, __be16, vlan_proto, ...@@ -1962,7 +1962,7 @@ BPF_CALL_3(bpf_skb_vlan_push, struct sk_buff *, skb, __be16, vlan_proto,
ret = skb_vlan_push(skb, vlan_proto, vlan_tci); ret = skb_vlan_push(skb, vlan_proto, vlan_tci);
bpf_pull_mac_rcsum(skb); bpf_pull_mac_rcsum(skb);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return ret; return ret;
} }
...@@ -1984,7 +1984,7 @@ BPF_CALL_1(bpf_skb_vlan_pop, struct sk_buff *, skb) ...@@ -1984,7 +1984,7 @@ BPF_CALL_1(bpf_skb_vlan_pop, struct sk_buff *, skb)
ret = skb_vlan_pop(skb); ret = skb_vlan_pop(skb);
bpf_pull_mac_rcsum(skb); bpf_pull_mac_rcsum(skb);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return ret; return ret;
} }
...@@ -2178,7 +2178,7 @@ BPF_CALL_3(bpf_skb_change_proto, struct sk_buff *, skb, __be16, proto, ...@@ -2178,7 +2178,7 @@ BPF_CALL_3(bpf_skb_change_proto, struct sk_buff *, skb, __be16, proto,
* need to be verified first. * need to be verified first.
*/ */
ret = bpf_skb_proto_xlat(skb, proto); ret = bpf_skb_proto_xlat(skb, proto);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return ret; return ret;
} }
...@@ -2303,7 +2303,7 @@ static int bpf_skb_adjust_net(struct sk_buff *skb, s32 len_diff) ...@@ -2303,7 +2303,7 @@ static int bpf_skb_adjust_net(struct sk_buff *skb, s32 len_diff)
ret = shrink ? bpf_skb_net_shrink(skb, len_diff_abs) : ret = shrink ? bpf_skb_net_shrink(skb, len_diff_abs) :
bpf_skb_net_grow(skb, len_diff_abs); bpf_skb_net_grow(skb, len_diff_abs);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return ret; return ret;
} }
...@@ -2394,7 +2394,7 @@ BPF_CALL_3(bpf_skb_change_tail, struct sk_buff *, skb, u32, new_len, ...@@ -2394,7 +2394,7 @@ BPF_CALL_3(bpf_skb_change_tail, struct sk_buff *, skb, u32, new_len,
skb_gso_reset(skb); skb_gso_reset(skb);
} }
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return ret; return ret;
} }
...@@ -2434,7 +2434,7 @@ BPF_CALL_3(bpf_skb_change_head, struct sk_buff *, skb, u32, head_room, ...@@ -2434,7 +2434,7 @@ BPF_CALL_3(bpf_skb_change_head, struct sk_buff *, skb, u32, head_room,
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
} }
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
return 0; return 0;
} }
......
...@@ -51,7 +51,7 @@ static int run_lwt_bpf(struct sk_buff *skb, struct bpf_lwt_prog *lwt, ...@@ -51,7 +51,7 @@ static int run_lwt_bpf(struct sk_buff *skb, struct bpf_lwt_prog *lwt,
*/ */
preempt_disable(); preempt_disable();
rcu_read_lock(); rcu_read_lock();
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
ret = bpf_prog_run_save_cb(lwt->prog, skb); ret = bpf_prog_run_save_cb(lwt->prog, skb);
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -49,11 +49,11 @@ static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act, ...@@ -49,11 +49,11 @@ static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act,
filter = rcu_dereference(prog->filter); filter = rcu_dereference(prog->filter);
if (at_ingress) { if (at_ingress) {
__skb_push(skb, skb->mac_len); __skb_push(skb, skb->mac_len);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
filter_res = BPF_PROG_RUN(filter, skb); filter_res = BPF_PROG_RUN(filter, skb);
__skb_pull(skb, skb->mac_len); __skb_pull(skb, skb->mac_len);
} else { } else {
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
filter_res = BPF_PROG_RUN(filter, skb); filter_res = BPF_PROG_RUN(filter, skb);
} }
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -99,11 +99,11 @@ static int cls_bpf_classify(struct sk_buff *skb, const struct tcf_proto *tp, ...@@ -99,11 +99,11 @@ static int cls_bpf_classify(struct sk_buff *skb, const struct tcf_proto *tp,
} else if (at_ingress) { } else if (at_ingress) {
/* It is safe to push/pull even if skb_shared() */ /* It is safe to push/pull even if skb_shared() */
__skb_push(skb, skb->mac_len); __skb_push(skb, skb->mac_len);
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
filter_res = BPF_PROG_RUN(prog->filter, skb); filter_res = BPF_PROG_RUN(prog->filter, skb);
__skb_pull(skb, skb->mac_len); __skb_pull(skb, skb->mac_len);
} else { } else {
bpf_compute_data_end(skb); bpf_compute_data_pointers(skb);
filter_res = BPF_PROG_RUN(prog->filter, skb); filter_res = BPF_PROG_RUN(prog->filter, skb);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment