diff options
Diffstat (limited to 'vserver-sources/2.1.1-r1/4412_vs2.1.1-private-fix01.patch')
-rw-r--r-- | vserver-sources/2.1.1-r1/4412_vs2.1.1-private-fix01.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/vserver-sources/2.1.1-r1/4412_vs2.1.1-private-fix01.patch b/vserver-sources/2.1.1-r1/4412_vs2.1.1-private-fix01.patch new file mode 100644 index 0000000..2ce9262 --- /dev/null +++ b/vserver-sources/2.1.1-r1/4412_vs2.1.1-private-fix01.patch @@ -0,0 +1,81 @@ +Index: linux-2.6.18/include/linux/vserver/network.h +=================================================================== +--- linux-2.6.18.orig/include/linux/vserver/network.h ++++ linux-2.6.18/include/linux/vserver/network.h +@@ -14,6 +14,7 @@ + /* network flags */ + + #define NXF_INFO_LOCK 0x00000001 ++#define NXF_INFO_PRIVATE 0x00000008 + + #define NXF_STATE_SETUP (1ULL<<32) + #define NXF_STATE_ADMIN (1ULL<<34) +Index: linux-2.6.18/kernel/vserver/context.c +=================================================================== +--- linux-2.6.18.orig/kernel/vserver/context.c ++++ linux-2.6.18/kernel/vserver/context.c +@@ -585,7 +585,7 @@ int vx_migrate_user(struct task_struct * + if (!p || !vxi) + BUG(); + +- if (vx_info_flags(vxi, VXF_INFO_LOCK, 0)) ++ if (vx_info_flags(vxi, VXF_INFO_PRIVATE, 0)) + return -EACCES; + + new_user = alloc_uid(vxi->vx_id, p->uid); +@@ -650,13 +650,17 @@ int vx_migrate_task(struct task_struct * + "vx_migrate_task(%p,%p[#%d.%d])", p, vxi, + vxi->vx_id, atomic_read(&vxi->vx_usecnt)); + +- if (vx_info_flags(vxi, VXF_INFO_LOCK, 0)) ++ if (vx_info_flags(vxi, VXF_INFO_PRIVATE, 0)) + return -EACCES; + + old_vxi = task_get_vx_info(p); + if (old_vxi == vxi) + goto out; + ++ ret =-EACCES; ++ if (vx_info_flags(old_vxi, VXF_INFO_LOCK, 0)) ++ goto out; ++ + if (!(ret = vx_migrate_user(p, vxi))) { + int openfd; + +Index: linux-2.6.18/kernel/vserver/namespace.c +=================================================================== +--- linux-2.6.18.orig/kernel/vserver/namespace.c ++++ linux-2.6.18/kernel/vserver/namespace.c +@@ -33,7 +33,7 @@ int vx_enter_namespace(struct vx_info *v + struct fs_struct *old_fs, *fs; + struct namespace *old_ns; + +- if (vx_info_flags(vxi, VXF_INFO_LOCK, 0)) ++ if (vx_info_flags(vxi, VXF_INFO_PRIVATE, 0)) + return -EACCES; + if (!vxi->vx_namespace) + return -EINVAL; +Index: linux-2.6.18/kernel/vserver/network.c +=================================================================== +--- linux-2.6.18.orig/kernel/vserver/network.c ++++ linux-2.6.18/kernel/vserver/network.c +@@ -387,7 +387,7 @@ int nx_migrate_task(struct task_struct * + atomic_read(&nxi->nx_usecnt), + atomic_read(&nxi->nx_tasks)); + +- if (nx_info_flags(nxi, NXF_INFO_LOCK, 0)) ++ if (nx_info_flags(nxi, NXF_INFO_PRIVATE, 0)) + return -EACCES; + + /* maybe disallow this completely? */ +@@ -395,6 +395,10 @@ int nx_migrate_task(struct task_struct * + if (old_nxi == nxi) + goto out; + ++ ret =-EACCES; ++ if (nx_info_flags(old_nxi, NXF_INFO_LOCK, 0)) ++ goto out; ++ + task_lock(p); + if (old_nxi) + clr_nx_info(&p->nx_info); |