*** ./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 + #include #include #include #include *************** *** 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);