linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] fix broken topology functions
@ 2002-12-04 23:54 Matthew Dobson
  2002-12-05  0:20 ` William Lee Irwin III
  0 siblings, 1 reply; 3+ messages in thread
From: Matthew Dobson @ 2002-12-04 23:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Trivial Patch Monkey, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 349 bytes --]

Linus,
	The register_(node|memblk)_driver functions are broken.  Pat Mochel 
recently updated sysfs to make sure that when you register a driver that 
it's associated devclass is already registered.  The way node/memblk 
registration is done now is backwards and causes panic's on NUMA 
systems.  Please apply this patch to fix it.

Cheers!

-Matt


[-- Attachment #2: topo_ordering-2.5.50.patch --]
[-- Type: text/plain, Size: 1104 bytes --]

diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.50-vanilla/drivers/base/memblk.c linux-2.5.50-topo_ordering/drivers/base/memblk.c
--- linux-2.5.50-vanilla/drivers/base/memblk.c	Wed Nov 27 14:36:23 2002
+++ linux-2.5.50-topo_ordering/drivers/base/memblk.c	Wed Dec  4 15:50:52 2002
@@ -49,7 +49,7 @@
 
 static int __init register_memblk_type(void)
 {
-	driver_register(&memblk_driver);
-	return devclass_register(&memblk_devclass);
+	devclass_register(&memblk_devclass);
+	return driver_register(&memblk_driver);
 }
 postcore_initcall(register_memblk_type);
diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.50-vanilla/drivers/base/node.c linux-2.5.50-topo_ordering/drivers/base/node.c
--- linux-2.5.50-vanilla/drivers/base/node.c	Wed Nov 27 14:35:50 2002
+++ linux-2.5.50-topo_ordering/drivers/base/node.c	Wed Dec  4 15:50:52 2002
@@ -93,7 +93,7 @@
 
 static int __init register_node_type(void)
 {
-	driver_register(&node_driver);
-	return devclass_register(&node_devclass);
+	devclass_register(&node_devclass);
+	return driver_register(&node_driver);
 }
 postcore_initcall(register_node_type);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch] fix broken topology functions
  2002-12-04 23:54 [patch] fix broken topology functions Matthew Dobson
@ 2002-12-05  0:20 ` William Lee Irwin III
  2002-12-05 21:35   ` Matthew Dobson
  0 siblings, 1 reply; 3+ messages in thread
From: William Lee Irwin III @ 2002-12-05  0:20 UTC (permalink / raw)
  To: Matthew Dobson; +Cc: Linus Torvalds, Trivial Patch Monkey, linux-kernel

On Wed, Dec 04, 2002 at 03:54:07PM -0800, Matthew Dobson wrote:
> Linus,
> 	The register_(node|memblk)_driver functions are broken.  Pat Mochel 
> recently updated sysfs to make sure that when you register a driver that 
> it's associated devclass is already registered.  The way node/memblk 
> registration is done now is backwards and causes panic's on NUMA 
> systems.  Please apply this patch to fix it.
> Cheers!

That didn't check the return value of devclass_register():



Reorder devclass_register() and driver_register() so these things
stop oopsing.

 memblk.c |    4 ++--
 node.c   |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)


diff -urpN mm1-2.5.50/drivers/base/memblk.c mm1-2.5.50-1/drivers/base/memblk.c
--- mm1-2.5.50/drivers/base/memblk.c	2002-11-27 14:36:23.000000000 -0800
+++ mm1-2.5.50-1/drivers/base/memblk.c	2002-12-04 12:53:59.000000000 -0800
@@ -49,7 +49,7 @@ int __init register_memblk(struct memblk
 
 static int __init register_memblk_type(void)
 {
-	driver_register(&memblk_driver);
-	return devclass_register(&memblk_devclass);
+	int error = devclass_register(&memblk_devclass);
+	return error ? error : driver_register(&memblk_driver);
 }
 postcore_initcall(register_memblk_type);
diff -urpN mm1-2.5.50/drivers/base/node.c mm1-2.5.50-1/drivers/base/node.c
--- mm1-2.5.50/drivers/base/node.c	2002-11-27 14:35:50.000000000 -0800
+++ mm1-2.5.50-1/drivers/base/node.c	2002-12-04 12:53:05.000000000 -0800
@@ -93,7 +93,7 @@ int __init register_node(struct node *no
 
 static int __init register_node_type(void)
 {
-	driver_register(&node_driver);
-	return devclass_register(&node_devclass);
+	int error = devclass_register(&node_devclass);
+	return error ? error : driver_register(&node_driver);
 }
 postcore_initcall(register_node_type);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch] fix broken topology functions
  2002-12-05  0:20 ` William Lee Irwin III
@ 2002-12-05 21:35   ` Matthew Dobson
  0 siblings, 0 replies; 3+ messages in thread
From: Matthew Dobson @ 2002-12-05 21:35 UTC (permalink / raw)
  To: William Lee Irwin III; +Cc: Linus Torvalds, Trivial Patch Monkey, linux-kernel

William Lee Irwin III wrote:
> On Wed, Dec 04, 2002 at 03:54:07PM -0800, Matthew Dobson wrote:
> 
>>Linus,
>>	The register_(node|memblk)_driver functions are broken.  Pat Mochel 
>>recently updated sysfs to make sure that when you register a driver that 
>>it's associated devclass is already registered.  The way node/memblk 
>>registration is done now is backwards and causes panic's on NUMA 
>>systems.  Please apply this patch to fix it.
>>Cheers!
> 
> 
> That didn't check the return value of devclass_register():
> 
> 
> 
> Reorder devclass_register() and driver_register() so these things
> stop oopsing.

Even better.  Thanks Bill!

Cheers!

-Matt


> 
>  memblk.c |    4 ++--
>  node.c   |    4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> 
> diff -urpN mm1-2.5.50/drivers/base/memblk.c mm1-2.5.50-1/drivers/base/memblk.c
> --- mm1-2.5.50/drivers/base/memblk.c	2002-11-27 14:36:23.000000000 -0800
> +++ mm1-2.5.50-1/drivers/base/memblk.c	2002-12-04 12:53:59.000000000 -0800
> @@ -49,7 +49,7 @@ int __init register_memblk(struct memblk
>  
>  static int __init register_memblk_type(void)
>  {
> -	driver_register(&memblk_driver);
> -	return devclass_register(&memblk_devclass);
> +	int error = devclass_register(&memblk_devclass);
> +	return error ? error : driver_register(&memblk_driver);
>  }
>  postcore_initcall(register_memblk_type);
> diff -urpN mm1-2.5.50/drivers/base/node.c mm1-2.5.50-1/drivers/base/node.c
> --- mm1-2.5.50/drivers/base/node.c	2002-11-27 14:35:50.000000000 -0800
> +++ mm1-2.5.50-1/drivers/base/node.c	2002-12-04 12:53:05.000000000 -0800
> @@ -93,7 +93,7 @@ int __init register_node(struct node *no
>  
>  static int __init register_node_type(void)
>  {
> -	driver_register(&node_driver);
> -	return devclass_register(&node_devclass);
> +	int error = devclass_register(&node_devclass);
> +	return error ? error : driver_register(&node_driver);
>  }
>  postcore_initcall(register_node_type);
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-12-05 21:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-12-04 23:54 [patch] fix broken topology functions Matthew Dobson
2002-12-05  0:20 ` William Lee Irwin III
2002-12-05 21:35   ` Matthew Dobson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).