diff -NurpP --minimal linux-2.4.21-vs1.21/Makefile linux-2.4.21-vs1.22/Makefile --- linux-2.4.21-vs1.21/Makefile Thu Dec 11 00:38:46 2003 +++ linux-2.4.21-vs1.22/Makefile Sat Dec 13 18:24:54 2003 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 21 -EXTRAVERSION = -vs1.21 +EXTRAVERSION = -vs1.22 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -NurpP --minimal linux-2.4.21-vs1.21/kernel/vcontext.c linux-2.4.21-vs1.22/kernel/vcontext.c --- linux-2.4.21-vs1.21/kernel/vcontext.c Thu Dec 11 00:38:51 2003 +++ linux-2.4.21-vs1.22/kernel/vcontext.c Sat Dec 13 18:24:55 2003 @@ -152,15 +152,17 @@ static void vx_alloc_info(void) } } +static spinlock_t ctx_ref_lock = SPIN_LOCK_UNLOCKED; + /* * Increase the reference count on the context_info member of a task */ void vx_assign_info (struct task_struct *p) { - down_write (&uts_sem); + spin_lock (&ctx_ref_lock); if (p->s_info) atomic_inc(&p->s_info->refcount); - up_write (&uts_sem); + spin_unlock (&ctx_ref_lock); } /* @@ -169,14 +171,14 @@ void vx_assign_info (struct task_struct */ void vx_release_info (struct task_struct *p) { - down_write (&uts_sem); + spin_lock (&ctx_ref_lock); if (p->s_info) { if (atomic_dec_and_test(&p->s_info->refcount)) { kfree(p->s_info); p->s_info = NULL; } } - up_write (&uts_sem); + spin_unlock (&ctx_ref_lock); } /*