TCP: Do not autobind ports for TCP sockets
commite061467dc5b4c78d4fe61ea6d7a0c848e22882d7
authorDavid Miller <davem@davemloft.net>
Wed, 22 Aug 2007 04:14:45 +0000 (21 21:14 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 31 Aug 2007 06:01:51 +0000 (30 23:01 -0700)
treeb6039d90e303840520aea4fa69dd7c2982e490a5
parent5299059b0c2e508d01fbe78f6fe43b94d9139373
TCP: Do not autobind ports for TCP sockets

[TCP]: Invoke tcp_sendmsg() directly, do not use inet_sendmsg().

As discovered by Evegniy Polyakov, if we try to sendmsg after
a connection reset, we can do incredibly stupid things.

The core issue is that inet_sendmsg() tries to autobind the
socket, but we should never do that for TCP.  Instead we should
just go straight into TCP's sendmsg() code which will do all
of the necessary state and pending socket error checks.

TCP's sendpage already directly vectors to tcp_sendpage(), so this
merely brings sendmsg() in line with that.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
include/net/tcp.h
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv6/af_inet6.c
net/ipv6/tcp_ipv6.c