if (test_thread_flag(TIF_SYSCALL_TRACE)) 
if (test_thread_flag(TIF_SYSCALL_TRACE) || test_thread_flag(TIF_SYSCALL_AUDIT)) 
ia64_rt_sigreturn (struct sigscratch *scr){	extern char ia64_strace_leave_kernel, ia64_leave_kernel;	struct sigcontext __user *sc;	struct siginfo si;	sigset_t set;	long retval;	sc = &((struct sigframe __user *) (scr->pt.r12 + 16))->sc;	/*	 * When we return to the previously executing context, r8 and r10 have already	 * been setup the way we want them.  Indeed, if the signal wasn't delivered while	 * in a system call, we must not touch r8 or r10 as otherwise user-level state	 * could be corrupted.	 */	retval = (long) &ia64_leave_kernel;	if (test_thread_flag(TIF_SYSCALL_TRACE))		/*		 * strace expects to be notified after sigreturn returns even though the		 * context to which we return may not be in the middle of a syscall.		 * Thus, the return-value that strace displays for sigreturn is		 * meaningless.		 */		retval = (long) &ia64_strace_leave_kernel;	if (!access_ok(VERIFY_READ, sc, sizeof(*sc)))		goto give_sigsegv;	if (GET_SIGSET(&set, &sc->sc_mask))		goto give_sigsegv;	sigdelsetmask(&set, ~_BLOCKABLE);	spin_lock_irq(&current->sighand->siglock);	{		current->blocked = set;		recalc_sigpending();	}	spin_unlock_irq(&current->sighand->siglock);	if (restore_sigcontext(sc, scr))		goto give_sigsegv;#if DEBUG_SIG	printk("SIG return (%s:%d): sp=%lx ip=%lx\n",	       current->comm, current->pid, scr->pt.r12, scr->pt.cr_iip);#endif	/*	 * It is more difficult to avoid calling this function than to	 * call it and ignore errors.	 */	do_sigaltstack(&sc->sc_stack, NULL, scr->pt.r12);	return retval;  give_sigsegv:	si.si_signo = SIGSEGV;	si.si_errno = 0;	si.si_code = SI_KERNEL;	si.si_pid = current->pid;	si.si_uid = current->uid;	si.si_addr = sc;	force_sig_info(SIGSEGV, &si, current);	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3ac3ed555bec5b1f92bb22cb94823a0e99d0f320/signal.c/buggy/arch/ia64/kernel/signal.c