diff options
| author | Ralf Baechle <ralf@linux-mips.org> | 2006-07-10 19:23:21 -0400 |
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2006-07-12 16:58:43 -0400 |
| commit | 5cc29e3bea77092c48e5c71d792c7461e6a6c4cf (patch) | |
| tree | c72c228a673d61f11e5782d564b912eabda09a64 | |
| parent | 95ff9f4d3cc72b62b76498290d00d129e1e62545 (diff) | |
[NETROM]: Fix locking order when establishing a NETROM circuit.
When establishing a new circuit in nr_rx_frame the locks are taken in
a different order than in the rest of the stack. This should be
harmless but triggers lockdep. Either way, reordering the code a
little solves the issue.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | net/netrom/af_netrom.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index ecc796878f38..672d5f803f8f 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c | |||
| @@ -986,18 +986,18 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev) | |||
| 986 | nr_make->vl = 0; | 986 | nr_make->vl = 0; |
| 987 | nr_make->state = NR_STATE_3; | 987 | nr_make->state = NR_STATE_3; |
| 988 | sk_acceptq_added(sk); | 988 | sk_acceptq_added(sk); |
| 989 | |||
| 990 | nr_insert_socket(make); | ||
| 991 | |||
| 992 | skb_queue_head(&sk->sk_receive_queue, skb); | 989 | skb_queue_head(&sk->sk_receive_queue, skb); |
| 993 | 990 | ||
| 994 | nr_start_heartbeat(make); | ||
| 995 | nr_start_idletimer(make); | ||
| 996 | |||
| 997 | if (!sock_flag(sk, SOCK_DEAD)) | 991 | if (!sock_flag(sk, SOCK_DEAD)) |
| 998 | sk->sk_data_ready(sk, skb->len); | 992 | sk->sk_data_ready(sk, skb->len); |
| 999 | 993 | ||
| 1000 | bh_unlock_sock(sk); | 994 | bh_unlock_sock(sk); |
| 995 | |||
| 996 | nr_insert_socket(make); | ||
| 997 | |||
| 998 | nr_start_heartbeat(make); | ||
| 999 | nr_start_idletimer(make); | ||
| 1000 | |||
| 1001 | return 1; | 1001 | return 1; |
| 1002 | } | 1002 | } |
| 1003 | 1003 | ||
