af_netrom.c (112d6212c80a1c560757520bd822a41c0ad15c2c) af_netrom.c (ab92d68fc22f9afab480153bd82a20f6e2533769)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 *
4 * Copyright Jonathan Naylor G4KLX (g4klx@g4klx.demon.co.uk)
5 * Copyright Alan Cox GW4PTS (alan@lxorguk.ukuu.org.uk)
6 * Copyright Darryl Miles G7LED (dlm@g7led.demon.co.uk)
7 */
8#include <linux/module.h>

--- 50 unchanged lines hidden (view full) ---

59static unsigned short circuit = 0x101;
60
61static HLIST_HEAD(nr_list);
62static DEFINE_SPINLOCK(nr_list_lock);
63
64static const struct proto_ops nr_proto_ops;
65
66/*
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 *
4 * Copyright Jonathan Naylor G4KLX (g4klx@g4klx.demon.co.uk)
5 * Copyright Alan Cox GW4PTS (alan@lxorguk.ukuu.org.uk)
6 * Copyright Darryl Miles G7LED (dlm@g7led.demon.co.uk)
7 */
8#include <linux/module.h>

--- 50 unchanged lines hidden (view full) ---

59static unsigned short circuit = 0x101;
60
61static HLIST_HEAD(nr_list);
62static DEFINE_SPINLOCK(nr_list_lock);
63
64static const struct proto_ops nr_proto_ops;
65
66/*
67 * NETROM network devices are virtual network devices encapsulating NETROM
68 * frames into AX.25 which will be sent through an AX.25 device, so form a
69 * special "super class" of normal net devices; split their locks off into a
70 * separate class since they always nest.
71 */
72static struct lock_class_key nr_netdev_xmit_lock_key;
73static struct lock_class_key nr_netdev_addr_lock_key;
74
75static void nr_set_lockdep_one(struct net_device *dev,
76 struct netdev_queue *txq,
77 void *_unused)
78{
79 lockdep_set_class(&txq->_xmit_lock, &nr_netdev_xmit_lock_key);
80}
81
82static void nr_set_lockdep_key(struct net_device *dev)
83{
84 lockdep_set_class(&dev->addr_list_lock, &nr_netdev_addr_lock_key);
85 netdev_for_each_tx_queue(dev, nr_set_lockdep_one, NULL);
86}
87
88/*
89 * Socket removal during an interrupt is now safe.
90 */
91static void nr_remove_socket(struct sock *sk)
92{
93 spin_lock_bh(&nr_list_lock);
94 sk_del_node_init(sk);
95 spin_unlock_bh(&nr_list_lock);
96}

--- 1312 unchanged lines hidden (view full) ---

1409 }
1410
1411 dev->base_addr = i;
1412 rc = register_netdev(dev);
1413 if (rc) {
1414 free_netdev(dev);
1415 goto fail;
1416 }
67 * Socket removal during an interrupt is now safe.
68 */
69static void nr_remove_socket(struct sock *sk)
70{
71 spin_lock_bh(&nr_list_lock);
72 sk_del_node_init(sk);
73 spin_unlock_bh(&nr_list_lock);
74}

--- 1312 unchanged lines hidden (view full) ---

1387 }
1388
1389 dev->base_addr = i;
1390 rc = register_netdev(dev);
1391 if (rc) {
1392 free_netdev(dev);
1393 goto fail;
1394 }
1417 nr_set_lockdep_key(dev);
1418 dev_nr[i] = dev;
1419 }
1420
1421 rc = sock_register(&nr_family_ops);
1422 if (rc)
1423 goto fail;
1424
1425 rc = register_netdevice_notifier(&nr_dev_notifier);

--- 99 unchanged lines hidden ---
1395 dev_nr[i] = dev;
1396 }
1397
1398 rc = sock_register(&nr_family_ops);
1399 if (rc)
1400 goto fail;
1401
1402 rc = register_netdevice_notifier(&nr_dev_notifier);

--- 99 unchanged lines hidden ---