- 2.6.17 port work build breaks, but the patch set is relativly stable
[linux-flexiantxendom0-3.2.10.git] / drivers / char / raw.c
index 30e4cbe..15a7b40 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/uio.h>
 #include <linux/cdev.h>
 #include <linux/device.h>
+#include <linux/mutex.h>
 
 #include <asm/uaccess.h>
 
@@ -29,7 +30,7 @@ struct raw_device_data {
 
 static struct class *raw_class;
 static struct raw_device_data raw_devices[MAX_RAW_MINORS];
-static DECLARE_MUTEX(raw_mutex);
+static DEFINE_MUTEX(raw_mutex);
 static struct file_operations raw_ctl_fops;         /* forward declaration */
 
 /*
@@ -53,7 +54,7 @@ static int raw_open(struct inode *inode, struct file *filp)
                return 0;
        }
 
-       down(&raw_mutex);
+       mutex_lock(&raw_mutex);
 
        /*
         * All we need to do on open is check that the device is bound.
@@ -78,7 +79,7 @@ static int raw_open(struct inode *inode, struct file *filp)
                filp->f_dentry->d_inode->i_mapping =
                        bdev->bd_inode->i_mapping;
        filp->private_data = bdev;
-       up(&raw_mutex);
+       mutex_unlock(&raw_mutex);
        return 0;
 
 out2:
@@ -86,7 +87,7 @@ out2:
 out1:
        blkdev_put(bdev);
 out:
-       up(&raw_mutex);
+       mutex_unlock(&raw_mutex);
        return err;
 }
 
@@ -99,14 +100,14 @@ static int raw_release(struct inode *inode, struct file *filp)
        const int minor= iminor(inode);
        struct block_device *bdev;
 
-       down(&raw_mutex);
+       mutex_lock(&raw_mutex);
        bdev = raw_devices[minor].binding;
        if (--raw_devices[minor].inuse == 0) {
                /* Here  inode->i_mapping == bdev->bd_inode->i_mapping  */
                inode->i_mapping = &inode->i_data;
                inode->i_mapping->backing_dev_info = &default_backing_dev_info;
        }
-       up(&raw_mutex);
+       mutex_unlock(&raw_mutex);
 
        bd_release(bdev);
        blkdev_put(bdev);
@@ -187,9 +188,9 @@ static int raw_ctl_ioctl(struct inode *inode, struct file *filp,
                                goto out;
                        }
 
-                       down(&raw_mutex);
+                       mutex_lock(&raw_mutex);
                        if (rawdev->inuse) {
-                               up(&raw_mutex);
+                               mutex_unlock(&raw_mutex);
                                err = -EBUSY;
                                goto out;
                        }
@@ -211,11 +212,11 @@ static int raw_ctl_ioctl(struct inode *inode, struct file *filp,
                                        bind_device(&rq);
                                }
                        }
-                       up(&raw_mutex);
+                       mutex_unlock(&raw_mutex);
                } else {
                        struct block_device *bdev;
 
-                       down(&raw_mutex);
+                       mutex_lock(&raw_mutex);
                        bdev = rawdev->binding;
                        if (bdev) {
                                rq.block_major = MAJOR(bdev->bd_dev);
@@ -223,7 +224,7 @@ static int raw_ctl_ioctl(struct inode *inode, struct file *filp,
                        } else {
                                rq.block_major = rq.block_minor = 0;
                        }
-                       up(&raw_mutex);
+                       mutex_unlock(&raw_mutex);
                        if (copy_to_user((void __user *)arg, &rq, sizeof(rq))) {
                                err = -EFAULT;
                                goto out;