mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-10-29 02:53:41 +00:00
It has been thought that the per-user file descriptors limit would also limit the resources that a normal user can request via the epoll interface. Vegard Nossum reported a very simple program (a modified version attached) that can make a normal user to request a pretty large amount of kernel memory, well within the its maximum number of fds. To solve such problem, default limits are now imposed, and /proc based configuration has been introduced. A new directory has been created, named /proc/sys/fs/epoll/ and inside there, there are two configuration points: max_user_instances = Maximum number of devices - per user max_user_watches = Maximum number of "watched" fds - per user The current default for "max_user_watches" limits the memory used by epoll to store "watches", to 1/32 of the amount of the low RAM. As example, a 256MB 32bit machine, will have "max_user_watches" set to roughly 90000. That should be enough to not break existing heavy epoll users. The default value for "max_user_instances" is set to 128, that should be enough too. This also changes the userspace, because a new error code can now come out from EPOLL_CTL_ADD (-ENOSPC). The EMFILE from epoll_create() was already listed, so that should be ok. [akpm@linux-foundation.org: use get_current_user()] Signed-off-by: Davide Libenzi <davidel@xmailserver.org> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Cc: <stable@kernel.org> Cc: Cyrill Gorcunov <gorcunov@gmail.com> Reported-by: Vegard Nossum <vegardno@ifi.uio.no> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| configfs | ||
| 9p.txt | ||
| 00-INDEX | ||
| adfs.txt | ||
| affs.txt | ||
| afs.txt | ||
| autofs4-mount-control.txt | ||
| automount-support.txt | ||
| befs.txt | ||
| bfs.txt | ||
| cifs.txt | ||
| coda.txt | ||
| cramfs.txt | ||
| dentry-locking.txt | ||
| directory-locking | ||
| dlmfs.txt | ||
| dnotify.txt | ||
| ecryptfs.txt | ||
| Exporting | ||
| ext2.txt | ||
| ext3.txt | ||
| ext4.txt | ||
| fiemap.txt | ||
| files.txt | ||
| fuse.txt | ||
| gfs2-glocks.txt | ||
| gfs2.txt | ||
| hfs.txt | ||
| hfsplus.txt | ||
| hpfs.txt | ||
| inotify.txt | ||
| isofs.txt | ||
| jfs.txt | ||
| Locking | ||
| locks.txt | ||
| mandatory-locking.txt | ||
| ncpfs.txt | ||
| nfs-rdma.txt | ||
| nfsroot.txt | ||
| ntfs.txt | ||
| ocfs2.txt | ||
| omfs.txt | ||
| porting | ||
| proc.txt | ||
| quota.txt | ||
| ramfs-rootfs-initramfs.txt | ||
| relay.txt | ||
| romfs.txt | ||
| rpc-cache.txt | ||
| seq_file.txt | ||
| sharedsubtree.txt | ||
| smbfs.txt | ||
| spufs.txt | ||
| sysfs-pci.txt | ||
| sysfs.txt | ||
| sysv-fs.txt | ||
| tmpfs.txt | ||
| ubifs.txt | ||
| udf.txt | ||
| ufs.txt | ||
| vfat.txt | ||
| vfs.txt | ||
| xfs.txt | ||
| xip.txt | ||