[PATCH] aoe: initialize locking structures before registering char devices

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Andrew Morton <akpm@...>, Ed L. Cashin <ecashin@...>
Date: Wednesday, December 26, 2007 - 4:25 pm

This patch was made against 2.6.24-rc6-mm1.

In March 2007, Alexey Dobriyan suggested this change, which
eliminates a race after register_chardev has been called but
the locking primitives protecting the error messages ring
buffer have not yet been initialized.

The initialization could happen at compile time, but that
would leave aoe as the only user of __DECLARE_SEMAPHORE_GENERIC.

Signed-off-by: Ed L. Cashin <ecashin@coraid.com>
---
 drivers/block/aoe/aoechr.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/block/aoe/aoechr.c b/drivers/block/aoe/aoechr.c
index e8e60e7..2620073 100644
--- a/drivers/block/aoe/aoechr.c
+++ b/drivers/block/aoe/aoechr.c
@@ -259,13 +259,13 @@ aoechr_init(void)
 {
 	int n, i;
 
+	sema_init(&emsgs_sema, 0);
+	spin_lock_init(&emsgs_lock);
 	n = register_chrdev(AOE_MAJOR, "aoechr", &aoe_fops);
 	if (n < 0) { 
 		printk(KERN_ERR "aoe: can't register char device\n");
 		return n;
 	}
-	sema_init(&emsgs_sema, 0);
-	spin_lock_init(&emsgs_lock);
 	aoe_class = class_create(THIS_MODULE, "aoe");
 	if (IS_ERR(aoe_class)) {
 		unregister_chrdev(AOE_MAJOR, "aoechr");
-- 
1.5.3.4

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 01/13] bring driver version number to 47, Ed L. Cashin, (Thu Dec 20, 6:15 pm)
[PATCH 13/13] update copyright date, Ed L. Cashin, (Thu Dec 20, 6:16 pm)
Re: [PATCH 13/13] update copyright date, Andrew Morton, (Sat Dec 22, 2:03 am)
[PATCH 12/13] make error messages more specific, Ed L. Cashin, (Thu Dec 20, 6:16 pm)
[PATCH 11/13] the aoeminor doesn't need a long format, Ed L. Cashin, (Thu Dec 20, 6:15 pm)
[PATCH] aoe: document the behavior of /dev/etherd/err, Ed L. Cashin, (Wed Dec 26, 4:35 pm)
[PATCH] aoe: initialize locking structures before registerin..., Ed L. Cashin, (Wed Dec 26, 4:25 pm)
[PATCH 08/13] only install new AoE device once, Ed L. Cashin, (Thu Dec 20, 6:15 pm)
[PATCH 05/13] eliminate goto and improve readability, Ed L. Cashin, (Thu Dec 20, 6:15 pm)
[PATCH 04/13] clean up udev configuration example, Ed L. Cashin, (Thu Dec 20, 6:15 pm)