sctp: per_cpu variables should be in bh_disabled section
Since the change of the atomics to percpu variables, we now have to disable BH in process context when touching percpu variables. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0c42749cff
commit
81419d862d
@ -3719,12 +3719,12 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk)
|
|||||||
sp->hmac = NULL;
|
sp->hmac = NULL;
|
||||||
|
|
||||||
SCTP_DBG_OBJCNT_INC(sock);
|
SCTP_DBG_OBJCNT_INC(sock);
|
||||||
percpu_counter_inc(&sctp_sockets_allocated);
|
|
||||||
|
|
||||||
/* Set socket backlog limit. */
|
/* Set socket backlog limit. */
|
||||||
sk->sk_backlog.limit = sysctl_sctp_rmem[1];
|
sk->sk_backlog.limit = sysctl_sctp_rmem[1];
|
||||||
|
|
||||||
local_bh_disable();
|
local_bh_disable();
|
||||||
|
percpu_counter_inc(&sctp_sockets_allocated);
|
||||||
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
|
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
|
|
||||||
@ -3741,8 +3741,8 @@ SCTP_STATIC void sctp_destroy_sock(struct sock *sk)
|
|||||||
/* Release our hold on the endpoint. */
|
/* Release our hold on the endpoint. */
|
||||||
ep = sctp_sk(sk)->ep;
|
ep = sctp_sk(sk)->ep;
|
||||||
sctp_endpoint_free(ep);
|
sctp_endpoint_free(ep);
|
||||||
percpu_counter_dec(&sctp_sockets_allocated);
|
|
||||||
local_bh_disable();
|
local_bh_disable();
|
||||||
|
percpu_counter_dec(&sctp_sockets_allocated);
|
||||||
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
|
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user