HID: hidraw: fix signaling SIGIO when hidraw reports an event
authorAndrew Duggan <aduggan@synaptics.com>
Wed, 28 Nov 2012 03:02:27 +0000 (19:02 -0800)
committerJiri Kosina <jkosina@suse.cz>
Wed, 28 Nov 2012 15:36:18 +0000 (16:36 +0100)
This patch fixes sending SIGIO from hidraw_report_event by creating a fasync
handler which adds the fasync entry.

Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hidraw.c

index 1d8c0219117ead17eaa73aa0bfda845ed52b7951..413a73187d33d9f0313444f8c20288408cd001b9 100644 (file)
@@ -295,6 +295,13 @@ out:
 
 }
 
+static int hidraw_fasync(int fd, struct file *file, int on)
+{
+       struct hidraw_list *list = file->private_data;
+
+       return fasync_helper(fd, file, on, &list->fasync);
+}
+
 static int hidraw_release(struct inode * inode, struct file * file)
 {
        unsigned int minor = iminor(inode);
@@ -438,6 +445,7 @@ static const struct file_operations hidraw_ops = {
        .open =         hidraw_open,
        .release =      hidraw_release,
        .unlocked_ioctl = hidraw_ioctl,
+       .fasync =       hidraw_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl   = hidraw_ioctl,
 #endif