summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp/tcp.c
diff options
context:
space:
mode:
authorAnders Persson <Anders.Persson@Sun.COM>2009-10-21 19:52:57 -0700
committerAnders Persson <Anders.Persson@Sun.COM>2009-10-21 19:52:57 -0700
commitc99b48aad3a1498770f11e4a811e85cdcf52bf60 (patch)
treeab3e66f1c130b6ec5542e80efeb6420aa6f9c33d /usr/src/uts/common/inet/tcp/tcp.c
parent24101488ded13ef7ddcb2c1a25a4452b8b4d581b (diff)
downloadillumos-joyent-c99b48aad3a1498770f11e4a811e85cdcf52bf60.tar.gz
6872588 tcp_sendmsg leaks mblks when ancillary data is passed along
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp.c')
-rw-r--r--usr/src/uts/common/inet/tcp/tcp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp.c b/usr/src/uts/common/inet/tcp/tcp.c
index a6f3ee8331..5939bed3b1 100644
--- a/usr/src/uts/common/inet/tcp/tcp.c
+++ b/usr/src/uts/common/inet/tcp/tcp.c
@@ -26625,9 +26625,10 @@ tcp_sendmsg(sock_lower_handle_t proto_handle, mblk_t *mp, struct nmsghdr *msg,
ASSERT(connp->conn_upper_handle != NULL);
if (msg->msg_controllen != 0) {
+ freemsg(mp);
return (EOPNOTSUPP);
-
}
+
switch (DB_TYPE(mp)) {
case M_DATA:
tcp = connp->conn_tcp;
@@ -26672,7 +26673,7 @@ tcp_sendmsg(sock_lower_handle_t proto_handle, mblk_t *mp, struct nmsghdr *msg,
*/
CONN_INC_REF(connp);
- if (msg != NULL && msg->msg_flags & MSG_OOB) {
+ if (msg->msg_flags & MSG_OOB) {
SQUEUE_ENTER_ONE(connp->conn_sqp, mp,
tcp_output_urgent, connp, tcp_squeue_flag,
SQTAG_TCP_OUTPUT);