|
@@ -1717,10 +1717,10 @@ static int sock_map_ctx_update_elem(struct bpf_sock_ops_kern *skops,
|
|
if (tx_msg) {
|
|
if (tx_msg) {
|
|
tx_msg = bpf_prog_inc_not_zero(stab->bpf_tx_msg);
|
|
tx_msg = bpf_prog_inc_not_zero(stab->bpf_tx_msg);
|
|
if (IS_ERR(tx_msg)) {
|
|
if (IS_ERR(tx_msg)) {
|
|
- if (verdict)
|
|
|
|
- bpf_prog_put(verdict);
|
|
|
|
- if (parse)
|
|
|
|
|
|
+ if (parse && verdict) {
|
|
bpf_prog_put(parse);
|
|
bpf_prog_put(parse);
|
|
|
|
+ bpf_prog_put(verdict);
|
|
|
|
+ }
|
|
return PTR_ERR(tx_msg);
|
|
return PTR_ERR(tx_msg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1805,10 +1805,10 @@ static int sock_map_ctx_update_elem(struct bpf_sock_ops_kern *skops,
|
|
out_free:
|
|
out_free:
|
|
smap_release_sock(psock, sock);
|
|
smap_release_sock(psock, sock);
|
|
out_progs:
|
|
out_progs:
|
|
- if (verdict)
|
|
|
|
- bpf_prog_put(verdict);
|
|
|
|
- if (parse)
|
|
|
|
|
|
+ if (parse && verdict) {
|
|
bpf_prog_put(parse);
|
|
bpf_prog_put(parse);
|
|
|
|
+ bpf_prog_put(verdict);
|
|
|
|
+ }
|
|
if (tx_msg)
|
|
if (tx_msg)
|
|
bpf_prog_put(tx_msg);
|
|
bpf_prog_put(tx_msg);
|
|
write_unlock_bh(&sock->sk_callback_lock);
|
|
write_unlock_bh(&sock->sk_callback_lock);
|