aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/bpf/sockmap.c12
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,
1805out_free: 1805out_free:
1806 smap_release_sock(psock, sock); 1806 smap_release_sock(psock, sock);
1807out_progs: 1807out_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);