->si_band gets POLL... bitmap stored into a user-visible long field

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2017-07-16 22:14:00 -04:00
parent ecf927000c
commit 5dc533c66b

View 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 */ /* 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 */ POLLIN | POLLRDNORM, /* POLL_IN */
POLLOUT | POLLWRNORM | POLLWRBAND, /* POLL_OUT */ POLLOUT | POLLWRNORM | POLLWRBAND, /* POLL_OUT */
POLLIN | POLLRDNORM | POLLMSG, /* POLL_MSG */ POLLIN | POLLRDNORM | POLLMSG, /* POLL_MSG */
@ -758,7 +758,7 @@ static void send_sigio_to_task(struct task_struct *p,
if (reason - POLL_IN >= NSIGPOLL) if (reason - POLL_IN >= NSIGPOLL)
si.si_band = ~0L; si.si_band = ~0L;
else else
si.si_band = band_table[reason - POLL_IN]; si.si_band = (__force long)band_table[reason - POLL_IN];
si.si_fd = fd; si.si_fd = fd;
if (!do_send_sig_info(signum, &si, p, group)) if (!do_send_sig_info(signum, &si, p, group))
break; break;