Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d521c08f authored by Wei Yongjun's avatar Wei Yongjun Committed by Vlad Yasevich
Browse files

sctp: fix to reset packet information after packet transmit



The packet information does not reset after packet transmit, this
may cause some problems such as following DATA chunk be sent without
AUTH chunk, even if the authentication of DATA chunk has been
requested by the peer.

Signed-off-by: default avatarWei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
parent 31b02e15
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -136,6 +136,17 @@ struct sctp_packet *sctp_packet_init(struct sctp_packet *packet,
	return packet;
}

static void sctp_packet_reset(struct sctp_packet *packet)
{
	packet->size = packet->overhead;
	packet->has_cookie_echo = 0;
	packet->has_sack = 0;
	packet->has_data = 0;
	packet->has_auth = 0;
	packet->ipfragok = 0;
	packet->auth = NULL;
}

/* Free a packet.  */
void sctp_packet_free(struct sctp_packet *packet)
{
@@ -576,7 +587,7 @@ int sctp_packet_transmit(struct sctp_packet *packet)
	(*tp->af_specific->sctp_xmit)(nskb, tp);

out:
	packet->size = packet->overhead;
	sctp_packet_reset(packet);
	return err;
no_route:
	kfree_skb(nskb);