diff -NurpP linux-2.6.17.11-vs2.1.1-rc31.2/kernel/posix-timers.c linux-2.6.17.11-vs2.1.1-rc31.2r/kernel/posix-timers.c --- linux-2.6.17.11-vs2.1.1-rc31.2/kernel/posix-timers.c 2006-08-17 01:24:55 +0200 +++ linux-2.6.17.11-vs2.1.1-rc31.2r/kernel/posix-timers.c 2006-08-30 19:02:32 +0200 @@ -300,10 +300,6 @@ void do_schedule_next_timer(struct sigin int posix_timer_event(struct k_itimer *timr,int si_private) { - struct vx_info_save vxis; - int ret; - - enter_vx_info(task_get_vx_info(timr->it_process), &vxis); memset(&timr->sigq->info, 0, sizeof(siginfo_t)); timr->sigq->info.si_sys_private = si_private; /* Send signal to the process that owns this timer.*/ @@ -316,11 +312,11 @@ int posix_timer_event(struct k_itimer *t if (timr->it_sigev_notify & SIGEV_THREAD_ID) { struct task_struct *leader; + int ret = send_sigqueue(timr->it_sigev_signo, timr->sigq, + timr->it_process); - ret = send_sigqueue(timr->it_sigev_signo, timr->sigq, - timr->it_process); if (likely(ret >= 0)) - goto out; + return ret; timr->it_sigev_notify = SIGEV_SIGNAL; leader = timr->it_process->group_leader; @@ -328,12 +324,8 @@ int posix_timer_event(struct k_itimer *t timr->it_process = leader; } - ret = send_group_sigqueue(timr->it_sigev_signo, timr->sigq, + return send_group_sigqueue(timr->it_sigev_signo, timr->sigq, timr->it_process); -out: - leave_vx_info(&vxis); - put_vx_info(vxis.vxi); - return ret; } EXPORT_SYMBOL_GPL(posix_timer_event);