diff options
author | David S. Miller <davem@davemloft.net> | 2019-03-27 20:37:58 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-27 20:37:58 -0400 |
commit | 356d71e00d278d865f8c7f68adebd6ce4698a7e2 (patch) | |
tree | 8cb2dabf7440b56c6dee76b4253210c6b603b98e /net/core/net-sysfs.c | |
parent | df453700e8d81b1bdafdf684365ee2b9431fb702 (diff) | |
parent | 1a9df9e29c2afecf6e3089442d429b377279ca3c (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.c | 20 |
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 | |||
1760 | error_device_del: | ||
1761 | device_del(dev); | ||
1762 | error_put_device: | ||
1763 | put_device(dev); | ||
1758 | return error; | 1764 | return error; |
1759 | } | 1765 | } |
1760 | 1766 | ||