ircu2/doc/linux-poll.patch

53 lines
977 B
Diff

*** ./select.c.bak Sun Apr 30 13:00:38 2000
--- /usr/src/linux/fs/select.c Mon May 1 18:00:15 2000
***************
*** 11,16 ****
--- 11,17 ----
*/
#include <linux/malloc.h>
+ #include <linux/vmalloc.h>
#include <linux/smp_lock.h>
#include <linux/poll.h>
#include <linux/file.h>
***************
*** 416,422 ****
}
size = nfds * sizeof(struct pollfd);
! fds = (struct pollfd *) kmalloc(size, GFP_KERNEL);
if (!fds)
goto out;
--- 417,426 ----
}
size = nfds * sizeof(struct pollfd);
! if (size > PAGE_SIZE)
! fds = (struct pollfd *) vmalloc(size);
! else
! fds = (struct pollfd *) kmalloc(size, GFP_KERNEL);
if (!fds)
goto out;
***************
*** 437,443 ****
err = -EINTR;
out_fds:
! kfree(fds);
out:
if (wait)
free_wait(wait_table);
--- 441,450 ----
err = -EINTR;
out_fds:
! if (size > PAGE_SIZE)
! vfree(fds);
! else
! kfree(fds);
out:
if (wait)
free_wait(wait_table);