.. | .. |
---|
64 | 64 | static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) |
---|
65 | 65 | { |
---|
66 | 66 | struct sock *sk = d->owner, *parent; |
---|
67 | | - unsigned long flags; |
---|
68 | 67 | |
---|
69 | 68 | if (!sk) |
---|
70 | 69 | return; |
---|
71 | 70 | |
---|
72 | 71 | BT_DBG("dlc %p state %ld err %d", d, d->state, err); |
---|
73 | 72 | |
---|
74 | | - local_irq_save(flags); |
---|
75 | | - bh_lock_sock(sk); |
---|
| 73 | + spin_lock_bh(&sk->sk_lock.slock); |
---|
76 | 74 | |
---|
77 | 75 | if (err) |
---|
78 | 76 | sk->sk_err = err; |
---|
.. | .. |
---|
93 | 91 | sk->sk_state_change(sk); |
---|
94 | 92 | } |
---|
95 | 93 | |
---|
96 | | - bh_unlock_sock(sk); |
---|
97 | | - local_irq_restore(flags); |
---|
| 94 | + spin_unlock_bh(&sk->sk_lock.slock); |
---|
98 | 95 | |
---|
99 | 96 | if (parent && sock_flag(sk, SOCK_ZAPPED)) { |
---|
100 | 97 | /* We have to drop DLC lock here, otherwise |
---|