summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2009-03-02 06:46:50 +0000
committerDavid S. Miller <davem@davemloft.net>2009-03-02 22:27:38 -0800
commitd1dd524785e30cf3d64d395d829b207376acb0aa (patch)
tree8a644aa38a2ce3b46738b41ee229aef08c9db691 /net
parent52c0326beaa3cb0049d0f1c51c6ad5d4a04e4430 (diff)
downloadlinux-d1dd524785e30cf3d64d395d829b207376acb0aa.tar.gz
linux-d1dd524785e30cf3d64d395d829b207376acb0aa.tar.bz2
linux-d1dd524785e30cf3d64d395d829b207376acb0aa.zip
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')
-rw-r--r--net/sctp/protocol.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index b78e3be69013..4e6638449639 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 *