diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-09-23 23:26:42 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-09-23 23:26:42 +0200 |
commit | 07bbc16a8676b06950a21f35b59f69b2fe763bbd (patch) | |
tree | f87fbfea747e9d92591c8d0a54db7c487e3c3d78 /net/sctp/sm_make_chunk.c | |
parent | 6a9e91846bf52cc70a0417de19fdfac224c435c4 (diff) | |
parent | f8e256c687eb53850685747757c8d75e58756e15 (diff) |
Merge branch 'timers/urgent' into x86/xen
Conflicts:
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
Manual merge:
arch/x86/kernel/smpboot.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index e8ca4e54981..b599cbba4fb 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -1886,11 +1886,13 @@ static void sctp_process_ext_param(struct sctp_association *asoc, /* if the peer reports AUTH, assume that he * supports AUTH. */ - asoc->peer.auth_capable = 1; + if (sctp_auth_enable) + asoc->peer.auth_capable = 1; break; case SCTP_CID_ASCONF: case SCTP_CID_ASCONF_ACK: - asoc->peer.asconf_capable = 1; + if (sctp_addip_enable) + asoc->peer.asconf_capable = 1; break; default: break; @@ -2319,12 +2321,10 @@ clean_up: /* Release the transport structures. */ list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { transport = list_entry(pos, struct sctp_transport, transports); - list_del_init(pos); - sctp_transport_free(transport); + if (transport->state != SCTP_ACTIVE) + sctp_assoc_rm_peer(asoc, transport); } - asoc->peer.transport_count = 0; - nomem: return 0; } @@ -2460,6 +2460,9 @@ do_addr_param: break; case SCTP_PARAM_SET_PRIMARY: + if (!sctp_addip_enable) + goto fall_through; + addr_param = param.v + sizeof(sctp_addip_param_t); af = sctp_get_af_specific(param_type2af(param.p->type)); |