summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorPatrick Mooney <patrick.f.mooney@gmail.com>2015-09-15 14:26:26 +0000
committerPatrick Mooney <patrick.f.mooney@gmail.com>2015-09-15 14:26:26 +0000
commita845c808b8c12dd241b837bd48ae775b26d458fe (patch)
tree370333609e6cb281020e7387c189857ba362b2cc /usr/src
parentac0b8220e0412dac6c66e93475be7f8702d72dc3 (diff)
parent7bbfa3ee1f517d6d5762f10047886094cea843a1 (diff)
downloadillumos-joyent-a845c808b8c12dd241b837bd48ae775b26d458fe.tar.gz
[illumos-gate merge]
commit 7bbfa3ee1f517d6d5762f10047886094cea843a1 6217 nfsauth_cache_get() should allocate/free maxlen for addr, not len commit 020c6b3e8852eb03df56f9b3fc96ffdc28975b1f 6227 truss(1M) doesn't show TCP_KEEPIDLE, TCP_KEEPCNT, and TCP_KEEPINTVL commit c546f36aa898d913ff77674fb5ff97f15b2e08b4 6220 memleak in l2arc on debug build
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/truss/print.c3
-rw-r--r--usr/src/uts/common/fs/nfs/nfs_auth.c16
-rw-r--r--usr/src/uts/common/fs/zfs/arc.c7
3 files changed, 18 insertions, 8 deletions
diff --git a/usr/src/cmd/truss/print.c b/usr/src/cmd/truss/print.c
index 2b59676e30..ff896f5da4 100644
--- a/usr/src/cmd/truss/print.c
+++ b/usr/src/cmd/truss/print.c
@@ -1948,6 +1948,9 @@ tcp_optname(private_t *pri, long val)
case TCP_RTO_MIN: return ("TCP_RTO_MIN");
case TCP_RTO_MAX: return ("TCP_RTO_MAX");
case TCP_LINGER2: return ("TCP_LINGER2");
+ case TCP_KEEPIDLE: return ("TCP_KEEPIDLE");
+ case TCP_KEEPCNT: return ("TCP_KEEPCNT");
+ case TCP_KEEPINTVL: return ("TCP_KEEPINTVL");
default: (void) snprintf(pri->code_buf,
sizeof (pri->code_buf),
diff --git a/usr/src/uts/common/fs/nfs/nfs_auth.c b/usr/src/uts/common/fs/nfs/nfs_auth.c
index a8bcfdf438..570c1d0275 100644
--- a/usr/src/uts/common/fs/nfs/nfs_auth.c
+++ b/usr/src/uts/common/fs/nfs/nfs_auth.c
@@ -843,7 +843,7 @@ nfsauth_cache_get(struct exportinfo *exi, struct svc_req *req, int flavor,
claddr = svc_getrpccaller(req->rq_xprt);
addr = *claddr;
- addr.buf = kmem_alloc(addr.len, KM_SLEEP);
+ addr.buf = kmem_alloc(addr.maxlen, KM_SLEEP);
bcopy(claddr->buf, addr.buf, claddr->len);
SVC_GETADDRMASK(req->rq_xprt, SVC_TATTR_ADDRMASK, (void **)&taddrmask);
@@ -874,9 +874,9 @@ nfsauth_cache_get(struct exportinfo *exi, struct svc_req *req, int flavor,
* Initialize the new auth_cache_clnt
*/
nc->authc_addr = addr;
- nc->authc_addr.buf = kmem_alloc(addr.len,
+ nc->authc_addr.buf = kmem_alloc(addr.maxlen,
KM_NOSLEEP | KM_NORMALPRI);
- if (addr.len != 0 && nc->authc_addr.buf == NULL) {
+ if (addr.maxlen != 0 && nc->authc_addr.buf == NULL) {
kmem_free(nc, sizeof (*nc));
goto retrieve;
}
@@ -897,7 +897,7 @@ nfsauth_cache_get(struct exportinfo *exi, struct svc_req *req, int flavor,
avl_destroy(&nc->authc_tree);
rw_destroy(&nc->authc_lock);
- kmem_free(nc->authc_addr.buf, nc->authc_addr.len);
+ kmem_free(nc->authc_addr.buf, nc->authc_addr.maxlen);
kmem_free(nc, sizeof (*nc));
}
}
@@ -1057,7 +1057,7 @@ wait:
p->auth_state = NFS_AUTH_WAITING;
mutex_exit(&p->auth_lock);
- kmem_free(addr.buf, addr.len);
+ kmem_free(addr.buf, addr.maxlen);
addr = p->auth_clnt->authc_addr;
atomic_inc_uint(&nfsauth_cache_miss);
@@ -1206,7 +1206,7 @@ wait:
uint_t, nach,
time_t, refresh);
- kmem_free(addr.buf, addr.len);
+ kmem_free(addr.buf, addr.maxlen);
}
return (access);
@@ -1235,7 +1235,7 @@ retrieve:
}
}
- kmem_free(addr.buf, addr.len);
+ kmem_free(addr.buf, addr.maxlen);
return (access);
}
@@ -1429,7 +1429,7 @@ nfsauth_free_clnt_node(struct auth_cache_clnt *p)
nfsauth_free_node(node);
avl_destroy(&p->authc_tree);
- kmem_free(p->authc_addr.buf, p->authc_addr.len);
+ kmem_free(p->authc_addr.buf, p->authc_addr.maxlen);
rw_destroy(&p->authc_lock);
kmem_free(p, sizeof (*p));
diff --git a/usr/src/uts/common/fs/zfs/arc.c b/usr/src/uts/common/fs/zfs/arc.c
index 434842e519..b7bf5ad40a 100644
--- a/usr/src/uts/common/fs/zfs/arc.c
+++ b/usr/src/uts/common/fs/zfs/arc.c
@@ -1306,6 +1306,13 @@ arc_hdr_realloc(arc_buf_hdr_t *hdr, kmem_cache_t *old, kmem_cache_t *new)
VERIFY(!HDR_L2_WRITING(hdr));
VERIFY3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL);
+#ifdef ZFS_DEBUG
+ if (hdr->b_l1hdr.b_thawed != NULL) {
+ kmem_free(hdr->b_l1hdr.b_thawed, 1);
+ hdr->b_l1hdr.b_thawed = NULL;
+ }
+#endif
+
nhdr->b_flags &= ~ARC_FLAG_HAS_L1HDR;
}
/*