Semaphore to mutex conversion.
The conversion was generated via scripts, and the result was validated
automatically via a script as well.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Acked-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
 #include <linux/list.h>
 #include <linux/init.h>
 #include <linux/mtd/mtd.h>
-
+#include <linux/mutex.h>
 
 #define err(format, arg...) printk(KERN_ERR "blkmtd: " format "\n" , ## arg)
 #define info(format, arg...) printk(KERN_INFO "blkmtd: " format "\n" , ## arg)
        struct list_head list;
        struct block_device *blkdev;
        struct mtd_info mtd_info;
-       struct semaphore wrbuf_mutex;
+       struct mutex wrbuf_mutex;
 };
 
 
        if(end_len)
                pagecnt++;
 
-       down(&dev->wrbuf_mutex);
+       mutex_lock(&dev->wrbuf_mutex);
 
        DEBUG(3, "blkmtd: write: start_len = %zd len = %zd end_len = %zd pagecnt = %d\n",
              start_len, len, end_len, pagecnt);
                blkmtd_write_out(bio);
 
        DEBUG(2, "blkmtd: write: end, retlen = %zd, err = %d\n", *retlen, err);
-       up(&dev->wrbuf_mutex);
+       mutex_unlock(&dev->wrbuf_mutex);
 
        if(retlen)
                *retlen = thislen;
        memset(dev, 0, sizeof(struct blkmtd_dev));
        dev->blkdev = bdev;
        if(!readonly) {
-               init_MUTEX(&dev->wrbuf_mutex);
+               mutex_init(&dev->wrbuf_mutex);
        }
 
        dev->mtd_info.size = dev->blkdev->bd_inode->i_size & PAGE_MASK;
 
 #include <linux/init.h>
 #include <linux/mtd/mtd.h>
 #include <linux/buffer_head.h>
+#include <linux/mutex.h>
 
 #define VERSION "$Revision: 1.30 $"
 
        struct list_head list;
        struct block_device *blkdev;
        struct mtd_info mtd;
-       struct semaphore write_mutex;
+       struct mutex write_mutex;
 };
 
 
        int err;
 
        instr->state = MTD_ERASING;
-       down(&dev->write_mutex);
+       mutex_lock(&dev->write_mutex);
        err = _block2mtd_erase(dev, from, len);
-       up(&dev->write_mutex);
+       mutex_unlock(&dev->write_mutex);
        if (err) {
                ERROR("erase failed err = %d", err);
                instr->state = MTD_ERASE_FAILED;
        if (to + len > mtd->size)
                len = mtd->size - to;
 
-       down(&dev->write_mutex);
+       mutex_lock(&dev->write_mutex);
        err = _block2mtd_write(dev, buf, to, len, retlen);
-       up(&dev->write_mutex);
+       mutex_unlock(&dev->write_mutex);
        if (err > 0)
                err = 0;
        return err;
                goto devinit_err;
        }
 
-       init_MUTEX(&dev->write_mutex);
+       mutex_init(&dev->write_mutex);
 
        /* Setup the MTD structure */
        /* make the name contain the block device in */
 
 
        this->curfloor = -1;
        this->curchip = -1;
-       init_MUTEX(&this->lock);
+       mutex_init(&this->lock);
 
        /* Ident all the chips present. */
        DoC_ScanChips(this, maxchips);
        if (from >= this->totlen)
                return -EINVAL;
 
-       down(&this->lock);
+       mutex_lock(&this->lock);
 
        *retlen = 0;
        while (left) {
                buf += len;
        }
 
-       up(&this->lock);
+       mutex_unlock(&this->lock);
 
        return ret;
 }
        if (to >= this->totlen)
                return -EINVAL;
 
-       down(&this->lock);
+       mutex_lock(&this->lock);
 
        *retlen = 0;
        while (left) {
                                printk(KERN_ERR "Error programming flash\n");
                                /* Error in programming */
                                *retlen = 0;
-                               up(&this->lock);
+                               mutex_unlock(&this->lock);
                                return -EIO;
                        }
 
                        printk(KERN_ERR "Error programming flash\n");
                        /* Error in programming */
                        *retlen = 0;
-                       up(&this->lock);
+                       mutex_unlock(&this->lock);
                        return -EIO;
                }
 
 
                        ret = doc_write_oob_nolock(mtd, to, 8, &dummy, x);
                        if (ret) {
-                               up(&this->lock);
+                               mutex_unlock(&this->lock);
                                return ret;
                        }
                }
                buf += len;
        }
 
