Re: linux-next: driver-core tree build warning

From: Greg KH
Date: Thu Jan 21 2010 - 18:11:28 EST


On Wed, Jan 20, 2010 at 05:44:41PM +1100, Stephen Rothwell wrote:
> Hi Greg,
>
> On Wed, 20 Jan 2010 17:25:43 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> >
> > (lines 262-266)
> > static struct sysdev_class_attribute *cpu_sysdev_class_attrs[] = {
> > #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
> > &class_attr_probe.attr,
> > &class_attr_release.attr,
> > #endif
>
> The reason you may not see this is because CONFIG_ARCH_CPU_PROBE_RELEASE
> is not set for x86_64 allmodconfig builds (and probably many others).

Ah, you are right, I was focusing on the lines after this.

Here's a patch that I just applied to my tree to hopefully resolve this
issue.

thanks,

greg k-h

----------

From: Greg Kroah-Hartman <gregkh@xxxxxxx>
Subject: sysdev: fix up the probe/release attributes

These should be sysdev attributes, not class attributes. This patch
should resolve the problem.

Thanks to Stephen Rothwell for pointing out the problem.

Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
Cc: Andi Kleen <andi@xxxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
---
drivers/base/cpu.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -79,24 +79,24 @@ void unregister_cpu(struct cpu *cpu)
}

#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
-static ssize_t cpu_probe_store(struct class *class,
- struct class_attribute *attr,
+static ssize_t cpu_probe_store(struct sys_device *dev,
+ struct sysdev_attribute *attr,
const char *buf,
size_t count)
{
return arch_cpu_probe(buf, count);
}

-static ssize_t cpu_release_store(struct class *class,
- struct class_attribute *attr,
+static ssize_t cpu_release_store(struct sys_device *dev,
+ struct sysdev_attribute *attr,
const char *buf,
size_t count)
{
return arch_cpu_release(buf, count);
}

-static CLASS_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);
-static CLASS_ATTR(release, S_IWUSR, NULL, cpu_release_store);
+static SYSDEV_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);
+static SYSDEV_ATTR(release, S_IWUSR, NULL, cpu_release_store);
#endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */

#else /* ... !CONFIG_HOTPLUG_CPU */
@@ -261,8 +261,8 @@ int __init cpu_dev_init(void)

static struct sysdev_class_attribute *cpu_sysdev_class_attrs[] = {
#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
- &class_attr_probe.attr,
- &class_attr_release.attr,
+ &attr_probe.attr,
+ &attr_release.attr,
#endif
&cpu_attrs[0].attr,
&cpu_attrs[1].attr,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/