->si_band gets POLL... bitmap stored into a user-visible long field
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 17 Jul 2017 02:14:00 +0000 (22:14 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 28 Nov 2017 16:07:12 +0000 (11:07 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/fcntl.c

index 0522e28..afe731c 100644 (file)
@@ -690,7 +690,7 @@ COMPAT_SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd,
 
 /* Table to convert sigio signal codes into poll band bitmaps */
 
-static const long band_table[NSIGPOLL] = {
+static const __poll_t band_table[NSIGPOLL] = {
        POLLIN | POLLRDNORM,                    /* POLL_IN */
        POLLOUT | POLLWRNORM | POLLWRBAND,      /* POLL_OUT */
        POLLIN | POLLRDNORM | POLLMSG,          /* POLL_MSG */
@@ -758,7 +758,7 @@ static void send_sigio_to_task(struct task_struct *p,
                        if (reason - POLL_IN >= NSIGPOLL)
                                si.si_band  = ~0L;
                        else
-                               si.si_band = band_table[reason - POLL_IN];
+                               si.si_band = (__force long)band_table[reason - POLL_IN];
                        si.si_fd    = fd;
                        if (!do_send_sig_info(signum, &si, p, group))
                                break;