Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Sep 2015 03:04:25 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r287641 - head/sys/cddl/contrib/opensolaris/uts/common/dtrace
Message-ID:  <201509110304.t8B34PV4060794@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Fri Sep 11 03:04:24 2015
New Revision: 287641
URL: https://svnweb.freebsd.org/changeset/base/287641

Log:
  MFV r283512:
  3599 dtrace_dynvar tail calls can blow stack
  Reviewed by: Adam Leventhal <ahl@delphix.com>
  Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
  Approved by: Richard Lowe <richlowe@richlowe.net>
  Author: Bryan Cantrill <bryan@joyent.com>
  
  illumos/illumos-gate@d47448f09aae3aa1a87fc450a0c44638e7ce7b51

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
Directory Properties:
  head/sys/cddl/contrib/opensolaris/   (props changed)

Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Fri Sep 11 03:00:20 2015	(r287640)
+++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Fri Sep 11 03:04:24 2015	(r287641)
@@ -23,7 +23,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.
  */
 
@@ -2146,7 +2146,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.
 	 */
@@ -2159,7 +2159,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*/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509110304.t8B34PV4060794>