|
@@ -114,7 +114,7 @@ extern int sysctl_sctp_wmem[3];
|
|
|
|
|
|
static int sctp_memory_pressure;
|
|
|
static atomic_t sctp_memory_allocated;
|
|
|
-static atomic_t sctp_sockets_allocated;
|
|
|
+struct percpu_counter sctp_sockets_allocated;
|
|
|
|
|
|
static void sctp_enter_memory_pressure(struct sock *sk)
|
|
|
{
|
|
@@ -3613,7 +3613,7 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk)
|
|
|
sp->hmac = NULL;
|
|
|
|
|
|
SCTP_DBG_OBJCNT_INC(sock);
|
|
|
- atomic_inc(&sctp_sockets_allocated);
|
|
|
+ percpu_counter_inc(&sctp_sockets_allocated);
|
|
|
|
|
|
local_bh_disable();
|
|
|
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
|
|
@@ -3632,7 +3632,7 @@ SCTP_STATIC void sctp_destroy_sock(struct sock *sk)
|
|
|
/* Release our hold on the endpoint. */
|
|
|
ep = sctp_sk(sk)->ep;
|
|
|
sctp_endpoint_free(ep);
|
|
|
- atomic_dec(&sctp_sockets_allocated);
|
|
|
+ percpu_counter_dec(&sctp_sockets_allocated);
|
|
|
local_bh_disable();
|
|
|
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
|
|
|
local_bh_enable();
|