Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] drivers/base - fix sparse warnings

There are a number of sparse warnings from the latest sparse
snapshot being generated from the drivers/base build. The
main culprits are due to the initialisation functions not
being declared in a header file.

Also, the firmware.c file should include <linux/device.h>
to get the prototype of firmware_register() and
firmware_unregister().

This patch moves the init function declerations from the
init.c file to the base.h, and ensures it is included in
all the relevant c sources. It also adds <linux/device.h>
to the included headers for firmware.c.

The patch does not solve all the sparse errors generated,
but reduces the count significantly.

drivers/base/core.c:161:1: warning: symbol 'devices_subsys' was not declared. Should it be static?
drivers/base/core.c:417:12: warning: symbol 'devices_init' was not declared. Should it be static?
drivers/base/sys.c:253:6: warning: symbol 'sysdev_shutdown' was not declared. Should it be static?
drivers/base/sys.c:326:5: warning: symbol 'sysdev_suspend' was not declared. Should it be static?
drivers/base/sys.c:428:5: warning: symbol 'sysdev_resume' was not declared. Should it be static?
drivers/base/sys.c:450:12: warning: symbol 'system_bus_init' was not declared. Should it be static?
drivers/base/bus.c:133:1: warning: symbol 'bus_subsys' was not declared. Should it be static?
drivers/base/bus.c:667:12: warning: symbol 'buses_init' was not declared. Should it be static?
drivers/base/class.c:759:12: warning: symbol 'classes_init' was not declared. Should it be static?
drivers/base/platform.c:313:12: warning: symbol 'platform_bus_init' was not declared. Should it be static?
drivers/base/cpu.c:110:12: warning: symbol 'cpu_dev_init' was not declared. Should it be static?
drivers/base/firmware.c:17:5: warning: symbol 'firmware_register' was not declared. Should it be static?
drivers/base/firmware.c:23:6: warning: symbol 'firmware_unregister' was not declared. Should it be static?
drivers/base/firmware.c:28:12: warning: symbol 'firmware_init' was not declared. Should it be static?
drivers/base/init.c:28:13: warning: symbol 'driver_init' was not declared. Should it be static?
drivers/base/dmapool.c:174:10: warning: implicit cast from nocast type
drivers/base/attribute_container.c:439:1: warning: symbol 'attribute_container_init' was not declared. Should it be static?
drivers/base/power/runtime.c:76:6: warning: symbol 'dpm_set_power_state' was not declared. Should it be static?

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Ben Dooks and committed by
Greg Kroah-Hartman
a1bdc7aa a7fadbe1

+22 -8
+2
drivers/base/attribute_container.c
··· 19 19 #include <linux/list.h> 20 20 #include <linux/module.h> 21 21 22 + #include "base.h" 23 + 22 24 /* This is a private structure used to tie the classdev and the 23 25 * container .. it should never be visible outside this file */ 24 26 struct internal_container {
+12
drivers/base/base.h
··· 1 + 2 + /* initialisation functions */ 3 + 4 + extern int devices_init(void); 5 + extern int buses_init(void); 6 + extern int classes_init(void); 7 + extern int firmware_init(void); 8 + extern int platform_bus_init(void); 9 + extern int system_bus_init(void); 10 + extern int cpu_dev_init(void); 11 + extern int attribute_container_init(void); 12 + 1 13 extern int bus_add_device(struct device * dev); 2 14 extern void bus_remove_device(struct device * dev); 3 15
+1
drivers/base/cpu.c
··· 9 9 #include <linux/topology.h> 10 10 #include <linux/device.h> 11 11 12 + #include "base.h" 12 13 13 14 struct sysdev_class cpu_sysdev_class = { 14 15 set_kset_name("cpu"),
+3
drivers/base/firmware.c
··· 11 11 #include <linux/kobject.h> 12 12 #include <linux/module.h> 13 13 #include <linux/init.h> 14 + #include <linux/device.h> 15 + 16 + #include "base.h" 14 17 15 18 static decl_subsys(firmware, NULL, NULL); 16 19
+2 -8
drivers/base/init.c
··· 10 10 #include <linux/device.h> 11 11 #include <linux/init.h> 12 12 13 - extern int devices_init(void); 14 - extern int buses_init(void); 15 - extern int classes_init(void); 16 - extern int firmware_init(void); 17 - extern int platform_bus_init(void); 18 - extern int system_bus_init(void); 19 - extern int cpu_dev_init(void); 20 - extern int attribute_container_init(void); 13 + #include "base.h" 14 + 21 15 /** 22 16 * driver_init - initialize driver model. 23 17 *
+2
drivers/base/platform.c
··· 17 17 #include <linux/bootmem.h> 18 18 #include <linux/err.h> 19 19 20 + #include "base.h" 21 + 20 22 struct device platform_bus = { 21 23 .bus_id = "platform", 22 24 };