|
@@ -1964,15 +1964,13 @@ static int sctp_sendmsg(struct sock *sk, struct msghdr *msg, size_t msg_len)
|
|
|
* breaks.
|
|
* breaks.
|
|
|
*/
|
|
*/
|
|
|
err = sctp_primitive_SEND(net, asoc, datamsg);
|
|
err = sctp_primitive_SEND(net, asoc, datamsg);
|
|
|
|
|
+ sctp_datamsg_put(datamsg);
|
|
|
/* Did the lower layer accept the chunk? */
|
|
/* Did the lower layer accept the chunk? */
|
|
|
- if (err) {
|
|
|
|
|
- sctp_datamsg_free(datamsg);
|
|
|
|
|
|
|
+ if (err)
|
|
|
goto out_free;
|
|
goto out_free;
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
pr_debug("%s: we sent primitively\n", __func__);
|
|
pr_debug("%s: we sent primitively\n", __func__);
|
|
|
|
|
|
|
|
- sctp_datamsg_put(datamsg);
|
|
|
|
|
err = msg_len;
|
|
err = msg_len;
|
|
|
|
|
|
|
|
if (unlikely(wait_connect)) {
|
|
if (unlikely(wait_connect)) {
|