[MTD] mtdoops: fix a bit of spin lock usage
authorAdrian Hunter <adrian.hunter@nokia.com>
Wed, 4 Mar 2009 07:53:40 +0000 (09:53 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 20 Mar 2009 18:39:25 +0000 (18:39 +0000)
- do not leave spin lock locked
- initialise spin lock

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Acked-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/mtdoops.c

index fdf504fb319a174b2a46e1329c2c8ef40e303fbb..1060337c06df7a57b0a1a76455635a004ad22543 100644 (file)
@@ -361,8 +361,10 @@ mtdoops_console_write(struct console *co, const char *s, unsigned int count)
        spin_lock_irqsave(&cxt->writecount_lock, flags);
 
        /* Check ready status didn't change whilst waiting for the lock */
-       if (!cxt->ready)
+       if (!cxt->ready) {
+               spin_unlock_irqrestore(&cxt->writecount_lock, flags);
                return;
+       }
 
        if (cxt->writecount == 0) {
                u32 *stamp = cxt->oops_buf;
@@ -420,6 +422,7 @@ static int __init mtdoops_console_init(void)
 
        cxt->mtd_index = -1;
        cxt->oops_buf = vmalloc(OOPS_PAGE_SIZE);
+       spin_lock_init(&cxt->writecount_lock);
 
        if (!cxt->oops_buf) {
                printk(KERN_ERR "Failed to allocate mtdoops buffer workspace\n");