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 --- |