From 3c9b8aaf95bb4de3d8ac9fd83d4aca2c97bd9f2a Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 29 Jan 2015 12:29:22 +0100 Subject: drivers/base/node: Avoid manual device_create_file() calls Instead of manual calls of multiple device_create_file() and device_remove_file(), use the static attribute groups assigned to the new device. This also fixes the possible races, too. Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- drivers/base/node.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'drivers/base/node.c') diff --git a/drivers/base/node.c b/drivers/base/node.c index 36fabe43cd44..06dce51e42e7 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -200,6 +200,25 @@ static ssize_t node_read_distance(struct device *dev, } static DEVICE_ATTR(distance, S_IRUGO, node_read_distance, NULL); +static struct attribute *node_dev_attrs[] = { + &dev_attr_cpumap.attr, + &dev_attr_cpulist.attr, + &dev_attr_meminfo.attr, + &dev_attr_numastat.attr, + &dev_attr_distance.attr, + &dev_attr_vmstat.attr, + NULL +}; + +static struct attribute_group node_dev_attr_group = { + .attrs = node_dev_attrs, +}; + +static const struct attribute_group *node_dev_attr_groups[] = { + &node_dev_attr_group, + NULL +}; + #ifdef CONFIG_HUGETLBFS /* * hugetlbfs per node attributes registration interface: @@ -273,16 +292,10 @@ static int register_node(struct node *node, int num, struct node *parent) node->dev.id = num; node->dev.bus = &node_subsys; node->dev.release = node_device_release; + node->dev.groups = node_dev_attr_groups; error = device_register(&node->dev); if (!error){ - device_create_file(&node->dev, &dev_attr_cpumap); - device_create_file(&node->dev, &dev_attr_cpulist); - device_create_file(&node->dev, &dev_attr_meminfo); - device_create_file(&node->dev, &dev_attr_numastat); - device_create_file(&node->dev, &dev_attr_distance); - device_create_file(&node->dev, &dev_attr_vmstat); - hugetlb_register_node(node); compaction_register_node(node); @@ -299,13 +312,6 @@ static int register_node(struct node *node, int num, struct node *parent) */ void unregister_node(struct node *node) { - device_remove_file(&node->dev, &dev_attr_cpumap); - device_remove_file(&node->dev, &dev_attr_cpulist); - device_remove_file(&node->dev, &dev_attr_meminfo); - device_remove_file(&node->dev, &dev_attr_numastat); - device_remove_file(&node->dev, &dev_attr_distance); - device_remove_file(&node->dev, &dev_attr_vmstat); - hugetlb_unregister_node(node); /* no-op, if memoryless node */ device_unregister(&node->dev); -- cgit v1.2.3 From 7ca7ec40f42a13c6966fb3a5d8713e895d58c728 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 25 Mar 2015 13:47:17 +0100 Subject: drivers/base/node: clean up attribute group conversion We can use the ATTRIBUTE_GROUPS() macro here, so use it, saving some lines of code. Cc: Takashi Iwai Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- drivers/base/node.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'drivers/base/node.c') diff --git a/drivers/base/node.c b/drivers/base/node.c index 06dce51e42e7..6356866167af 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -209,15 +209,7 @@ static struct attribute *node_dev_attrs[] = { &dev_attr_vmstat.attr, NULL }; - -static struct attribute_group node_dev_attr_group = { - .attrs = node_dev_attrs, -}; - -static const struct attribute_group *node_dev_attr_groups[] = { - &node_dev_attr_group, - NULL -}; +ATTRIBUTE_GROUPS(node_dev); #ifdef CONFIG_HUGETLBFS /* @@ -292,7 +284,7 @@ static int register_node(struct node *node, int num, struct node *parent) node->dev.id = num; node->dev.bus = &node_subsys; node->dev.release = node_device_release; - node->dev.groups = node_dev_attr_groups; + node->dev.groups = node_dev_groups; error = device_register(&node->dev); if (!error){ -- cgit v1.2.3 From 518d3f38abb8cc3a5125e71a1d23a366c69e2e49 Mon Sep 17 00:00:00 2001 From: Ana Nedelcu Date: Sun, 8 Mar 2015 12:48:48 +0200 Subject: drivers: base: node: Delete space after pointer declaration This patch fixes the following error found by checkpatch.pl: ERROR: "foo * bar" should be "foo *bar" Signed-off-by: Ana Nedelcu Signed-off-by: Greg Kroah-Hartman --- drivers/base/node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/base/node.c') diff --git a/drivers/base/node.c b/drivers/base/node.c index 6356866167af..a2aa65b4215d 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -180,7 +180,7 @@ static ssize_t node_read_vmstat(struct device *dev, static DEVICE_ATTR(vmstat, S_IRUGO, node_read_vmstat, NULL); static ssize_t node_read_distance(struct device *dev, - struct device_attribute *attr, char * buf) + struct device_attribute *attr, char *buf) { int nid = dev->id; int len = 0; -- cgit v1.2.3