if (!newdev)
                return -ENOMEM;
 
-       init_MUTEX(&newdev->sem);
+       mutex_init(&newdev->mutex);
        spin_lock_init(&newdev->requests_lock);
        init_waitqueue_head(&newdev->requests_waitq);
        init_waitqueue_head(&newdev->waitq);
        struct uinput_device *udev = file->private_data;
        int retval;
 
-       retval = down_interruptible(&udev->sem);
+       retval = mutex_lock_interruptible(&udev->mutex);
        if (retval)
                return retval;
 
                        uinput_inject_event(udev, buffer, count) :
                        uinput_setup_device(udev, buffer, count);
 
-       up(&udev->sem);
+       mutex_unlock(&udev->mutex);
 
        return retval;
 }
        if (retval)
                return retval;
 
-       retval = down_interruptible(&udev->sem);
+       retval = mutex_lock_interruptible(&udev->mutex);
        if (retval)
                return retval;
 
        }
 
  out:
-       up(&udev->sem);
+       mutex_unlock(&udev->mutex);
 
        return retval;
 }
 
        udev = file->private_data;
 
-       retval = down_interruptible(&udev->sem);
+       retval = mutex_lock_interruptible(&udev->mutex);
        if (retval)
                return retval;
 
        }
 
  out:
-       up(&udev->sem);
+       mutex_unlock(&udev->mutex);
        return retval;
 }
 
 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  *
  * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
- * 
+ *
  * Changes/Revisions:
  *     0.2     16/10/2004 (Micah Dowty <micah@navi.cx>)
  *             - added force feedback support
 
 struct uinput_device {
        struct input_dev        *dev;
-       struct semaphore        sem;
+       struct mutex            mutex;
        enum uinput_state       state;
        wait_queue_head_t       waitq;
        unsigned char           ready;