public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [BUG] in copy_siginfo_to_user32 on ppc64 (and others?) in 2.6.9/2.6.10
@ 2005-02-09 20:05 Chris Friesen
  0 siblings, 0 replies; only message in thread
From: Chris Friesen @ 2005-02-09 20:05 UTC (permalink / raw)
  To: linux-kernel, linuxppc64-dev

I found a bug which has since been fixed, but I'm hoping to save others 
the problems that I had tracking it down.

It was fairly confusing--the information in the siginfo_t struct was 
different based on whether I used a signal handler in the regular way, 
or blocked the signal and retrieved the information using sigtimedwait().

After much instrumentation of the kernel, I tracked it down.

Until recently (Jan 5), ppc64 had its own version of 
compat_sys_rt_sigtimedwait, which simply called sys_rt_sigtimedwait() 
then copied the results to the userspace struct using 
copy_siginfo_to_user32().

Unfortunately, sys_rt_sigtimedwait() only copies the lower 16 bits of 
si_code, and the ppc64 version of copy_siginfo_to_user32() keyed on the 
upper 16 bits to decide what information to copy.  Thus, it always ended 
up in the default case of the switch statement, and only ever copied 
si_pid and si_uid.

Oops.

Chris


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-02-09 20:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-09 20:05 [BUG] in copy_siginfo_to_user32 on ppc64 (and others?) in 2.6.9/2.6.10 Chris Friesen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox