]> git.baikalelectronics.ru Git - kernel.git/commit
af_unix: limit recursion level
authorEric Dumazet <eric.dumazet@gmail.com>
Thu, 25 Nov 2010 04:11:39 +0000 (04:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 29 Nov 2010 17:45:15 +0000 (09:45 -0800)
commit7a2fbfd27824bdf1d7d3382a63395a8153b83f55
treeae484d38b1250da885d3939dd9a97e667fbc871d
parent950581fae12deaafda4869dcfc4f2a037ac09e4e
af_unix: limit recursion level

Its easy to eat all kernel memory and trigger NMI watchdog, using an
exploit program that queues unix sockets on top of others.

lkml ref : http://lkml.org/lkml/2010/11/25/8

This mechanism is used in applications, one choice we have is to have a
recursion limit.

Other limits might be needed as well (if we queue other types of files),
since the passfd mechanism is currently limited by socket receive queue
sizes only.

Add a recursion_level to unix socket, allowing up to 4 levels.

Each time we send an unix socket through sendfd mechanism, we copy its
recursion level (plus one) to receiver. This recursion level is cleared
when socket receive queue is emptied.

Reported-by: Марк Коренберг <socketpair@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/af_unix.h
net/unix/af_unix.c
net/unix/garbage.c