diff options
Diffstat (limited to 'net/sctp/sm_statefuns.c')
-rw-r--r-- | net/sctp/sm_statefuns.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 483dcd71b3c5..ae65b6b5973a 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -758,6 +758,13 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(struct net *net, | |||
758 | struct sctp_chunk auth; | 758 | struct sctp_chunk auth; |
759 | sctp_ierror_t ret; | 759 | sctp_ierror_t ret; |
760 | 760 | ||
761 | /* Make sure that we and the peer are AUTH capable */ | ||
762 | if (!net->sctp.auth_enable || !new_asoc->peer.auth_capable) { | ||
763 | kfree_skb(chunk->auth_chunk); | ||
764 | sctp_association_free(new_asoc); | ||
765 | return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); | ||
766 | } | ||
767 | |||
761 | /* set-up our fake chunk so that we can process it */ | 768 | /* set-up our fake chunk so that we can process it */ |
762 | auth.skb = chunk->auth_chunk; | 769 | auth.skb = chunk->auth_chunk; |
763 | auth.asoc = chunk->asoc; | 770 | auth.asoc = chunk->asoc; |
@@ -6176,7 +6183,7 @@ static int sctp_eat_data(const struct sctp_association *asoc, | |||
6176 | * PMTU. In cases, such as loopback, this might be a rather | 6183 | * PMTU. In cases, such as loopback, this might be a rather |
6177 | * large spill over. | 6184 | * large spill over. |
6178 | */ | 6185 | */ |
6179 | if ((!chunk->data_accepted) && (!asoc->rwnd || asoc->rwnd_over || | 6186 | if ((!chunk->data_accepted) && (!asoc->rwnd || |
6180 | (datalen > asoc->rwnd + asoc->frag_point))) { | 6187 | (datalen > asoc->rwnd + asoc->frag_point))) { |
6181 | 6188 | ||
6182 | /* If this is the next TSN, consider reneging to make | 6189 | /* If this is the next TSN, consider reneging to make |