public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] - Missing check for TIF_WORK if trace/audit enabled
@ 2006-02-15 21:29 Jack Steiner
  2006-02-16  1:03 ` Chen, Kenneth W
  2006-02-16  1:46 ` Jack Steiner
  0 siblings, 2 replies; 3+ messages in thread
From: Jack Steiner @ 2006-02-15 21:29 UTC (permalink / raw)
  To: linux-ia64


It appears that if trace/audit is enabled, the kernel fails to
check for pending work before returning to user mode. 

	Signed-off-by: Jack Steiner <steiner@sgi.com>


---

Tony / Ken - check this carefully. This is not easy code to understand :-)

I noticed the problem running a signal test that sent SIGUSR2 signals to 
itself. Signals were being dropped. I isolated the problem to an uninitialzed
p6:
	
	ia64_trace_syscall -> work_pending_syscall_end -> work_processed_syscall

work_processed_syscall assumes p6 indicates if the kernel is returning to user mode.
Nothing set p6 for this particular path.



Index: linux/arch/ia64/kernel/entry.S
=================================--- linux.orig/arch/ia64/kernel/entry.S	2006-02-15 12:32:49.836316366 -0600
+++ linux/arch/ia64/kernel/entry.S	2006-02-15 15:09:49.983620290 -0600
@@ -569,6 +569,7 @@ GLOBAL_ENTRY(ia64_trace_syscall)
 .mem.offset 0,0; st8.spill [r2]=r8		// store return value in slot for r8
 .mem.offset 8,0; st8.spill [r3]=r10		// clear error indication in slot for r10
 	br.call.sptk.many rp=syscall_trace_leave // give parent a chance to catch return value
+(pUStk)	cmp.eq.unc p6,p0=r0,r0			// p6 <- pUStk
 .ret3:	br.cond.sptk .work_pending_syscall_end
 
 strace_error:

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

end of thread, other threads:[~2006-02-16  1:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-15 21:29 [PATCH] - Missing check for TIF_WORK if trace/audit enabled Jack Steiner
2006-02-16  1:03 ` Chen, Kenneth W
2006-02-16  1:46 ` Jack Steiner

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