diff -u linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/context.c linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/context.c --- linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/context.c 2011-05-01 17:01:51.000000000 -0500 +++ linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/context.c 2011-05-02 05:20:12.000000000 -0500 @@ -127,7 +127,7 @@ // filesystem spin_lock(&init_fs.lock); - init_fs.users++; + atomic_inc(&init_fs.users); spin_unlock(&init_fs.lock); space->vx_fs = &init_fs; @@ -210,7 +210,7 @@ fs = xchg(&space->vx_fs, NULL); spin_lock(&fs->lock); - kill = !--fs->users; + kill = atomic_dec_and_test(&fs->users); spin_unlock(&fs->lock); if (kill) free_fs_struct(fs); diff -u linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/space.c linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/space.c --- linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/space.c 2011-05-01 17:01:51.000000000 -0500 +++ linux-2.6.38.4-vs2.3.0.37-rc15-grsec-2.2.2-201104232142/kernel/vserver/space.c 2011-05-02 05:26:38.000000000 -0500 @@ -228,7 +228,7 @@ if (mask & CLONE_FS) { spin_lock(&fs_cur->lock); current->fs = fs; - kill = !--fs_cur->users; + kill = atomic_dec_and_test(&fs_cur->users); spin_unlock(&fs_cur->lock); } @@ -305,7 +305,7 @@ if (mask & CLONE_FS) { spin_lock(&fs_vxi->lock); space->vx_fs = fs; - kill = !--fs_vxi->users; + kill = atomic_dec_and_test(&fs_vxi->users); spin_unlock(&fs_vxi->lock); }