|
@@ -131,7 +131,6 @@ static void del_chan(struct pppox_sock *sock)
|
|
clear_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap);
|
|
clear_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap);
|
|
RCU_INIT_POINTER(callid_sock[sock->proto.pptp.src_addr.call_id], NULL);
|
|
RCU_INIT_POINTER(callid_sock[sock->proto.pptp.src_addr.call_id], NULL);
|
|
spin_unlock(&chan_lock);
|
|
spin_unlock(&chan_lock);
|
|
- synchronize_rcu();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
|
static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
|
@@ -520,6 +519,7 @@ static int pptp_release(struct socket *sock)
|
|
|
|
|
|
po = pppox_sk(sk);
|
|
po = pppox_sk(sk);
|
|
del_chan(po);
|
|
del_chan(po);
|
|
|
|
+ synchronize_rcu();
|
|
|
|
|
|
pppox_unbind_sock(sk);
|
|
pppox_unbind_sock(sk);
|
|
sk->sk_state = PPPOX_DEAD;
|
|
sk->sk_state = PPPOX_DEAD;
|