aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/sctp/structs.h2
-rw-r--r--net/sctp/chunk.c16
-rw-r--r--net/sctp/socket.c4
3 files changed, 3 insertions, 19 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 8966599ddb9f..0ce0443c5b79 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -637,8 +637,6 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *,
637 struct sctp_sndrcvinfo *, 637 struct sctp_sndrcvinfo *,
638 struct msghdr *, int len); 638 struct msghdr *, int len);
639void sctp_datamsg_put(struct sctp_datamsg *); 639void sctp_datamsg_put(struct sctp_datamsg *);
640void sctp_datamsg_free(struct sctp_datamsg *);
641void sctp_datamsg_track(struct sctp_chunk *);
642void sctp_chunk_fail(struct sctp_chunk *, int error); 640void sctp_chunk_fail(struct sctp_chunk *, int error);
643int sctp_chunk_abandoned(struct sctp_chunk *); 641int sctp_chunk_abandoned(struct sctp_chunk *);
644 642
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c
index e1f355080026..ed857643e3ff 100644
--- a/net/sctp/chunk.c
+++ b/net/sctp/chunk.c
@@ -136,20 +136,6 @@ void sctp_datamsg_put(struct sctp_datamsg *msg)
136 sctp_datamsg_destroy(msg); 136 sctp_datamsg_destroy(msg);
137} 137}
138 138
139/* Free a message. Really just give up a reference, the
140 * really free happens in sctp_datamsg_destroy().
141 */
142void sctp_datamsg_free(struct sctp_datamsg *msg)
143{
144 sctp_datamsg_put(msg);
145}
146
147/* Hold on to all the fragments until all chunks have been sent. */
148void sctp_datamsg_track(struct sctp_chunk *chunk)
149{
150 sctp_chunk_hold(chunk);
151}
152
153/* Assign a chunk to this datamsg. */ 139/* Assign a chunk to this datamsg. */
154static void sctp_datamsg_assign(struct sctp_datamsg *msg, struct sctp_chunk *chunk) 140static void sctp_datamsg_assign(struct sctp_datamsg *msg, struct sctp_chunk *chunk)
155{ 141{
@@ -295,7 +281,7 @@ errout:
295 chunk = list_entry(pos, struct sctp_chunk, frag_list); 281 chunk = list_entry(pos, struct sctp_chunk, frag_list);
296 sctp_chunk_free(chunk); 282 sctp_chunk_free(chunk);
297 } 283 }
298 sctp_datamsg_free(msg); 284 sctp_datamsg_put(msg);
299 return NULL; 285 return NULL;
300} 286}
301 287
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index a3138a0fe2c5..76c747056dd7 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -1729,7 +1729,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1729 /* Now send the (possibly) fragmented message. */ 1729 /* Now send the (possibly) fragmented message. */
1730 list_for_each(pos, &datamsg->chunks) { 1730 list_for_each(pos, &datamsg->chunks) {
1731 chunk = list_entry(pos, struct sctp_chunk, frag_list); 1731 chunk = list_entry(pos, struct sctp_chunk, frag_list);
1732 sctp_datamsg_track(chunk); 1732 sctp_chunk_hold(chunk);
1733 1733
1734 /* Do accounting for the write space. */ 1734 /* Do accounting for the write space. */
1735 sctp_set_owner_w(chunk); 1735 sctp_set_owner_w(chunk);
@@ -1748,7 +1748,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1748 SCTP_DEBUG_PRINTK("We sent primitively.\n"); 1748 SCTP_DEBUG_PRINTK("We sent primitively.\n");
1749 } 1749 }
1750 1750
1751 sctp_datamsg_free(datamsg); 1751 sctp_datamsg_put(datamsg);
1752 if (err) 1752 if (err)
1753 goto out_free; 1753 goto out_free;
1754 else 1754 else