--- linux-2.6.16-rc1/kernel/posix-timers.c 2006-01-26 22:35:32 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/posix-timers.c 2006-01-21 18:28:17 +0100 @@ -295,6 +297,10 @@ 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.*/ --- linux-2.6.16-rc1/kernel/posix-timers.c 2006-01-26 22:35:32 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/posix-timers.c 2006-01-21 18:28:17 +0100 @@ -307,11 +313,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)) - return ret; + goto out; timr->it_sigev_notify = SIGEV_SIGNAL; leader = timr->it_process->group_leader; --- linux-2.6.16-rc1/kernel/posix-timers.c 2006-01-26 22:35:32 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/posix-timers.c 2006-01-21 18:28:17 +0100 @@ -319,8 +325,12 @@ int posix_timer_event(struct k_itimer *t timr->it_process = leader; } - return send_group_sigqueue(timr->it_sigev_signo, timr->sigq, - timr->it_process); + ret = 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); --- linux-2.6.16-rc1/kernel/softirq.c 2006-01-03 17:30:12 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/softirq.c 2006-01-21 18:28:17 +0100 @@ -73,6 +74,7 @@ static inline void wakeup_softirqd(void) asmlinkage void __do_softirq(void) { + struct vx_info_save vxis; struct softirq_action *h; __u32 pending; int max_restart = MAX_SOFTIRQ_RESTART; --- linux-2.6.16-rc1/kernel/softirq.c 2006-01-03 17:30:12 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/softirq.c 2006-01-21 18:28:17 +0100 @@ -81,6 +83,7 @@ asmlinkage void __do_softirq(void) pending = local_softirq_pending(); local_bh_disable(); + __enter_vx_admin(&vxis); cpu = smp_processor_id(); restart: /* Reset the pending bitmask before enabling irqs */ --- linux-2.6.16-rc1/kernel/softirq.c 2006-01-03 17:30:12 +0100 +++ linux-2.6.16-rc1-vs2.1.0.9.4/kernel/softirq.c 2006-01-21 18:28:17 +0100 @@ -108,6 +111,7 @@ restart: if (pending) wakeup_softirqd(); + __leave_vx_admin(&vxis); __local_bh_enable(); }