linux-um archives
 help / color / mirror / Atom feed
From: Jeff Dike <jdike@addtoit.com>
To: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Cc: BlaisorBlade <blaisorblade_spam@yahoo.it>,
	user-mode-linux-devel@lists.sourceforge.net
Subject: [uml-devel] Re: Bad handling of invalif systemcalls
Date: Thu, 21 Oct 2004 18:09:02 -0400	[thread overview]
Message-ID: <200410212209.i9LM92FL005362@ccure.user-mode-linux.org> (raw)
In-Reply-To: Your message of "Thu, 21 Oct 2004 17:25:55 +0200." <4177D503.2030409@fujitsu-siemens.com>

bstroesser@fujitsu-siemens.com said:
> AFAICS, the only solution for this is using the PTRACE_O_TRACESYSGOOD
> option. This option seems to be specific for linux, but the problem
> maybe is specific for linux, too. 

Another solution is to read the instruction.

However TRACESYSGOOD is cleaner.  My only concern is whether that limits the
hosts that UML will run on.  If TRACESYSGOOD has been around for the 2.4
series, then that's OK.

I would be tempted to #define SIGSYSCALL (SIGTRAP + 0x80) or something just
to make the +0x80 bit less magic-looking.

> For the third patch I'm quite anxious, that there could go something
> wrong when using the debugger. I don't understand much about this.
> Maybe someone else could look into this? 

 				if(!tracing && (debugger_pid != -1)){
 					child_signal(pid, status);
 					continue;
 				}
 				tracing = 0;
				if(do_syscall(task, pid))
					sig = SIGUSR2;

OK, what this says is
	if we are running in the kernel, not userspace (!tracing)
	and we are debugging UML (debugger_pid != -1)
	then we fake the syscall-traced gdb into thinking the SIGTRAP was sent
	to the process

	Otherwise we call do_syscall, which will check the syscall number 
	and return true if it thinks it's handling a syscall.  In that case,
	we hit the process with SUGUSR2 in order to force it into the UML
	syscall handler.

So, if we get SIGTRAP + 0x80, we know we have a syscall, and the debugging
stuff can just go away.  You can look at this sort of mathematically, and
say SIGTRAP + 0x80 => tracing, so that if(!tracing...) can just be deleted.

Similarly, do_syscall will always return true, so you don't need to check its
return, which you have removed.

In the SIGTRAP case, you might as well inline do_sigtrap.  One line functions
are pretty much a waste.  In any case, I don't understand why you're doing
that.  orig_eax should already be -1.
	
				Jeff



-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

  parent reply	other threads:[~2004-10-21 20:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-21 15:25 [uml-devel] Bad handling of invalif systemcalls Bodo Stroesser
2004-10-21 17:32 ` BlaisorBlade
2004-10-22  7:33   ` Bodo Stroesser
2004-10-21 22:09 ` Jeff Dike [this message]
2004-10-21 22:32   ` [uml-devel] " BlaisorBlade
2004-10-22  4:14     ` Jeff Dike
2004-10-22  8:14     ` Bodo Stroesser
2004-10-22  8:12   ` Bodo Stroesser
2004-10-22 21:02     ` Jeff Dike
2004-10-25 14:49   ` Bodo Stroesser
2004-10-25 15:21     ` Bodo Stroesser

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=200410212209.i9LM92FL005362@ccure.user-mode-linux.org \
    --to=jdike@addtoit.com \
    --cc=blaisorblade_spam@yahoo.it \
    --cc=bstroesser@fujitsu-siemens.com \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    /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