-       up(&this->lock);
+       mutex_unlock(&this->lock);
        return 0;
 }
 
        int len256 = 0, ret;
        struct Nand *mychip;
 
-       down(&this->lock);
+       mutex_lock(&this->lock);
 
        mychip = &this->chips[ofs >> this->chipshift];
 
 
        ret = DoC_WaitReady(this);
 
-       up(&this->lock);
+       mutex_unlock(&this->lock);
        return ret;
 
 }
        struct DiskOnChip *this = mtd->priv;
        int ret;
 
-       down(&this->lock);
+       mutex_lock(&this->lock);
        ret = doc_write_oob_nolock(mtd, ofs, len, retlen, buf);
 
-       up(&this->lock);
+       mutex_unlock(&this->lock);
        return ret;
 }
 
        struct Nand *mychip;
        int status;
 
-       down(&this->lock);
+       mutex_lock(&this->lock);
 
        if (ofs & (mtd->erasesize-1) || len & (mtd->erasesize-1)) {
-               up(&this->lock);
+               mutex_unlock(&this->lock);
                return -EINVAL;
        }
 
  callback:
        mtd_erase_callback(instr);
 
-       up(&this->lock);
+       mutex_unlock(&this->lock);
        return 0;
 }
 
 
 #include <linux/spinlock.h>
 #include <linux/hdreg.h>
 #include <linux/init.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
 #include <asm/uaccess.h>
 
 static LIST_HEAD(blktrans_majors);
 
