7ef9964e6d
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 |