public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Ed L. Cashin" <ecashin@coraid.com>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"Ed L. Cashin" <ecashin@coraid.com>
Subject: [PATCH] aoe: initialize locking structures before registering char devices
Date: Wed, 26 Dec 2007 15:25:21 -0500	[thread overview]
Message-ID: <1198700721-14521-1-git-send-email-ecashin@coraid.com> (raw)
In-Reply-To: <20071221220040.5862b43b.akpm@linux-foundation.org>
In-Reply-To: <20071221220040.5862b43b.akpm@linux-foundation.org>

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


  parent reply	other threads:[~2007-12-26 20:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-20 22:15 [PATCH 01/13] bring driver version number to 47 Ed L. Cashin
2007-12-20 22:15 ` [PATCH 02/13] handle multiple network paths to AoE device Ed L. Cashin
2007-12-20 22:15 ` [PATCH 03/13] mac_addr: avoid 64-bit arch compiler warnings Ed L. Cashin
2007-12-20 22:15 ` [PATCH 04/13] clean up udev configuration example Ed L. Cashin
2007-12-20 22:15 ` [PATCH 05/13] eliminate goto and improve readability Ed L. Cashin
2007-12-20 22:15 ` [PATCH 06/13] user can ask driver to forget previously detected devices Ed L. Cashin
2007-12-20 22:15 ` [PATCH 07/13] dynamically allocate a capped number of skbs when necessary Ed L. Cashin
2007-12-20 22:15 ` [PATCH 08/13] only install new AoE device once Ed L. Cashin
2007-12-20 22:15 ` [PATCH 09/13] remove race between use and initialization of locks Ed L. Cashin
2007-12-22  6:00   ` Andrew Morton
2007-12-26 19:28     ` Ed L. Cashin
2007-12-26 20:25     ` Ed L. Cashin [this message]
2007-12-26 20:35     ` [PATCH] aoe: document the behavior of /dev/etherd/err Ed L. Cashin
2007-12-20 22:15 ` [PATCH 10/13] add module parameter for users who need more outstanding I/O Ed L. Cashin
2007-12-20 22:15 ` [PATCH 11/13] the aoeminor doesn't need a long format Ed L. Cashin
2007-12-20 22:16 ` [PATCH 12/13] make error messages more specific Ed L. Cashin
2007-12-20 22:16 ` [PATCH 13/13] update copyright date Ed L. Cashin
2007-12-22  6:03   ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1198700721-14521-1-git-send-email-ecashin@coraid.com \
    --to=ecashin@coraid.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox