svn commit: r236567 - in head/sys/cddl/dev/dtrace: amd64 i386
Pedro Giffuni
pfg at FreeBSD.org
Mon Jun 4 16:25:48 UTC 2012
On 06/04/12 11:15, George V. Neville-Neil wrote:
> Author: gnn
> Date: Mon Jun 4 16:15:40 2012
> New Revision: 236567
> URL: http://svn.freebsd.org/changeset/base/236567
>
> Log:
> Integrate a fix for a very odd signal delivery problem found
> by Bryan Cantril and others in the Solaris/Illumos version of DTrace.
>
> Obtained from: https://www.illumos.org/issues/789
> MFC after: 2 weeks
And it looks like kern/164724 :)
cheers,
Pedro.
> Modified:
> head/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
> head/sys/cddl/dev/dtrace/i386/dtrace_subr.c
>
> Modified: head/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
> ==============================================================================
> --- head/sys/cddl/dev/dtrace/amd64/dtrace_subr.c Mon Jun 4 16:04:01 2012 (r236566)
> +++ head/sys/cddl/dev/dtrace/amd64/dtrace_subr.c Mon Jun 4 16:15:40 2012 (r236567)
> @@ -27,6 +27,10 @@
> * Use is subject to license terms.
> */
>
> +/*
> + * Copyright (c) 2011, Joyent, Inc. All rights reserved.
> + */
> +
> #include<sys/param.h>
> #include<sys/systm.h>
> #include<sys/types.h>
> @@ -297,14 +301,15 @@ dtrace_safe_defer_signal(void)
> }
>
> /*
> - * If we've executed the original instruction, but haven't performed
> - * the jmp back to t->t_dtrace_npc or the clean up of any registers
> - * used to emulate %rip-relative instructions in 64-bit mode, do that
> - * here and take the signal right away. We detect this condition by
> - * seeing if the program counter is the range [scrpc + isz, astpc).
> + * If we have executed the original instruction, but we have performed
> + * neither the jmp back to t->t_dtrace_npc nor the clean up of any
> + * registers used to emulate %rip-relative instructions in 64-bit mode,
> + * we'll save ourselves some effort by doing that here and taking the
> + * signal right away. We detect this condition by seeing if the program
> + * counter is the range [scrpc + isz, astpc).
> */
> - if (t->t_dtrace_astpc - rp->r_pc<
> - t->t_dtrace_astpc - t->t_dtrace_scrpc - isz) {
> + if (rp->r_pc>= t->t_dtrace_scrpc + isz&&
> + rp->r_pc< t->t_dtrace_astpc) {
> #ifdef __amd64
> /*
> * If there is a scratch register and we're on the
>
> Modified: head/sys/cddl/dev/dtrace/i386/dtrace_subr.c
> ==============================================================================
> --- head/sys/cddl/dev/dtrace/i386/dtrace_subr.c Mon Jun 4 16:04:01 2012 (r236566)
> +++ head/sys/cddl/dev/dtrace/i386/dtrace_subr.c Mon Jun 4 16:15:40 2012 (r236567)
> @@ -27,6 +27,10 @@
> * Use is subject to license terms.
> */
>
> +/*
> + * Copyright (c) 2011, Joyent, Inc. All rights reserved.
> + */
> +
> #include<sys/param.h>
> #include<sys/systm.h>
> #include<sys/types.h>
> @@ -298,14 +302,15 @@ dtrace_safe_defer_signal(void)
> }
>
> /*
> - * If we've executed the original instruction, but haven't performed
> - * the jmp back to t->t_dtrace_npc or the clean up of any registers
> - * used to emulate %rip-relative instructions in 64-bit mode, do that
> - * here and take the signal right away. We detect this condition by
> - * seeing if the program counter is the range [scrpc + isz, astpc).
> + * If we have executed the original instruction, but we have performed
> + * neither the jmp back to t->t_dtrace_npc nor the clean up of any
> + * registers used to emulate %rip-relative instructions in 64-bit mode,
> + * we'll save ourselves some effort by doing that here and taking the
> + * signal right away. We detect this condition by seeing if the program
> + * counter is the range [scrpc + isz, astpc).
> */
> - if (t->t_dtrace_astpc - rp->r_pc<
> - t->t_dtrace_astpc - t->t_dtrace_scrpc - isz) {
> + if (rp->r_pc>= t->t_dtrace_scrpc + isz&&
> + rp->r_pc< t->t_dtrace_astpc) {
> #ifdef __amd64
> /*
> * If there is a scratch register and we're on the
More information about the svn-src-all
mailing list