From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f66.google.com ([74.125.83.66]:34356 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932246AbdGKNgk (ORCPT ); Tue, 11 Jul 2017 09:36:40 -0400 Date: Tue, 11 Jul 2017 19:06:33 +0530 From: Sandhya Bankar To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk, mawilcox@microsoft.com, keescook@chromium.org, adobriyan@gmail.com, re.emese@gmail.com, riel@surriel.com Subject: [RESEND PATCH 12/13] vfs: Convert select to use idr_get_tag_batch() Message-ID: <95215e24f0724f9a16b0ad6ea8ee1b9a070d133b.1493315290.git.bankarsandhya512@gmail.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Convert select to use idr_get_tag_batch(). Signed-off-by: Sandhya Bankar Signed-off-by: Matthew Wilcox --- fs/select.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/fs/select.c b/fs/select.c index e211227..5d20a14 100644 --- a/fs/select.c +++ b/fs/select.c @@ -346,32 +346,33 @@ static int poll_select_copy_remaining(struct timespec64 *end_time, static int max_select_fd(unsigned long n, fd_set_bits *fds) { - unsigned long *open_fds; + unsigned long bad_fds; unsigned long set; int max; - struct fdtable *fdt; + struct idr *fd_idr = ¤t->files->fd_idr; /* handle last in-complete long-word first */ set = ~(~0UL << (n & (BITS_PER_LONG-1))); n /= BITS_PER_LONG; - fdt = files_fdtable(current->files); - open_fds = fdt->open_fds + n; max = 0; if (set) { set &= BITS(fds, n); if (set) { - if (!(set & ~*open_fds)) + bad_fds = idr_get_tag_batch(fd_idr, (n * BITS_PER_LONG), + IDR_FREE); + if (!(set & bad_fds)) goto get_max; return -EBADF; } } while (n) { - open_fds--; n--; set = BITS(fds, n); if (!set) continue; - if (set & ~*open_fds) + bad_fds = idr_get_tag_batch(fd_idr, (n * BITS_PER_LONG), + IDR_FREE); + if (set & bad_fds) return -EBADF; if (max) continue; -- 1.8.3.1