diff options
-rw-r--r-- | kernel/bpf/sockmap.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c index 098eca568c2b..f03aaa8daadd 100644 --- a/kernel/bpf/sockmap.c +++ b/kernel/bpf/sockmap.c | |||
@@ -1717,10 +1717,10 @@ static int sock_map_ctx_update_elem(struct bpf_sock_ops_kern *skops, | |||
1717 | if (tx_msg) { | 1717 | if (tx_msg) { |
1718 | tx_msg = bpf_prog_inc_not_zero(stab->bpf_tx_msg); | 1718 | tx_msg = bpf_prog_inc_not_zero(stab->bpf_tx_msg); |
1719 | if (IS_ERR(tx_msg)) { | 1719 | if (IS_ERR(tx_msg)) { |
1720 | if (verdict) | 1720 | if (parse && verdict) { |
1721 | bpf_prog_put(verdict); | ||
1722 | if (parse) | ||
1723 | bpf_prog_put(parse); | 1721 | bpf_prog_put(parse); |
1722 | bpf_prog_put(verdict); | ||
1723 | } | ||
1724 | return PTR_ERR(tx_msg); | 1724 | return PTR_ERR(tx_msg); |
1725 | } | 1725 | } |
1726 | } | 1726 | } |
@@ -1805,10 +1805,10 @@ static int sock_map_ctx_update_elem(struct bpf_sock_ops_kern *skops, | |||
1805 | out_free: | 1805 | out_free: |
1806 | smap_release_sock(psock, sock); | 1806 | smap_release_sock(psock, sock); |
1807 | out_progs: | 1807 | out_progs: |
1808 | if (verdict) | 1808 | if (parse && verdict) { |
1809 | bpf_prog_put(verdict); | ||
1810 | if (parse) | ||
1811 | bpf_prog_put(parse); | 1809 | bpf_prog_put(parse); |
1810 | bpf_prog_put(verdict); | ||
1811 | } | ||
1812 | if (tx_msg) | 1812 | if (tx_msg) |
1813 | bpf_prog_put(tx_msg); | 1813 | bpf_prog_put(tx_msg); |
1814 | write_unlock_bh(&sock->sk_callback_lock); | 1814 | write_unlock_bh(&sock->sk_callback_lock); |