On Thu 30-05-24 00:06:56, Yuntao Wang wrote: > The maximum possible return value of find_next_zero_bit(fdt->full_fds_bits, > maxbit, bitbit) is maxbit. This return value, multiplied by BITS_PER_LONG, > gives the value of bitbit, which can never be greater than maxfd, it can > only be equal to maxfd at most, so the following check 'if (bitbit > maxfd)' > will never be true. > > Moreover, when bitbit equals maxfd, it indicates that there are no unused > fds, and the function can directly return. > > Fix this check. > > Signed-off-by: Yuntao Wang <yuntao.wang@xxxxxxxxx> Good point. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/file.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/file.c b/fs/file.c > index 8076aef9c210..7058901a2154 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -491,7 +491,7 @@ static unsigned int find_next_fd(struct fdtable *fdt, unsigned int start) > unsigned int bitbit = start / BITS_PER_LONG; > > bitbit = find_next_zero_bit(fdt->full_fds_bits, maxbit, bitbit) * BITS_PER_LONG; > - if (bitbit > maxfd) > + if (bitbit >= maxfd) > return maxfd; > if (bitbit > start) > start = bitbit; > -- > 2.45.1 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR