* every SACK.  Store up to SCTP_MAX_DUP_TSNS worth of
         * information.
         */
-       __be32 dup_tsns[SCTP_MAX_DUP_TSNS];
        __u16 num_dup_tsns;
-
-       /* Record gap ack block information here.  */
-       struct sctp_gap_ack_block gabs[SCTP_MAX_GABS];
+       __be32 dup_tsns[SCTP_MAX_DUP_TSNS];
 };
 
 struct sctp_tsnmap_iter {
 }
 
 /* How many gap ack blocks do we have recorded? */
-__u16 sctp_tsnmap_num_gabs(struct sctp_tsnmap *map);
+__u16 sctp_tsnmap_num_gabs(struct sctp_tsnmap *map,
+                          struct sctp_gap_ack_block *gabs);
 
 /* Refresh the count on pending data. */
 __u16 sctp_tsnmap_pending(struct sctp_tsnmap *map);
 
-/* Return pointer to gap ack blocks as needed by SACK. */
-static inline struct sctp_gap_ack_block *sctp_tsnmap_get_gabs(struct sctp_tsnmap *map)
-{
-       return map->gabs;
-}
-
 /* Is there a gap in the TSN map?  */
 static inline int sctp_tsnmap_has_gap(const struct sctp_tsnmap *map)
 {
 
        __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.  */
        /* 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)
 
 }
 
 /* How many gap ack blocks do we have recorded? */
-__u16 sctp_tsnmap_num_gabs(struct sctp_tsnmap *map)
+__u16 sctp_tsnmap_num_gabs(struct sctp_tsnmap *map,
+                          struct sctp_gap_ack_block *gabs)
 {
        struct sctp_tsnmap_iter iter;
-       int gabs = 0;
+       int ngaps = 0;
 
        /* Refresh the gap ack information. */
        if (sctp_tsnmap_has_gap(map)) {
                                                &start,
                                                &end)) {
 
-                       map->gabs[gabs].start = htons(start);
-                       map->gabs[gabs].end = htons(end);
-                       gabs++;
-                       if (gabs >= SCTP_MAX_GABS)
+                       gabs[ngaps].start = htons(start);
+                       gabs[ngaps].end = htons(end);
+                       ngaps++;
+                       if (ngaps >= SCTP_MAX_GABS)
                                break;
                }
        }
-       return gabs;
+       return ngaps;
 }
 
 static int sctp_tsnmap_grow(struct sctp_tsnmap *map, u16 gap)