aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-05-04 18:27:29 -0400
committerDavid S. Miller <davem@davemloft.net>2016-05-04 23:47:54 -0400
commit777c6ae57ebd432b59950b3e28bf01676018d1b2 (patch)
treedaa9fc5647e16767136233e80544b785727f1271
parentaa8a8b05adfc72e562abe7ae5c6933906e0ed2e9 (diff)
tcp: two more missing bh disable
percpu_counter only have protection against preemption. TCP stack uses them possibly from BH, so we need BH protection in contexts that could be run in process context Fixes: c10d9310edf5 ("tcp: do not assume TCP code is non preemptible") Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/inet_connection_sock.c2
-rw-r--r--net/ipv4/tcp_ipv4.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 7ce112aa3a7b..fa8c39804bdb 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -706,7 +706,9 @@ void inet_csk_destroy_sock(struct sock *sk)
706 706
707 sk_refcnt_debug_release(sk); 707 sk_refcnt_debug_release(sk);
708 708
709 local_bh_disable();
709 percpu_counter_dec(sk->sk_prot->orphan_count); 710 percpu_counter_dec(sk->sk_prot->orphan_count);
711 local_bh_enable();
710 sock_put(sk); 712 sock_put(sk);
711} 713}
712EXPORT_SYMBOL(inet_csk_destroy_sock); 714EXPORT_SYMBOL(inet_csk_destroy_sock);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 761bc492c5e3..a7ab9472d645 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1839,7 +1839,9 @@ void tcp_v4_destroy_sock(struct sock *sk)
1839 tcp_free_fastopen_req(tp); 1839 tcp_free_fastopen_req(tp);
1840 tcp_saved_syn_free(tp); 1840 tcp_saved_syn_free(tp);
1841 1841
1842 local_bh_disable();
1842 sk_sockets_allocated_dec(sk); 1843 sk_sockets_allocated_dec(sk);
1844 local_bh_enable();
1843 1845
1844 if (mem_cgroup_sockets_enabled && sk->sk_memcg) 1846 if (mem_cgroup_sockets_enabled && sk->sk_memcg)
1845 sock_release_memcg(sk); 1847 sock_release_memcg(sk);