Skip to content

Commit

Permalink
net: sctp: Fix negotiation of the number of data streams.
Browse files Browse the repository at this point in the history
The number of output and input streams was never being reduced, eg when
processing received INIT or INIT_ACK chunks.
The effect is that DATA chunks can be sent with invalid stream ids
and then discarded by the remote system.

Fixes: 2075e50 ("sctp: convert to genradix")
Signed-off-by: David Laight <david.laight@aculab.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
david-laight authored and davem330 committed Aug 20, 2020
1 parent 41506bf commit ab921f3
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions net/sctp/stream.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,13 @@ static int sctp_stream_alloc_out(struct sctp_stream *stream, __u16 outcnt,
int ret;

if (outcnt <= stream->outcnt)
return 0;
goto out;

ret = genradix_prealloc(&stream->out, outcnt, gfp);
if (ret)
return ret;

out:
stream->outcnt = outcnt;
return 0;
}
Expand All @@ -104,12 +105,13 @@ static int sctp_stream_alloc_in(struct sctp_stream *stream, __u16 incnt,
int ret;

if (incnt <= stream->incnt)
return 0;
goto out;

ret = genradix_prealloc(&stream->in, incnt, gfp);
if (ret)
return ret;

out:
stream->incnt = incnt;
return 0;
}
Expand Down

0 comments on commit ab921f3

Please sign in to comment.