aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2008-01-20 09:10:46 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:08:11 -0500
commit853f4b505578ea3a1d9c2f5fb4ca58658ea15780 (patch)
tree86103e8c8e91176d27bc39e9f38da9f7e7ac016f /net/sctp
parent16b4d60b56b9ec922d91cc11ede0bd59033deae4 (diff)
[SCTP]: Correctly initialize error when parameter validation failed.
When parameter validation fails, there should be error causes that specify what type of failure we've encountered. If the causes are not there, we lacked memory to allocated them. Thus make that the default value for the error. 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/sm_statefuns.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index 6e127573594e..61cbd5a8dd0c 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -481,7 +481,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
481 sctp_init_chunk_t *initchunk; 481 sctp_init_chunk_t *initchunk;
482 struct sctp_chunk *err_chunk; 482 struct sctp_chunk *err_chunk;
483 struct sctp_packet *packet; 483 struct sctp_packet *packet;
484 sctp_error_t error = SCTP_ERROR_NO_ERROR;
485 484
486 if (!sctp_vtag_verify(chunk, asoc)) 485 if (!sctp_vtag_verify(chunk, asoc))
487 return sctp_sf_pdiscard(ep, asoc, type, arg, commands); 486 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
@@ -506,6 +505,8 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
506 (sctp_init_chunk_t *)chunk->chunk_hdr, chunk, 505 (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
507 &err_chunk)) { 506 &err_chunk)) {
508 507
508 sctp_error_t error = SCTP_ERROR_NO_RESOURCE;
509
509 /* This chunk contains fatal error. It is to be discarded. 510 /* This chunk contains fatal error. It is to be discarded.
510 * Send an ABORT, with causes. If there are no causes, 511 * Send an ABORT, with causes. If there are no causes,
511 * then there wasn't enough memory. Just terminate 512 * then there wasn't enough memory. Just terminate
@@ -525,8 +526,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
525 SCTP_PACKET(packet)); 526 SCTP_PACKET(packet));
526 SCTP_INC_STATS(SCTP_MIB_OUTCTRLCHUNKS); 527 SCTP_INC_STATS(SCTP_MIB_OUTCTRLCHUNKS);
527 error = SCTP_ERROR_INV_PARAM; 528 error = SCTP_ERROR_INV_PARAM;
528 } else {
529 error = SCTP_ERROR_NO_RESOURCE;
530 } 529 }
531 } 530 }
532 531