diff options
-rw-r--r-- | include/net/sctp/structs.h | 2 | ||||
-rw-r--r-- | net/sctp/chunk.c | 16 | ||||
-rw-r--r-- | net/sctp/socket.c | 4 |
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); |
639 | void sctp_datamsg_put(struct sctp_datamsg *); | 639 | void sctp_datamsg_put(struct sctp_datamsg *); |
640 | void sctp_datamsg_free(struct sctp_datamsg *); | ||
641 | void sctp_datamsg_track(struct sctp_chunk *); | ||
642 | void sctp_chunk_fail(struct sctp_chunk *, int error); | 640 | void sctp_chunk_fail(struct sctp_chunk *, int error); |
643 | int sctp_chunk_abandoned(struct sctp_chunk *); | 641 | int 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 | */ | ||
142 | void 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. */ | ||
148 | void 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. */ |
154 | static void sctp_datamsg_assign(struct sctp_datamsg *msg, struct sctp_chunk *chunk) | 140 | static 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 |