aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/net-sysfs.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-03-27 20:37:58 -0400
committerDavid S. Miller <davem@davemloft.net>2019-03-27 20:37:58 -0400
commit356d71e00d278d865f8c7f68adebd6ce4698a7e2 (patch)
tree8cb2dabf7440b56c6dee76b4253210c6b603b98e /net/core/net-sysfs.c
parentdf453700e8d81b1bdafdf684365ee2b9431fb702 (diff)
parent1a9df9e29c2afecf6e3089442d429b377279ca3c (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/core/net-sysfs.c')
-rw-r--r--net/core/net-sysfs.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 851cabb90bce..c14f0dc0157c 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -928,6 +928,8 @@ static int rx_queue_add_kobject(struct net_device *dev, int index)
928 if (error) 928 if (error)
929 return error; 929 return error;
930 930
931 dev_hold(queue->dev);
932
931 if (dev->sysfs_rx_queue_group) { 933 if (dev->sysfs_rx_queue_group) {
932 error = sysfs_create_group(kobj, dev->sysfs_rx_queue_group); 934 error = sysfs_create_group(kobj, dev->sysfs_rx_queue_group);
933 if (error) { 935 if (error) {
@@ -937,7 +939,6 @@ static int rx_queue_add_kobject(struct net_device *dev, int index)
937 } 939 }
938 940
939 kobject_uevent(kobj, KOBJ_ADD); 941 kobject_uevent(kobj, KOBJ_ADD);
940 dev_hold(queue->dev);
941 942
942 return error; 943 return error;
943} 944}
@@ -1464,6 +1465,8 @@ static int netdev_queue_add_kobject(struct net_device *dev, int index)
1464 if (error) 1465 if (error)
1465 return error; 1466 return error;
1466 1467
1468 dev_hold(queue->dev);
1469
1467#ifdef CONFIG_BQL 1470#ifdef CONFIG_BQL
1468 error = sysfs_create_group(kobj, &dql_group); 1471 error = sysfs_create_group(kobj, &dql_group);
1469 if (error) { 1472 if (error) {
@@ -1473,7 +1476,6 @@ static int netdev_queue_add_kobject(struct net_device *dev, int index)
1473#endif 1476#endif
1474 1477
1475 kobject_uevent(kobj, KOBJ_ADD); 1478 kobject_uevent(kobj, KOBJ_ADD);
1476 dev_hold(queue->dev);
1477 1479
1478 return 0; 1480 return 0;
1479} 1481}
@@ -1745,16 +1747,20 @@ int netdev_register_kobject(struct net_device *ndev)
1745 1747
1746 error = device_add(dev); 1748 error = device_add(dev);
1747 if (error) 1749 if (error)
1748 return error; 1750 goto error_put_device;
1749 1751
1750 error = register_queue_kobjects(ndev); 1752 error = register_queue_kobjects(ndev);
1751 if (error) { 1753 if (error)
1752 device_del(dev); 1754 goto error_device_del;
1753 return error;
1754 }
1755 1755
1756 pm_runtime_set_memalloc_noio(dev, true); 1756 pm_runtime_set_memalloc_noio(dev, true);
1757 1757
1758 return 0;
1759
1760error_device_del:
1761 device_del(dev);
1762error_put_device:
1763 put_device(dev);
1758 return error; 1764 return error;
1759} 1765}
1760 1766