Re: [PATCH] FD array expansion problem

Andrea Arcangeli (andrea@suse.de)
Sat, 30 Oct 1999 18:52:08 +0200 (CEST)


On Sat, 30 Oct 1999, Savochkin Andrey Vladimirovich wrote:

>Hi,
>
>I've spotted a bug in the dynamic fd array expansion code.
>Here is the patch which
> - fixes wrong parameters of expand_fdset() and expand_fd_array() calls
> in expand_files() and get_unused_fd(); and
> - moves expand_files() function from sched.h to fs/fcntl.c.

Good spotting! ;))

I did the backport to 2.2.13:

--- 2.2.13-fdset/fs/open.c.~1~ Sat Oct 23 15:31:10 1999
+++ 2.2.13-fdset/fs/open.c Sat Oct 30 18:47:04 1999
@@ -712,7 +712,7 @@

/* Do we need to expand the fdset array? */
if (fd >= current->files->max_fdset) {
- error = expand_fdset(files, 0);
+ error = expand_fdset(files, fd + 1);
if (!error)
goto repeat;
goto out;
@@ -722,7 +722,7 @@
* Check whether we need to expand the fd array.
*/
if (fd >= files->max_fds) {
- error = expand_fd_array(files, 0);
+ error = expand_fd_array(files, fd + 1);
if (!error)
goto repeat;
goto out;
--- 2.2.13-fdset/include/linux/sched.h.~1~ Fri Oct 29 22:41:14 1999
+++ 2.2.13-fdset/include/linux/sched.h Sat Oct 30 18:46:32 1999
@@ -657,12 +657,12 @@

if (nr >= files->max_fdset) {
expand = 1;
- if ((err = expand_fdset(files, nr)))
+ if ((err = expand_fdset(files, nr + 1)))
goto out;
}
if (nr >= files->max_fds) {
expand = 1;
- if ((err = expand_fd_array(files, nr)))
+ if ((err = expand_fd_array(files, nr + 1)))
goto out;
}
err = expand;

Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/