diff options
Diffstat (limited to 'net/netrom/af_netrom.c')
-rw-r--r-- | net/netrom/af_netrom.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 4bae8b998cab..532e4faa29f7 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c | |||
@@ -73,6 +73,20 @@ static const struct proto_ops nr_proto_ops; | |||
73 | * separate class since they always nest. | 73 | * separate class since they always nest. |
74 | */ | 74 | */ |
75 | static struct lock_class_key nr_netdev_xmit_lock_key; | 75 | static struct lock_class_key nr_netdev_xmit_lock_key; |
76 | static struct lock_class_key nr_netdev_addr_lock_key; | ||
77 | |||
78 | static void nr_set_lockdep_one(struct net_device *dev, | ||
79 | struct netdev_queue *txq, | ||
80 | void *_unused) | ||
81 | { | ||
82 | lockdep_set_class(&txq->_xmit_lock, &nr_netdev_xmit_lock_key); | ||
83 | } | ||
84 | |||
85 | static void nr_set_lockdep_key(struct net_device *dev) | ||
86 | { | ||
87 | lockdep_set_class(&dev->addr_list_lock, &nr_netdev_addr_lock_key); | ||
88 | netdev_for_each_tx_queue(dev, nr_set_lockdep_one, NULL); | ||
89 | } | ||
76 | 90 | ||
77 | /* | 91 | /* |
78 | * Socket removal during an interrupt is now safe. | 92 | * Socket removal during an interrupt is now safe. |
@@ -106,7 +120,7 @@ static int nr_device_event(struct notifier_block *this, unsigned long event, voi | |||
106 | { | 120 | { |
107 | struct net_device *dev = (struct net_device *)ptr; | 121 | struct net_device *dev = (struct net_device *)ptr; |
108 | 122 | ||
109 | if (dev_net(dev) != &init_net) | 123 | if (!net_eq(dev_net(dev), &init_net)) |
110 | return NOTIFY_DONE; | 124 | return NOTIFY_DONE; |
111 | 125 | ||
112 | if (event != NETDEV_DOWN) | 126 | if (event != NETDEV_DOWN) |
@@ -475,13 +489,11 @@ static struct sock *nr_make_new(struct sock *osk) | |||
475 | sock_init_data(NULL, sk); | 489 | sock_init_data(NULL, sk); |
476 | 490 | ||
477 | sk->sk_type = osk->sk_type; | 491 | sk->sk_type = osk->sk_type; |
478 | sk->sk_socket = osk->sk_socket; | ||
479 | sk->sk_priority = osk->sk_priority; | 492 | sk->sk_priority = osk->sk_priority; |
480 | sk->sk_protocol = osk->sk_protocol; | 493 | sk->sk_protocol = osk->sk_protocol; |
481 | sk->sk_rcvbuf = osk->sk_rcvbuf; | 494 | sk->sk_rcvbuf = osk->sk_rcvbuf; |
482 | sk->sk_sndbuf = osk->sk_sndbuf; | 495 | sk->sk_sndbuf = osk->sk_sndbuf; |
483 | sk->sk_state = TCP_ESTABLISHED; | 496 | sk->sk_state = TCP_ESTABLISHED; |
484 | sk->sk_sleep = osk->sk_sleep; | ||
485 | sock_copy_flags(sk, osk); | 497 | sock_copy_flags(sk, osk); |
486 | 498 | ||
487 | skb_queue_head_init(&nr->ack_queue); | 499 | skb_queue_head_init(&nr->ack_queue); |
@@ -538,11 +550,9 @@ static int nr_release(struct socket *sock) | |||
538 | sk->sk_state_change(sk); | 550 | sk->sk_state_change(sk); |
539 | sock_orphan(sk); | 551 | sock_orphan(sk); |
540 | sock_set_flag(sk, SOCK_DESTROY); | 552 | sock_set_flag(sk, SOCK_DESTROY); |
541 | sk->sk_socket = NULL; | ||
542 | break; | 553 | break; |
543 | 554 | ||
544 | default: | 555 | default: |
545 | sk->sk_socket = NULL; | ||
546 | break; | 556 | break; |
547 | } | 557 | } |
548 | 558 | ||
@@ -810,13 +820,11 @@ static int nr_accept(struct socket *sock, struct socket *newsock, int flags) | |||
810 | goto out_release; | 820 | goto out_release; |
811 | 821 | ||
812 | newsk = skb->sk; | 822 | newsk = skb->sk; |
813 | newsk->sk_socket = newsock; | 823 | sock_graft(newsk, newsock); |
814 | newsk->sk_sleep = &newsock->wait; | ||
815 | 824 | ||
816 | /* Now attach up the new socket */ | 825 | /* Now attach up the new socket */ |
817 | kfree_skb(skb); | 826 | kfree_skb(skb); |
818 | sk_acceptq_removed(sk); | 827 | sk_acceptq_removed(sk); |
819 | newsock->sk = newsk; | ||
820 | 828 | ||
821 | out_release: | 829 | out_release: |
822 | release_sock(sk); | 830 | release_sock(sk); |
@@ -1436,7 +1444,7 @@ static int __init nr_proto_init(void) | |||
1436 | free_netdev(dev); | 1444 | free_netdev(dev); |
1437 | goto fail; | 1445 | goto fail; |
1438 | } | 1446 | } |
1439 | lockdep_set_class(&dev->_xmit_lock, &nr_netdev_xmit_lock_key); | 1447 | nr_set_lockdep_key(dev); |
1440 | dev_nr[i] = dev; | 1448 | dev_nr[i] = dev; |
1441 | } | 1449 | } |
1442 | 1450 | ||