diff options
author | glebius <glebius@FreeBSD.org> | 2013-03-29 13:57:55 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2013-03-29 13:57:55 +0000 |
commit | 1bccb6e916995784daf0c896715abbe3b4111b37 (patch) | |
tree | bedaca5c03f1b9c0933d34167038695db8c2f4d7 | |
parent | f412a6fab25bab864132725086efca3237e2c49a (diff) | |
download | FreeBSD-src-1bccb6e916995784daf0c896715abbe3b4111b37.zip FreeBSD-src-1bccb6e916995784daf0c896715abbe3b4111b37.tar.gz |
When soreceive_generic() hands off an mbuf from buffer,
clear its pointer to next record, since next record
belongs to the buffer, and shouldn't be leaked.
The ng_ksocket(4) used to clear this pointer itself,
but the correct place is here.
Sponsored by: Nginx, Inc
-rw-r--r-- | sys/kern/uipc_socket.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index bce61e5..259a123 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1860,6 +1860,7 @@ dontblock: nextrecord = m->m_nextpkt; sbfree(&so->so_rcv, m); if (mp != NULL) { + m->m_nextpkt = NULL; *mp = m; mp = &m->m_next; so->so_rcv.sb_mb = m = m->m_next; |