|
@@ -702,12 +702,14 @@ struct sctp_chunk *sctp_make_sack(const struct sctp_association *asoc)
|
|
|
__u32 ctsn;
|
|
|
__u16 num_gabs, num_dup_tsns;
|
|
|
struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
|
|
|
+ struct sctp_gap_ack_block gabs[SCTP_MAX_GABS];
|
|
|
|
|
|
+ memset(gabs, 0, sizeof(gabs));
|
|
|
ctsn = sctp_tsnmap_get_ctsn(map);
|
|
|
SCTP_DEBUG_PRINTK("sackCTSNAck sent: 0x%x.\n", ctsn);
|
|
|
|
|
|
/* How much room is needed in the chunk? */
|
|
|
- num_gabs = sctp_tsnmap_num_gabs(map);
|
|
|
+ num_gabs = sctp_tsnmap_num_gabs(map, gabs);
|
|
|
num_dup_tsns = sctp_tsnmap_num_dups(map);
|
|
|
|
|
|
/* Initialize the SACK header. */
|
|
@@ -763,7 +765,7 @@ struct sctp_chunk *sctp_make_sack(const struct sctp_association *asoc)
|
|
|
/* Add the gap ack block information. */
|
|
|
if (num_gabs)
|
|
|
sctp_addto_chunk(retval, sizeof(__u32) * num_gabs,
|
|
|
- sctp_tsnmap_get_gabs(map));
|
|
|
+ gabs);
|
|
|
|
|
|
/* Add the duplicate TSN information. */
|
|
|
if (num_dup_tsns)
|