public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <ak@muc.de>
To: torvalds@osdl.org, linux-kernel@vger.kernel.org,
	davidel@xmailserver.org, mh@codeweavers.com,
	the3dfxdude@gmail.com
Subject: Re: [PATCH] Fix typo in i386 single step changes
Date: 3 Jan 2005 01:01:30 +0100
Date: Mon, 3 Jan 2005 01:01:30 +0100	[thread overview]
Message-ID: <20050103000130.GA74276@muc.de> (raw)
In-Reply-To: <20050102234155.GA29453@nevyn.them.org>

On Sun, Jan 02, 2005 at 06:41:55PM -0500, Daniel Jacobowitz wrote:
> On Mon, Jan 03, 2005 at 12:32:19AM +0100, Andi Kleen wrote:
> > 
> > Fix an obvious typo in the recent i386 single stepping changes.
> > 
> > I would recommend to redo all the Wine etc. testing that lead to this patch
> > since it probably never worked.
> > 
> > Signed-off-by: Andi Kleen <ak@muc.de>
> > 
> > --- linux-2.6.10-bk5/arch/i386/kernel/traps.c-o	Mon Jan  3 01:02:06 2005
> > +++ linux-2.6.10-bk5/arch/i386/kernel/traps.c	Mon Jan  3 01:03:05 2005
> > @@ -725,7 +725,7 @@
> >  		if (tsk->ptrace & PT_DTRACE) {
> >  			regs->eflags &= ~TF_MASK;
> >  			tsk->ptrace &= ~PT_DTRACE;
> > -			if (!tsk->ptrace & PT_DTRACE)
> > +			if (!(tsk->ptrace & PT_DTRACE))
> >  				goto clear_TF;
> >  		}
> >  	}
> 
> That test is still wrong... the bit is cleared on the previous line. 
> Is it supposed to be testing something else entirely?

Davide also pointed out that the typo was already in the old code.
The goto was never executed because neither 0 nor 1 gave true 
when anded with 2 (PT_DTRACE)

And we need to deliver the signal anyways, otherwise the debugger
cannot see it. The early return is definitely wrong.

Also looking at the code more closely the comment above doesn't 
match what the code does. I fixed that too.

So a better patch is probably:

Fix logic that worked only by accident in ptrace path. 

Fix wrong comment.

Signed-off-by: Andi Kleen <ak@muc.de>


--- linux-2.6.10-bk5/arch/i386/kernel/traps.c-o	Mon Jan  3 01:02:06 2005
+++ linux-2.6.10-bk5/arch/i386/kernel/traps.c	Mon Jan  3 01:41:17 2005
@@ -706,27 +706,23 @@
 
 	/* Mask out spurious TF errors due to lazy TF clearing */
 	if (condition & DR_STEP) {
-		/*
-		 * The TF error should be masked out only if the current
-		 * process is not traced and if the TRAP flag has been set
-		 * previously by a tracing process (condition detected by
-		 * the PT_DTRACE flag); remember that the i386 TRAP flag
-		 * can be modified by the process itself in user mode,
-		 * allowing programs to debug themselves without the ptrace()
-		 * interface.
+		/* 
+		 * Ignore steps comming from kernel space.
+		 * Apparently they can happen due to lazy TF clearing
+		 * (where exactly? -AK) 
 		 */
 		if ((regs->xcs & 3) == 0)
 			goto clear_TF_reenable;
 
 		/*
 		 * Was the TF flag set by a debugger? If so, clear it now,
-		 * so that register information is correct.
+		 * so that register information is correct and then
+		 * deliver it as signal so that the debugger sees the 
+		 * step.
 		 */
 		if (tsk->ptrace & PT_DTRACE) {
 			regs->eflags &= ~TF_MASK;
 			tsk->ptrace &= ~PT_DTRACE;
-			if (!tsk->ptrace & PT_DTRACE)
-				goto clear_TF;
 		}
 	}
 
@@ -748,7 +744,6 @@
 
 clear_TF_reenable:
 	set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
-clear_TF:
 	regs->eflags &= ~TF_MASK;
 	return;
 }


  reply	other threads:[~2005-01-03  0:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-02 23:32 [PATCH] Fix typo in i386 single step changes Andi Kleen
2005-01-02 23:41 ` Daniel Jacobowitz
2005-01-03  0:01   ` Andi Kleen [this message]
2005-01-03  1:41     ` Linus Torvalds
2005-01-03  1:11   ` Linus Torvalds
2005-01-03  3:30 ` Jesse Allen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050103000130.GA74276@muc.de \
    --to=ak@muc.de \
    --cc=davidel@xmailserver.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mh@codeweavers.com \
    --cc=the3dfxdude@gmail.com \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox