diff options
Diffstat (limited to 'net/sctp/auth.c')
-rw-r--r-- | net/sctp/auth.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/sctp/auth.c b/net/sctp/auth.c index fb7976aee61c..4f15b7d730e1 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c | |||
@@ -381,13 +381,14 @@ nomem: | |||
381 | } | 381 | } |
382 | 382 | ||
383 | 383 | ||
384 | /* Public interface to creat the association shared key. | 384 | /* Public interface to create the association shared key. |
385 | * See code above for the algorithm. | 385 | * See code above for the algorithm. |
386 | */ | 386 | */ |
387 | int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp) | 387 | int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp) |
388 | { | 388 | { |
389 | struct sctp_auth_bytes *secret; | 389 | struct sctp_auth_bytes *secret; |
390 | struct sctp_shared_key *ep_key; | 390 | struct sctp_shared_key *ep_key; |
391 | struct sctp_chunk *chunk; | ||
391 | 392 | ||
392 | /* If we don't support AUTH, or peer is not capable | 393 | /* If we don't support AUTH, or peer is not capable |
393 | * we don't need to do anything. | 394 | * we don't need to do anything. |
@@ -410,6 +411,14 @@ int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp) | |||
410 | sctp_auth_key_put(asoc->asoc_shared_key); | 411 | sctp_auth_key_put(asoc->asoc_shared_key); |
411 | asoc->asoc_shared_key = secret; | 412 | asoc->asoc_shared_key = secret; |
412 | 413 | ||
414 | /* Update send queue in case any chunk already in there now | ||
415 | * needs authenticating | ||
416 | */ | ||
417 | list_for_each_entry(chunk, &asoc->outqueue.out_chunk_list, list) { | ||
418 | if (sctp_auth_send_cid(chunk->chunk_hdr->type, asoc)) | ||
419 | chunk->auth = 1; | ||
420 | } | ||
421 | |||
413 | return 0; | 422 | return 0; |
414 | } | 423 | } |
415 | 424 | ||