diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-mm2/drivers/base/cpu.c linux-2.5.66-mm2+warnfix/drivers/base/cpu.c --- linux-2.5.66-mm2/drivers/base/cpu.c Tue Apr 1 11:22:06 2003 +++ linux-2.5.66-mm2+warnfix/drivers/base/cpu.c Tue Apr 1 11:26:21 2003 @@ -49,8 +49,12 @@ int __init cpu_dev_init(void) { int error; - if (!(error = devclass_register(&cpu_devclass))) - if ((error = driver_register(&cpu_driver))) + + error = devclass_register(&cpu_devclass); + if (!error) { + error = driver_register(&cpu_driver); + if (error) devclass_unregister(&cpu_devclass); + } return error; } diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-mm2/drivers/base/memblk.c linux-2.5.66-mm2+warnfix/drivers/base/memblk.c --- linux-2.5.66-mm2/drivers/base/memblk.c Tue Apr 1 11:22:06 2003 +++ linux-2.5.66-mm2+warnfix/drivers/base/memblk.c Tue Apr 1 11:24:51 2003 @@ -50,9 +50,13 @@ int __init register_memblk_type(void) { int error; - if (!(error = devclass_register(&memblk_devclass))) - if (error = driver_register(&memblk_driver)) + + error = devclass_register(&memblk_devclass); + if (!error) { + error = driver_register(&memblk_driver); + if (error) devclass_unregister(&memblk_devclass); + } return error; } postcore_initcall(register_memblk_type); diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-mm2/drivers/base/node.c linux-2.5.66-mm2+warnfix/drivers/base/node.c --- linux-2.5.66-mm2/drivers/base/node.c Tue Apr 1 11:22:06 2003 +++ linux-2.5.66-mm2+warnfix/drivers/base/node.c Tue Apr 1 11:24:51 2003 @@ -92,9 +92,13 @@ int __init register_node_type(void) { int error; - if (!(error = devclass_register(&node_devclass))) - if (error = driver_register(&node_driver)) + + error = devclass_register(&node_devclass); + if (!error) { + error = driver_register(&node_driver); + if (error) devclass_unregister(&node_devclass); + } return error; } postcore_initcall(register_node_type);