Fix error handling in sysfs registration
PATCH 1/1 Fix error handling in sysfs registration
The cpu, memblk, and node driver/device registration should be a little more clean in the way it handles registration failures. Or at least *consistent* amongst the topology elements. Right now, failures are either silent, obscure, or leave things in an inconsistent state.
Cheers!
-Matt
drivers/base/cpu.c +5 -2
@@ -48,6 +48,9 @@int __init cpu_dev_init (void ) { -devclass_register (&cpu_devclass); -return driver_register (&cpu_driver); +int error; +if (!(error =devclass_register (&cpu_devclass))) +if (error =driver_register (&cpu_driver)) +devclass_unregister (&cpu_devclass); +return error; }
drivers/base/memblk.c +6 -3
@@ -47,9 +47,12 @@ } -static int __init register_memblk_type (void ) +int __init register_memblk_type (void ) { -int error =devclass_register (&memblk_devclass); -return error ? error :driver_register (&memblk_driver); +int error; +if (!(error =devclass_register (&memblk_devclass))) +if (error =driver_register (&memblk_driver)) +devclass_unregister (&memblk_devclass); +return error; }postcore_initcall (register_memblk_type);
drivers/base/node.c +6 -3
@@ -89,9 +89,12 @@ } -static int __init register_node_type (void ) +int __init register_node_type (void ) { -int error =devclass_register (&node_devclass); -return error ? error :driver_register (&node_driver); +int error; +if (!(error =devclass_register (&node_devclass))) +if (error =driver_register (&node_driver)) +devclass_unregister (&node_devclass); +return error; }postcore_initcall (register_node_type);
Sorry about the delay, I've been traveling..
Quoted 4 lines
The cpu, memblk, and node driver/device registration should be a little more clean in the way it handles registration failures. Or at least *consistent* amongst the topology elements. Right now, failures are either silent, obscure, or leave things in an inconsistent state.
Thanks. I've applied this, and will make sure it gets merged (finally).
-pat