linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 32-on-64 (x86-64) siginfo corruption
@ 2006-04-06  3:20 Albert Cahalan
  2006-04-06  4:41 ` David S. Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Albert Cahalan @ 2006-04-06  3:20 UTC (permalink / raw)
  To: ak, ak, linux-kernel

The situation:  32-bit debugger, 32-bit child, 64-bit kernel

The debugger sends an RT signal to the child. (to stop it, with
a queue and siginfo so that non-debugger signals don't get lost)
To do this, the debugger uses tgkill().

Later, the debugger checks the child's siginfo_t before discarding
it. This is to be sure that the child didn't get the RT signal from
some other source. The debugger fills a siginfo_t with 0xff, then
fetches siginfo data via ptrace. The data is corrupt:

FIELD     32-ON-64   NORMAL
si_pid      -1       getpid()
si_uid    getpid()   getuid()

The "getpid" and "getuid" above are done in the debugger, not in
the child. The si_code values are SI_TKILL.

Probably the other ports with 32-on-64 support ought to verify
that this stuff works right.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: 32-on-64 (x86-64) siginfo corruption
  2006-04-06  3:20 32-on-64 (x86-64) siginfo corruption Albert Cahalan
@ 2006-04-06  4:41 ` David S. Miller
  0 siblings, 0 replies; 2+ messages in thread
From: David S. Miller @ 2006-04-06  4:41 UTC (permalink / raw)
  To: acahalan; +Cc: ak, ak, linux-kernel, linux-arch

From: "Albert Cahalan" <acahalan@gmail.com>
Date: Wed, 5 Apr 2006 23:20:07 -0400

> The situation:  32-bit debugger, 32-bit child, 64-bit kernel
> 
> The debugger sends an RT signal to the child. (to stop it, with
> a queue and siginfo so that non-debugger signals don't get lost)
> To do this, the debugger uses tgkill().
> 
> Later, the debugger checks the child's siginfo_t before discarding
> it. This is to be sure that the child didn't get the RT signal from
> some other source. The debugger fills a siginfo_t with 0xff, then
> fetches siginfo data via ptrace. The data is corrupt:
> 
> FIELD     32-ON-64   NORMAL
> si_pid      -1       getpid()
> si_uid    getpid()   getuid()
> 
> The "getpid" and "getuid" above are done in the debugger, not in
> the child. The si_code values are SI_TKILL.
> 
> Probably the other ports with 32-on-64 support ought to verify
> that this stuff works right.

Ugh, just like PTRACE_GETEVENTMSG we'll need translations for
GETSIGINFO and SETSIGINFO.

I've CC'd linux-arch which is where the port maintainers hang
out and look for postings about issues like this.  I mentioned
the PTRACE_GETEVENTMSG issue there just the other day.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-04-06  4:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-06  3:20 32-on-64 (x86-64) siginfo corruption Albert Cahalan
2006-04-06  4:41 ` David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).