net: sctp: decouple cleaning some socket data from endpoint
authorDaniel Borkmann <dborkman@redhat.com>
Tue, 25 Jun 2013 16:17:29 +0000 (18:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Jun 2013 23:33:04 +0000 (16:33 -0700)
commit0a2fbac197441ebeafbbef09d4bbc0b5e73716d7
tree34fe9f625e40bb5f175fcd1ed5af8e72ceb21a87
parentb527fe693304d244b6103dc9f8a87150e71c29f7
net: sctp: decouple cleaning some socket data from endpoint

Rather instead of having the endpoint clean the garbage from the
socket, use a sk_destruct handler sctp_destruct_sock(), that does
the job for that when there are no more references on the socket.
At least do this for our crypto transform through crypto_free_hash()
that is allocated when in listening state.

Also, perform sctp_put_port() only when sk is valid. At a later
point in time we can still determine if there's an option of
placing this into sk_prot->unhash() or sctp_endpoint_free() without
any races. For now, leave it in sctp_endpoint_destroy() though.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/endpointola.c
net/sctp/socket.c