On Tue, 26 Jun 2007 14:50:12 -0400 "Ed L. Cashin" <[EMAIL PROTECTED]> wrote:
> This change was originally submitted by Alexey Dobriyan in an email > with ... > > Message-ID: <[EMAIL PROTECTED]> > > and the comment, > > Some drivers do register_chrdev() before lock or semaphore used in > corresponding file_operations is initialized. > > Andrew Morton commented that these locks should be initialized at > compile time, but Alexey Debriyan pointed out that the Documentation > tells us to use dynamic initialization whenever possible, and then the > discussion petered out. > > http://preview.tinyurl.com/2pxq6p > > I believe we made these locks dynamic because of the notice in > Documentation/spinlocks.txt, which says that static initializers are > deprecated: > > UPDATE March 21 2005 Amit Gud <[EMAIL PROTECTED]> > > Macros SPIN_LOCK_UNLOCKED and RW_LOCK_UNLOCKED are deprecated and will be > removed soon. So for any new code dynamic initialization should be used: The document is inaccurate. Yes, the use of SPIN_LOCK_UNLOCKED should be avoided because it breaks lockdep. But it can be replaced with DEFINE_SPINLOCK: there is no need to switch to runtime initialisation. > ... > > In any case, the patch below makes the code correct and in keeping > with the existing documentation. If the existing docs are wrong, I'd > be happy to follow up with a patch that corrects them and makes these > aoechr.c locks static. > > Signed-off-by: Alexey Dobriyan <[EMAIL PROTECTED]> > Signed-off-by: Ed L. Cashin <[EMAIL PROTECTED]> > --- > 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 10b38a7..2b4f873 100644 > --- a/drivers/block/aoe/aoechr.c > +++ b/drivers/block/aoe/aoechr.c > @@ -256,13 +256,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.2.1 > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/