Eric Dumazet
719f835853
udp: add rehash on connect()
...
commit 30fff923 introduced in linux-2.6.33 (udp: bind() optimisation)
added a secondary hash on UDP, hashed on (local addr, local port).
Problem is that following sequence :
fd = socket(...)
connect(fd, &remote, ...)
not only selects remote end point (address and port), but also sets
local address, while UDP stack stored in secondary hash table the socket
while its local address was INADDR_ANY (or ipv6 equivalent)
Sequence is :
- autobind() : choose a random local port, insert socket in hash tables
[while local address is INADDR_ANY]
- connect() : set remote address and port, change local address to IP
given by a route lookup.
When an incoming UDP frame comes, if more than 10 sockets are found in
primary hash table, we switch to secondary table, and fail to find
socket because its local address changed.
One solution to this problem is to rehash datagram socket if needed.
We add a new rehash(struct socket *) method in "struct proto", and
implement this method for UDP v4 & v6, using a common helper.
This rehashing only takes care of secondary hash table, since primary
hash (based on local port only) is not changed.
Reported-by: Krzysztof Piotr Oledzki <[email protected] >
Signed-off-by: Eric Dumazet <[email protected] >
Tested-by: Krzysztof Piotr Oledzki <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
2010-09-08 21:45:01 -07:00
..
9p
net/9p: Implement TXATTRCREATE 9p call
2010-08-02 14:28:34 -05:00
bluetooth
Bluetooth: Use 3-DH5 payload size for default ERTM max PDU size
2010-08-10 07:59:11 -04:00
caif
caif-driver: Add CAIF-SPI Protocol driver.
2010-06-29 00:08:21 -07:00
irda
irda: Use __packed annotation instead IRDA_PACKED macro
2010-07-21 14:44:29 -07:00
iucv
netfilter
netfilter: nf_nat: make unique_tuple return void
2010-08-02 17:20:54 +02:00
netns
phonet
phonet: use call_rcu for phonet device free
2010-06-09 16:14:25 -07:00
sctp
net: use __packed annotation
2010-06-03 03:21:52 -07:00
tc_act
net sched: fix race in mirred device removal
2010-07-24 21:04:20 -07:00
tipc
act_api.h
pkt_sched: gen_kill_estimator() rcu fixes
2010-06-11 18:37:08 -07:00
addrconf.h
af_ieee802154.h
af_rxrpc.h
af_unix.h
af_unix: Allow credentials to work across user and pid namespaces.
2010-06-16 14:58:16 -07:00
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
cfg80211.h
cfg80211: fix dev <-> wiphy typo
2010-07-29 12:55:00 -04:00
checksum.h
cipso_ipv4.h
cls_cgroup.h
cls_cgroup: Fix rcu lockdep warning
2010-09-03 09:55:24 -07:00
compat.h
datalink.h
dcbnl.h
dn.h
dn_dev.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
dn_fib.h
dn_neigh.h
dn_nsp.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
dn_route.h
net-next: remove useless union keyword
2010-06-10 23:31:35 -07:00
dsa.h
dsfield.h
dst.h
net: check for refcount if pop a stacked dst_entry
2010-06-04 15:56:00 -07:00
dst_ops.h
esp.h
ethoc.h
fib_rules.h
flow.h
garp.h
gen_stats.h
genetlink.h
net: CONFIG_NET_NS reduction
2010-06-02 05:16:23 -07:00
icmp.h
ieee80211_radiotap.h
ieee802154.h
ieee802154_netdev.h
if_inet6.h
inet6_connection_sock.h
inet6_hashtables.h
inet_common.h
inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()
2010-07-12 20:21:46 -07:00
inet_connection_sock.h
inet_ecn.h
inet_frag.h
fragment: add fast path for in-order fragments
2010-06-30 13:44:29 -07:00
inet_hashtables.h
inet_sock.h
net - IP_NODEFRAG option for IPv4 socket
2010-06-23 13:16:38 -07:00
inet_timewait_sock.h
inetpeer.h
inetpeer: restore small inet_peer structures
2010-06-16 11:55:39 -07:00
ip.h
snmp: 64bit ipstats_mib for all arches
2010-06-30 13:31:19 -07:00
ip6_checksum.h
ip6_fib.h
net-next: remove useless union keyword
2010-06-10 23:31:35 -07:00
ip6_route.h
ip6_tunnel.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
ip_fib.h
ip_vs.h
ipvs: fix active FTP
2010-09-08 10:39:57 -07:00
ipcomp.h
ipconfig.h
ipip.h
net-next: remove useless union keyword
2010-06-10 23:31:35 -07:00
ipv6.h
snmp: 64bit ipstats_mib for all arches
2010-06-30 13:31:19 -07:00
ipx.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
iw_handler.h
lapb.h
lib80211.h
lib80211: remove unused host_build_iv option
2010-07-26 15:09:04 -04:00
llc.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
mac80211.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
2010-07-29 14:47:07 -04:00
mip6.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
mld.h
ndisc.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
neighbour.h
net/neighbour.h: fix typo
2010-06-30 12:06:52 -07:00
net_namespace.h
netdma.h
netevent.h
netlabel.h
netlink.h
net: Fix a typo in netlink.h
2010-06-23 12:58:40 -07:00
netrom.h
nexthop.h
nl802154.h
p8022.h
pkt_cls.h
pkt_sched.h
net: Define accessors to manipulate QDISC_STATE_RUNNING
2010-06-02 03:23:51 -07:00
protocol.h
psnap.h
raw.h
rawv6.h
red.h
regulatory.h
wireless: only use alpha2 regulatory information from country IE
2010-07-20 16:44:35 -04:00
request_sock.h
rose.h
route.h
net-next: remove useless union keyword
2010-06-10 23:31:35 -07:00
rtnetlink.h
sch_generic.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2010-07-07 15:59:38 -07:00
scm.h
scm: Capture the full credentials of the scm sender.
2010-06-16 14:55:56 -07:00
slhc_vj.h
snmp.h
snmp: 64bit ipstats_mib for all arches
2010-06-30 13:31:19 -07:00
sock.h
udp: add rehash on connect()
2010-09-08 21:45:01 -07:00
stp.h
tcp.h
tcp: Combat per-cpu skew in orphan tests.
2010-08-25 02:27:49 -07:00
tcp_states.h
timewait_sock.h
transp_v6.h
udp.h
udp: add rehash on connect()
2010-09-08 21:45:01 -07:00
udplite.h
wext.h
wimax.h
wpan-phy.h
x25.h
x25device.h
xfrm.h
xfrm: fix XFRMA_MARK extraction in xfrm_mark_get
2010-06-30 10:43:31 -07:00