From: Cornelia Huck Check the return value of device_register() in platform_bus_init(). Signed-off-by: Cornelia Huck Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/base/platform.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff -puN drivers/base/platform.c~driver-core-fixes-device_register-retval-check-in drivers/base/platform.c --- a/drivers/base/platform.c~driver-core-fixes-device_register-retval-check-in +++ a/drivers/base/platform.c @@ -563,8 +563,15 @@ EXPORT_SYMBOL_GPL(platform_bus_type); int __init platform_bus_init(void) { - device_register(&platform_bus); - return bus_register(&platform_bus_type); + int error; + + error = device_register(&platform_bus); + if (error) + return error; + error = bus_register(&platform_bus_type); + if (error) + device_unregister(&platform_bus); + return error; } #ifndef ARCH_HAS_DMA_GET_REQUIRED_MASK _