summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UPDATING4
-rw-r--r--sys/conf/newvers.sh2
-rw-r--r--sys/netinet/tcp_sack.c3
3 files changed, 7 insertions, 2 deletions
diff --git a/UPDATING b/UPDATING
index 38eab70645a9..9c456af396c8 100644
--- a/UPDATING
+++ b/UPDATING
@@ -8,6 +8,10 @@ Items affecting the ports and packages system can be found in
/usr/ports/UPDATING. Please read that file before running
portupgrade. Important recent entries: 20040724 (default X changes).
+20060201: p26 FreeBSD-SA-06:08.sack
+ Avoid an infinite loop in sack scoreboard processing which can
+ result from memory exhaustion.
+
20060125: p25 FreeBSD-SA-06:07.pf
Correct an error in pf handling of IP packet fragments which
could result in a kernel panic. [06:07]
diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh
index 1bab96111e61..f7912a5b4178 100644
--- a/sys/conf/newvers.sh
+++ b/sys/conf/newvers.sh
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="5.3"
-BRANCH="RELEASE-p25"
+BRANCH="RELEASE-p26"
RELEASE="${REVISION}-${BRANCH}"
VERSION="${TYPE} ${RELEASE}"
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
index 1cf44f2ba73d..21ac01aba654 100644
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -301,6 +301,7 @@ tcp_sack_option(struct tcpcb *tp, struct tcphdr *th, u_char *cp, int optlen)
tp->snd_numholes = 0;
if (tp->t_maxseg == 0)
panic("tcp_sack_option"); /* Should never happen */
+next_block:
while (tmp_olen > 0) {
struct sackblk sack;
@@ -390,7 +391,7 @@ tcp_sack_option(struct tcpcb *tp, struct tcphdr *th, u_char *cp, int optlen)
temp = (struct sackhole *)
uma_zalloc(sack_hole_zone,M_NOWAIT);
if (temp == NULL)
- continue; /* ENOBUFS */
+ goto next_block; /* ENOBUFS */
temp->next = cur->next;
temp->start = sack.end;
temp->end = cur->end;