tcp rack: fix switching to RACK when FIN has been sent

Fix the rack sendmap entry in case a FIN has been sent when the
stack is switched over to RACK.

Reported by:		syzbot+dd55e316428419e9354b@syzkaller.appspotmail.com
Reviewed by:		rrs
MFC after:		1 week
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D35731
This commit is contained in:
Michael Tuexen 2022-07-19 20:28:25 +02:00
parent 6f5f44562a
commit 5b741298b1

View File

@ -12608,12 +12608,9 @@ rack_init(struct tcpcb *tp)
rsm->r_tim_lastsent[0] = rack_to_usec_ts(&rack->r_ctl.act_rcv_time);
rsm->r_rtr_cnt = 1;
rsm->r_rtr_bytes = 0;
if (tp->t_flags & TF_SENTFIN) {
rsm->r_end = tp->snd_max - 1;
if (tp->t_flags & TF_SENTFIN)
rsm->r_flags |= RACK_HAS_FIN;
} else {
rsm->r_end = tp->snd_max;
}
rsm->r_end = tp->snd_max;
if (tp->snd_una == tp->iss) {
/* The data space is one beyond snd_una */
rsm->r_flags |= RACK_HAS_SYN;