| .. | .. |
|---|
| 122 | 122 | __acquires(&sk->sk_lock.slock) |
|---|
| 123 | 123 | { |
|---|
| 124 | 124 | lock_sock(sk); |
|---|
| 125 | | - preempt_disable(); |
|---|
| 126 | 125 | rcu_read_lock(); |
|---|
| 127 | 126 | } |
|---|
| 128 | 127 | |
|---|
| .. | .. |
|---|
| 130 | 129 | __releases(&sk->sk_lock.slock) |
|---|
| 131 | 130 | { |
|---|
| 132 | 131 | rcu_read_unlock(); |
|---|
| 133 | | - preempt_enable(); |
|---|
| 134 | 132 | release_sock(sk); |
|---|
| 135 | 133 | } |
|---|
| 136 | 134 | |
|---|
| .. | .. |
|---|
| 358 | 356 | |
|---|
| 359 | 357 | sk = xchg(psk, NULL); |
|---|
| 360 | 358 | if (sk) { |
|---|
| 359 | + sock_hold(sk); |
|---|
| 361 | 360 | lock_sock(sk); |
|---|
| 362 | 361 | rcu_read_lock(); |
|---|
| 363 | 362 | sock_map_unref(sk, psk); |
|---|
| 364 | 363 | rcu_read_unlock(); |
|---|
| 365 | 364 | release_sock(sk); |
|---|
| 365 | + sock_put(sk); |
|---|
| 366 | 366 | } |
|---|
| 367 | 367 | } |
|---|
| 368 | 368 | |
|---|