On Mon, Mar 05, 2018 at 01:27:17PM -0800, Christoph Hellwig wrote: > Use straigline code with failure handling gotos instead of a lot > of nested conditionals. > > Signed-off-by: Christoph Hellwig <h...@lst.de>
Looks ok, Reviewed-by: Darrick J. Wong <darrick.w...@oracle.com> --D > --- > fs/select.c | 48 +++++++++++++++++++++++------------------------- > 1 file changed, 23 insertions(+), 25 deletions(-) > > diff --git a/fs/select.c b/fs/select.c > index 686de7b3a1db..c6c504a814f9 100644 > --- a/fs/select.c > +++ b/fs/select.c > @@ -806,34 +806,32 @@ static inline __poll_t do_pollfd(struct pollfd *pollfd, > poll_table *pwait, > bool *can_busy_poll, > __poll_t busy_flag) > { > - __poll_t mask; > - int fd; > - > - mask = 0; > - fd = pollfd->fd; > - if (fd >= 0) { > - struct fd f = fdget(fd); > - mask = EPOLLNVAL; > - if (f.file) { > - /* userland u16 ->events contains POLL... bitmap */ > - __poll_t filter = demangle_poll(pollfd->events) | > - EPOLLERR | EPOLLHUP; > - mask = DEFAULT_POLLMASK; > - if (f.file->f_op->poll) { > - pwait->_key = filter; > - pwait->_key |= busy_flag; > - mask = f.file->f_op->poll(f.file, pwait); > - if (mask & busy_flag) > - *can_busy_poll = true; > - } > - /* Mask out unneeded events. */ > - mask &= filter; > - fdput(f); > - } > + int fd = pollfd->fd; > + __poll_t mask = 0, filter; > + struct fd f; > + > + if (fd < 0) > + goto out; > + mask = EPOLLNVAL; > + f = fdget(fd); > + if (!f.file) > + goto out; > + > + /* userland u16 ->events contains POLL... bitmap */ > + filter = demangle_poll(pollfd->events) | EPOLLERR | EPOLLHUP; > + mask = DEFAULT_POLLMASK; > + if (f.file->f_op->poll) { > + pwait->_key = filter | busy_flag; > + mask = f.file->f_op->poll(f.file, pwait); > + if (mask & busy_flag) > + *can_busy_poll = true; > } > + mask &= filter; /* Mask out unneeded events. */ > + fdput(f); > + > +out: > /* ... and so does ->revents */ > pollfd->revents = mangle_poll(mask); > - > return mask; > } > > -- > 2.14.2 >