linux/include/net
Eric Dumazet 6019f38379 af_unix: limit recursion level
commit 25888e3031 upstream.

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>
[bwh: Adjust for 2.6.32]
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-05-09 15:55:36 -07:00
..
9p 9p: fix readdir corner cases 2009-11-02 08:43:45 -06:00
bluetooth Bluetooth: Handle L2CAP case when the remote receiver is busy 2009-08-26 00:12:20 -07:00
irda net: mark read-only arrays as const 2009-08-05 10:42:58 -07:00
iucv
netfilter ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery 2010-01-06 15:04:39 -08:00
netns netfilter: nf_conntrack: fix hash resizing with namespaces 2010-02-23 07:37:53 -08:00
phonet Phonet: sockets list through proc_fs 2009-07-23 17:58:19 -07:00
sctp sctp: Fix oops when sending queued ASCONF chunks 2011-03-07 15:17:55 -08:00
tc_act
tipc
act_api.h net: restore gnet_stats_basic to previous definition 2009-08-17 21:33:49 -07:00
addrconf.h bonding: remap muticast addresses without using dev_close() and dev_open() 2009-09-15 02:37:40 -07:00
af_ieee802154.h af_ieee802154: add support for WANT_ACK socket option 2009-08-12 21:54:50 -07:00
af_rxrpc.h
af_unix.h af_unix: limit recursion level 2011-05-09 15:55:36 -07:00
ah.h
arp.h net: make neigh_ops constant 2009-09-01 17:40:57 -07:00
atmclip.h
ax25.h
ax88796.h
cfg80211.h cfg80211: fix dangling scan request checking 2009-08-20 11:36:05 -04:00
checksum.h
cipso_ipv4.h
compat.h net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
datalink.h
dcbnl.h dcbnl: Add support for setapp/getapp to netdev dcbnl_rtnl_ops 2009-09-01 01:24:30 -07:00
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dn.h
dsa.h
dsfield.h
dst_ops.h netns: embed ip6_dst_ops directly 2009-09-01 17:40:31 -07:00
dst.h netns: embed ip6_dst_ops directly 2009-09-01 17:40:31 -07:00
esp.h
ethoc.h
fib_rules.h
flow.h
garp.h
gen_stats.h net: restore gnet_stats_basic to previous definition 2009-08-17 21:33:49 -07:00
genetlink.h genetlink: make netns aware 2009-07-12 14:03:27 -07:00
icmp.h
ieee80211_radiotap.h
ieee802154_netdev.h ieee802154: add support for channel pages from IEEE 802.15.4-2006 2009-08-19 23:08:22 +04:00
ieee802154.h ieee802154: move headers out of extra directory 2009-07-23 17:08:51 +04:00
if_inet6.h
inet_common.h
inet_connection_sock.h net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
inet_ecn.h
inet_frag.h
inet_hashtables.h
inet_sock.h
inet_timewait_sock.h net: Fix struct inet_timewait_sock bitfield annotation 2009-10-20 01:13:26 -07:00
inet6_connection_sock.h
inet6_hashtables.h
inetpeer.h
ip_fib.h net: Fix RPF to work with policy routing 2009-10-29 22:49:12 -07:00
ip_vs.h net: mark read-only arrays as const 2009-08-05 10:42:58 -07:00
ip.h netfilter: fix crashes in bridge netfilter caused by fragment jumps 2010-01-06 15:04:40 -08:00
ip6_checksum.h
ip6_fib.h xfrm: select sane defaults for xfrm[4|6] gc_thresh 2009-07-30 18:52:15 -07:00
ip6_route.h
ip6_tunnel.h
ipcomp.h
ipconfig.h
ipip.h Revert "sit: stateless autoconf for isatap" 2009-09-26 20:28:07 -07:00
ipv6.h netfilter: fix crashes in bridge netfilter caused by fragment jumps 2010-01-06 15:04:40 -08:00
ipx.h
iw_handler.h libipw: switch from ieee80211_* to libipw_* naming policy 2009-08-28 14:40:28 -04:00
lapb.h
lib80211.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
llc.h
mac80211.h mac80211: Add define for TX headroom reserved by mac80211 itself. 2011-05-09 15:55:22 -07:00
mip6.h
ndisc.h sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
neighbour.h net: make neigh_ops constant 2009-09-01 17:40:57 -07:00
net_namespace.h net: explain netns notifiers a little better 2009-07-20 08:03:00 -07:00
netdma.h
netevent.h
netlabel.h
netlink.h netlink: constify nlmsghdr arguments 2009-08-25 16:07:40 +02:00
netrom.h ax25: netrom: rose: Fix timer oopses 2010-02-09 04:50:56 -08:00
nexthop.h
nl802154.h ieee802154: add support for channel pages from IEEE 802.15.4-2006 2009-08-19 23:08:22 +04:00
p8022.h
pkt_cls.h
pkt_sched.h pkt_sched: Revert tasklet_hrtimer changes. 2009-09-01 17:59:25 -07:00
protocol.h net: constify struct inet6_protocol 2009-09-14 17:03:05 -07:00
psnap.h
raw.h
rawv6.h ipv6: Use correct data types for ICMPv6 type and code 2009-06-23 04:31:07 -07:00
red.h
regulatory.h
request_sock.h
rose.h NET: ROSE: Don't use static buffer. 2009-07-26 19:11:14 -07:00
route.h
rtnetlink.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 2009-09-10 18:17:09 -07:00
sch_generic.h pkt_sched: Fix tx queue selection in tc_modify_qdisc 2009-09-15 02:53:07 -07:00
scm.h cleanup: remove unused member in scm_cookie. 2009-07-05 19:16:10 -07:00
slhc_vj.h
snmp.h
sock.h net: Fix struct sock bitfield annotation 2009-10-11 23:03:52 -07:00
stp.h
tcp_states.h
tcp.h tcp: Prevent overzealous packetization by SWS logic. 2010-09-26 17:21:20 -07:00
timewait_sock.h
transp_v6.h inet: inet_connection_sock_af_ops const 2009-09-02 01:03:49 -07:00
udp.h net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
udplite.h
wext.h wext: add back wireless/ dir in sysfs for cfg80211 interfaces 2009-09-28 16:55:07 -04:00
wimax.h
wpan-phy.h ieee802154: add a sysfs representation of WPAN master devices 2009-08-19 23:08:20 +04:00
x25.h x25: Patch to fix bug 15678 - x25 accesses fields beyond end of packet. 2010-12-09 13:27:09 -08:00
x25device.h
xfrm.h xfrm: select sane defaults for xfrm[4|6] gc_thresh 2009-07-30 18:52:15 -07:00