| .. | .. |
|---|
| 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 |
|---|