Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / drivers / input / misc / uinput.c
index 4255623..2bcfa0b 100644 (file)
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/init.h>
-#include <linux/input.h>
 #include <linux/smp_lock.h>
 #include <linux/fs.h>
 #include <linux/miscdevice.h>
 #include <linux/uinput.h>
+#include <linux/smp_lock.h>
 
 static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
 {
-       struct uinput_device    *udev;
-
-       udev = dev->private;
+       struct uinput_device    *udev = input_get_drvdata(dev);
 
        udev->buff[udev->head].type = type;
        udev->buff[udev->head].code = code;
@@ -136,7 +134,7 @@ static int uinput_dev_upload_effect(struct input_dev *dev, struct ff_effect *eff
        request.u.upload.effect = effect;
        request.u.upload.old = old;
 
-       retval = uinput_request_reserve_slot(dev->private, &request);
+       retval = uinput_request_reserve_slot(input_get_drvdata(dev), &request);
        if (!retval)
                retval = uinput_request_submit(dev, &request);
 
@@ -156,7 +154,7 @@ static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)
        request.code = UI_FF_ERASE;
        request.u.effect_id = effect_id;
 
-       retval = uinput_request_reserve_slot(dev->private, &request);
+       retval = uinput_request_reserve_slot(input_get_drvdata(dev), &request);
        if (!retval)
                retval = uinput_request_submit(dev, &request);
 
@@ -225,6 +223,7 @@ static int uinput_open(struct inode *inode, struct file *file)
        if (!newdev)
                return -ENOMEM;
 
+       lock_kernel();
        mutex_init(&newdev->mutex);
        spin_lock_init(&newdev->requests_lock);
        init_waitqueue_head(&newdev->requests_waitq);
@@ -232,6 +231,7 @@ static int uinput_open(struct inode *inode, struct file *file)
        newdev->state = UIST_NEW_DEVICE;
 
        file->private_data = newdev;
+       unlock_kernel();
 
        return 0;
 }
@@ -274,7 +274,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
                return -ENOMEM;
 
        udev->dev->event = uinput_dev_event;
-       udev->dev->private = udev;
+       input_set_drvdata(udev->dev, udev);
 
        return 0;
 }