-extern struct semaphore mtd_table_mutex;
+extern struct mutex mtd_table_mutex;
 extern struct mtd_info *mtd_table[];
 
 struct mtd_blkcore_priv {
 
                spin_unlock_irq(rq->queue_lock);
 
-               down(&dev->sem);
+               mutex_lock(&dev->lock);
                res = do_blktrans_request(tr, dev, req);
-               up(&dev->sem);
+               mutex_unlock(&dev->lock);
 
                spin_lock_irq(rq->queue_lock);
 
        int last_devnum = -1;
        struct gendisk *gd;
 
-       if (!down_trylock(&mtd_table_mutex)) {
-               up(&mtd_table_mutex);
+       if (!!mutex_trylock(&mtd_table_mutex)) {
+               mutex_unlock(&mtd_table_mutex);
                BUG();
        }
 
                return -EBUSY;
        }
 
-       init_MUTEX(&new->sem);
+       mutex_init(&new->lock);
        list_add_tail(&new->list, &tr->devs);
  added:
        if (!tr->writesect)
 
 int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old)
 {
-       if (!down_trylock(&mtd_table_mutex)) {
-               up(&mtd_table_mutex);
+       if (!!mutex_trylock(&mtd_table_mutex)) {
+               mutex_unlock(&mtd_table_mutex);
                BUG();
        }
 
 
        memset(tr->blkcore_priv, 0, sizeof(*tr->blkcore_priv));
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        ret = register_blkdev(tr->major, tr->name);
        if (ret) {
                printk(KERN_WARNING "Unable to register %s block device on major %d: %d\n",
                       tr->name, tr->major, ret);
                kfree(tr->blkcore_priv);
-               up(&mtd_table_mutex);
+               mutex_unlock(&mtd_table_mutex);
                return ret;
        }
        spin_lock_init(&tr->blkcore_priv->queue_lock);
        if (!tr->blkcore_priv->rq) {
                unregister_blkdev(tr->major, tr->name);
                kfree(tr->blkcore_priv);
-               up(&mtd_table_mutex);
+               mutex_unlock(&mtd_table_mutex);
                return -ENOMEM;
        }
 
                blk_cleanup_queue(tr->blkcore_priv->rq);
                unregister_blkdev(tr->major, tr->name);
                kfree(tr->blkcore_priv);
-               up(&mtd_table_mutex);
+               mutex_unlock(&mtd_table_mutex);
                return ret;
        }
 
                        tr->add_mtd(tr, mtd_table[i]);
        }
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
 
        return 0;
 }
 {
        struct list_head *this, *next;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        /* Clean up the kernel thread */
        tr->blkcore_priv->exiting = 1;
        blk_cleanup_queue(tr->blkcore_priv->rq);
        unregister_blkdev(tr->major, tr->name);
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
 
        kfree(tr->blkcore_priv);
 
 
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/blktrans.h>
+#include <linux/mutex.h>
+
 
 static struct mtdblk_dev {
        struct mtd_info *mtd;
        int count;
-       struct semaphore cache_sem;
+       struct mutex cache_mutex;
        unsigned char *cache_data;
        unsigned long cache_offset;
        unsigned int cache_size;
        mtdblk->count = 1;
        mtdblk->mtd = mtd;
 
-       init_MUTEX (&mtdblk->cache_sem);
+       mutex_init(&mtdblk->cache_mutex);
        mtdblk->cache_state = STATE_EMPTY;
        if ((mtdblk->mtd->flags & MTD_CAP_RAM) != MTD_CAP_RAM &&
            mtdblk->mtd->erasesize) {
 
        DEBUG(MTD_DEBUG_LEVEL1, "mtdblock_release\n");
 
-       down(&mtdblk->cache_sem);
+       mutex_lock(&mtdblk->cache_mutex);
        write_cached_data(mtdblk);
-       up(&mtdblk->cache_sem);
+       mutex_unlock(&mtdblk->cache_mutex);
 
        if (!--mtdblk->count) {
                /* It was the last usage. Free the device */
 {
        struct mtdblk_dev *mtdblk = mtdblks[dev->devnum];
 
-       down(&mtdblk->cache_sem);
+       mutex_lock(&mtdblk->cache_mutex);
        write_cached_data(mtdblk);
-       up(&mtdblk->cache_sem);
+       mutex_unlock(&mtdblk->cache_mutex);
 
        if (mtdblk->mtd->sync)
                mtdblk->mtd->sync(mtdblk->mtd);
 
 
 /* These are exported solely for the purpose of mtd_blkdevs.c. You
    should not use them for _anything_ else */
-DECLARE_MUTEX(mtd_table_mutex);
+DEFINE_MUTEX(mtd_table_mutex);
 struct mtd_info *mtd_table[MAX_MTD_DEVICES];
 
 EXPORT_SYMBOL_GPL(mtd_table_mutex);
 {
        int i;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        for (i=0; i < MAX_MTD_DEVICES; i++)
                if (!mtd_table[i]) {
                                not->add(mtd);
                        }
 
-                       up(&mtd_table_mutex);
+                       mutex_unlock(&mtd_table_mutex);
                        /* We _know_ we aren't being removed, because
                           our caller is still holding us here. So none
                           of this try_ nonsense, and no bitching about it
                        return 0;
                }
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
        return 1;
 }
 
 {
        int ret;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        if (mtd_table[mtd->index] != mtd) {
                ret = -ENODEV;
                ret = 0;
        }
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
        return ret;
 }
 
 {
        int i;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        list_add(&new->list, &mtd_notifiers);
 
                if (mtd_table[i])
                        new->add(mtd_table[i]);
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
 }
 
 /**
 {
        int i;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        module_put(THIS_MODULE);
 
                        old->remove(mtd_table[i]);
 
        list_del(&old->list);
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
        return 0;
 }
 
        struct mtd_info *ret = NULL;
        int i;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        if (num == -1) {
                for (i=0; i< MAX_MTD_DEVICES; i++)
        if (ret)
                ret->usecount++;
 
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
        return ret;
 }
 
 {
        int c;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
        c = --mtd->usecount;
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
        BUG_ON(c < 0);
 
        module_put(mtd->owner);
        int len, l, i;
         off_t   begin = 0;
 
-       down(&mtd_table_mutex);
+       mutex_lock(&mtd_table_mutex);
 
        len = sprintf(page, "dev:    size   erasesize  name\n");
         for (i=0; i< MAX_MTD_DEVICES; i++) {
         *eof = 1;
 
 done:
-       up(&mtd_table_mutex);
+       mutex_unlock(&mtd_table_mutex);
         if (off >= len+begin)
                 return 0;
         *start = page + (off-begin);
 
 #ifndef __MTD_TRANS_H__
 #define __MTD_TRANS_H__
 
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
 
 struct hd_geometry;
 struct mtd_info;
        struct mtd_blktrans_ops *tr;
        struct list_head list;
        struct mtd_info *mtd;
-       struct semaphore sem;
+       struct mutex lock;
        int devnum;
        int blksize;
        unsigned long size;
 
 #define __MTD_DOC2000_H__
 
 #include <linux/mtd/mtd.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
 
 #define DoC_Sig1 0
 #define DoC_Sig2 1
        int numchips;
        struct Nand *chips;
        struct mtd_info *nextdoc;
-       struct semaphore lock;
+       struct mutex lock;
 };
 
 int doc_decode_ecc(unsigned char sector[512], unsigned char ecc1[6]);