summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/dtrace/dtrace.c
diff options
context:
space:
mode:
authorBryan Cantrill <bryan@joyent.com>2015-05-14 07:40:18 +0000
committerBryan Cantrill <bryan@joyent.com>2015-05-14 07:40:18 +0000
commit94d42d9bc2170e6765e1ce243f5bf0d341bfec90 (patch)
tree2cfac3709e33d04a09b5e2671a5d60d6fc1b3a25 /usr/src/uts/common/dtrace/dtrace.c
parentfc8071a492785c5baed490798f361576b5f502b0 (diff)
downloadillumos-joyent-94d42d9bc2170e6765e1ce243f5bf0d341bfec90.tar.gz
OS-4248 dtrace_dynvar tail calls can blow stack
Diffstat (limited to 'usr/src/uts/common/dtrace/dtrace.c')
-rw-r--r--usr/src/uts/common/dtrace/dtrace.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/usr/src/uts/common/dtrace/dtrace.c b/usr/src/uts/common/dtrace/dtrace.c
index f02cf48a65..8c741a7d06 100644
--- a/usr/src/uts/common/dtrace/dtrace.c
+++ b/usr/src/uts/common/dtrace/dtrace.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2015, Joyent, Inc. All rights reserved.
* Copyright (c) 2012, 2014 by Delphix. All rights reserved.
*/
@@ -2050,7 +2050,7 @@ retry:
* this hash chain, or another CPU is deleting an element from this
* hash chain. The simplest way to deal with both of these cases
* (though not necessarily the most efficient) is to free our
- * allocated block and tail-call ourselves. Note that the free is
+ * allocated block and re-attempt it all. Note that the free is
* to the dirty list and _not_ to the free list. This is to prevent
* races with allocators, above.
*/
@@ -2063,7 +2063,7 @@ retry:
dvar->dtdv_next = free;
} while (dtrace_casptr(&dcpu->dtdsc_dirty, free, dvar) != free);
- return (dtrace_dynvar(dstate, nkeys, key, dsize, op, mstate, vstate));
+ goto top;
}
/*ARGSUSED*/