aboutsummaryrefslogtreecommitdiffstats
path: root/net/netrom/af_netrom.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/netrom/af_netrom.c')
-rw-r--r--net/netrom/af_netrom.c26
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 */
75static struct lock_class_key nr_netdev_xmit_lock_key; 75static struct lock_class_key nr_netdev_xmit_lock_key;
76static struct lock_class_key nr_netdev_addr_lock_key;
77
78static 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
85static 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
821out_release: 829out_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