summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-09-06 17:05:11 +0000
committerglebius <glebius@FreeBSD.org>2005-09-06 17:05:11 +0000
commita1663238688650861d85c502aa4a267d1049211f (patch)
tree13497bb0b8445c091d171a3360f4467e0c6e22de /sys/kern
parent807987bb242537fd19578f0638c5911467671a7b (diff)
downloadFreeBSD-src-a1663238688650861d85c502aa4a267d1049211f.zip
FreeBSD-src-a1663238688650861d85c502aa4a267d1049211f.tar.gz
In soreceive(), when a first mbuf is removed from socket buffer use
sockbuf_pushsync(). Previous manipulation could lead to an inconsistent mbuf. Reviewed by: rwatson
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_socket.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index c15e5e1..d2e4556 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1279,14 +1279,7 @@ dontblock:
so->so_rcv.sb_mb = m_free(m);
m = so->so_rcv.sb_mb;
}
- if (m != NULL) {
- m->m_nextpkt = nextrecord;
- if (nextrecord == NULL)
- so->so_rcv.sb_lastrecord = m;
- } else {
- so->so_rcv.sb_mb = nextrecord;
- SB_EMPTY_FIXUP(&so->so_rcv);
- }
+ sockbuf_pushsync(&so->so_rcv, nextrecord);
SBLASTRECORDCHK(&so->so_rcv);
SBLASTMBUFCHK(&so->so_rcv);
}
OpenPOWER on IntegriCloud