diff options
| author | Anders Persson <Anders.Persson@Sun.COM> | 2009-10-21 19:52:57 -0700 |
|---|---|---|
| committer | Anders Persson <Anders.Persson@Sun.COM> | 2009-10-21 19:52:57 -0700 |
| commit | c99b48aad3a1498770f11e4a811e85cdcf52bf60 (patch) | |
| tree | ab3e66f1c130b6ec5542e80efeb6420aa6f9c33d /usr/src/uts/common/inet/tcp/tcp.c | |
| parent | 24101488ded13ef7ddcb2c1a25a4452b8b4d581b (diff) | |
| download | illumos-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.c | 5 |
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); |
