Re: [PATCH 2.6.24] x86: add sysfs interface for cpuid module

From: Sam Ravnborg
Date: Tue Jan 29 2008 - 03:44:44 EST


> +
> +static struct notifier_block __cpuinitdata cpuid_sysfs_cpu_notifier = {
> + .notifier_call = cpuid_sysfs_cpu_callback,
> +};
Data is annotated _cpuintidata

but

> +
Data is annotated _cpuintidata

> @@ -217,11 +445,14 @@ static void __exit cpuid_exit(void)
> {
> int cpu = 0;
>
> - for_each_online_cpu(cpu)
> + for_each_online_cpu(cpu) {
> cpuid_device_destroy(cpu);
> + remove_cpuid_sysfs(cpu);
> + }
> class_destroy(cpuid_class);
> unregister_chrdev(CPUID_MAJOR, "cpu/cpuid");
> unregister_hotcpu_notifier(&cpuid_class_cpu_notifier);
> + unregister_hotcpu_notifier(&cpuid_sysfs_cpu_notifier);

used in an __exit function.

You should have seen a Section mismatch warning for this.
The right fix is to annotate the cpuid_sysfs_cpu_notifier
with __initdata_refok (soon to be named __refdata)
Or even better to declare it const and use _refconst.

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