diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-03-02 06:46:50 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-02 22:27:38 -0800 |
commit | d1dd524785e30cf3d64d395d829b207376acb0aa (patch) | |
tree | 8a644aa38a2ce3b46738b41ee229aef08c9db691 /net/sctp | |
parent | 52c0326beaa3cb0049d0f1c51c6ad5d4a04e4430 (diff) | |
download | op-kernel-dev-d1dd524785e30cf3d64d395d829b207376acb0aa.zip op-kernel-dev-d1dd524785e30cf3d64d395d829b207376acb0aa.tar.gz |
sctp: fix crash during module unload
An extra list_del() during the module load failure and unload
resulted in a crash with a list corruption. Now sctp can
be unloaded again.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/protocol.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index b78e3be..4e66384 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -1322,9 +1322,8 @@ SCTP_STATIC __init int sctp_init(void) out: return status; err_v6_add_protocol: - sctp_v6_del_protocol(); -err_add_protocol: sctp_v4_del_protocol(); +err_add_protocol: inet_ctl_sock_destroy(sctp_ctl_sock); err_ctl_sock_init: sctp_v6_protosw_exit(); @@ -1335,7 +1334,6 @@ err_protosw_init: sctp_v4_pf_exit(); sctp_v6_pf_exit(); sctp_sysctl_unregister(); - list_del(&sctp_af_inet.list); free_pages((unsigned long)sctp_port_hashtable, get_order(sctp_port_hashsize * sizeof(struct sctp_bind_hashbucket))); @@ -1383,7 +1381,6 @@ SCTP_STATIC __exit void sctp_exit(void) sctp_v4_pf_exit(); sctp_sysctl_unregister(); - list_del(&sctp_af_inet.list); free_pages((unsigned long)sctp_assoc_hashtable, get_order(sctp_assoc_hashsize * |