X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=kernel%2Fvserver%2Fnamespace.c;fp=kernel%2Fvserver%2Fnamespace.c;h=84e58c5ae25ce82e73d1322f04883d2bb37986b1;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=23bf4203d0739ad8e89a4800473136938a6487fd;hpb=cee37fe97739d85991964371c1f3a745c00dd236;p=linux-2.6.git diff --git a/kernel/vserver/namespace.c b/kernel/vserver/namespace.c index 23bf4203d..84e58c5ae 100644 --- a/kernel/vserver/namespace.c +++ b/kernel/vserver/namespace.c @@ -10,7 +10,6 @@ * */ -#include #include #include #include @@ -47,7 +46,7 @@ int vx_set_namespace(struct vx_info *vxi, struct namespace *ns, struct fs_struct return 0; } -int vc_enter_namespace(uint32_t id, void *data) +int vc_enter_namespace(uint32_t id, void __user *data) { struct vx_info *vxi; struct fs_struct *old_fs, *fs; @@ -57,7 +56,7 @@ int vc_enter_namespace(uint32_t id, void *data) if (!vx_check(0, VX_ADMIN)) return -ENOSYS; - vxi = locate_vx_info(id); + vxi = lookup_vx_info(id); if (!vxi) return -ESRCH; @@ -86,13 +85,13 @@ out_put: return ret; } -int vc_cleanup_namespace(uint32_t id, void *data) +int vc_cleanup_namespace(uint32_t id, void __user *data) { - down_write(¤t->namespace->sem); + // down_write(¤t->namespace->sem); spin_lock(&vfsmount_lock); umount_unused(current->namespace->root, current->fs); spin_unlock(&vfsmount_lock); - up_write(¤t->namespace->sem); + // up_write(¤t->namespace->sem); return 0; } @@ -103,11 +102,11 @@ int vc_set_namespace(uint32_t id, void __user *data) struct vx_info *vxi; int ret; - if (vx_check(0, VX_ADMIN|VX_WATCH)) - return -ENOSYS; + vxi = lookup_vx_info(id); + if (!vxi) + return -ESRCH; task_lock(current); - vxi = get_vx_info(current->vx_info); fs = current->fs; atomic_inc(&fs->count); ns = current->namespace;