]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/hid/hidraw.c
HID: hidraw, uhid: Always report EPOLLOUT
[linux.git] / drivers / hid / hidraw.c
index bbc6ec1aa5cb13eb4a856972a2d22739b78cc846..7a75aff78388289f0ac4164b2acb25b96ed78dd5 100644 (file)
@@ -197,15 +197,15 @@ static ssize_t hidraw_get_report(struct file *file, char __user *buffer, size_t
        }
 
        if (count > HID_MAX_BUFFER_SIZE) {
-               printk(KERN_WARNING "hidraw: pid %d passed too large report\n",
-                               task_pid_nr(current));
+               hid_warn(dev, "pid %d passed too large report\n",
+                       task_pid_nr(current));
                ret = -EINVAL;
                goto out;
        }
 
        if (count < 2) {
-               printk(KERN_WARNING "hidraw: pid %d passed too short report\n",
-                               task_pid_nr(current));
+               hid_warn(dev, "pid %d passed too short report\n",
+                       task_pid_nr(current));
                ret = -EINVAL;
                goto out;
        }
@@ -249,13 +249,14 @@ static ssize_t hidraw_get_report(struct file *file, char __user *buffer, size_t
 static __poll_t hidraw_poll(struct file *file, poll_table *wait)
 {
        struct hidraw_list *list = file->private_data;
+       __poll_t mask = EPOLLOUT | EPOLLWRNORM; /* hidraw is always writable */
 
        poll_wait(file, &list->hidraw->wait, wait);
        if (list->head != list->tail)
-               return EPOLLIN | EPOLLRDNORM | EPOLLOUT;
+               mask |= EPOLLIN | EPOLLRDNORM;
        if (!list->hidraw->exist)
-               return EPOLLERR | EPOLLHUP;
-       return 0;
+               mask |= EPOLLERR | EPOLLHUP;
+       return mask;
 }
 
 static int hidraw_open(struct inode *inode, struct file *file)
@@ -468,9 +469,7 @@ static const struct file_operations hidraw_ops = {
        .release =      hidraw_release,
        .unlocked_ioctl = hidraw_ioctl,
        .fasync =       hidraw_fasync,
-#ifdef CONFIG_COMPAT
-       .compat_ioctl   = hidraw_ioctl,
-#endif
+       .compat_ioctl   = compat_ptr_ioctl,
        .llseek =       noop_llseek,
 };
 
@@ -597,7 +596,7 @@ int __init hidraw_init(void)
        if (result < 0)
                goto error_class;
 
-       printk(KERN_INFO "hidraw: raw HID events driver (C) Jiri Kosina\n");
+       pr_info("raw HID events driver (C) Jiri Kosina\n");
 out:
        return result;