[SCTP]: Fix a race between module load and protosw access
authorVlad Yasevich <vladislav.yasevich@hp.com>
Thu, 20 Mar 2008 22:17:14 +0000 (15:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Mar 2008 22:17:14 +0000 (15:17 -0700)
commit270637abff0cdf848b910b9f96ad342e1da61c66
treec5335ff19071e083588240da49b2aac27a402d8b
parentd0ebf133590abdc035af6e19a6568667af0ab3b0
[SCTP]: Fix a race between module load and protosw access

There is a race is SCTP between the loading of the module
and the access by the socket layer to the protocol functions.
In particular, a list of addresss that SCTP maintains is
not initialized prior to the registration with the protosw.
Thus it is possible for a user application to gain access
to SCTP functions before everything has been initialized.
The problem shows up as odd crashes during connection
initializtion when we try to access the SCTP address list.

The solution is to refactor how we do registration and
initialize the lists prior to registering with the protosw.
Care must be taken since the address list initialization
depends on some other pieces of SCTP initialization.  Also
the clean-up in case of failure now also needs to be refactored.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Acked-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sctp/sctp.h
net/sctp/ipv6.c
net/sctp/protocol.c