--- linux-2.6.14/arch/i386/kernel/sys_i386.c 2004-08-14 12:56:23 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/i386/kernel/sys_i386.c 2005-10-29 03:20:33 +0200 @@ -217,7 +218,7 @@ asmlinkage int sys_uname(struct old_utsn if (!name) return -EFAULT; down_read(&uts_sem); - err=copy_to_user(name, &system_utsname, sizeof (*name)); + err=copy_to_user(name, vx_new_utsname(), sizeof (*name)); up_read(&uts_sem); return err?-EFAULT:0; } --- linux-2.6.14/arch/i386/kernel/sys_i386.c 2004-08-14 12:56:23 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/i386/kernel/sys_i386.c 2005-10-29 03:20:33 +0200 @@ -225,6 +226,7 @@ asmlinkage int sys_uname(struct old_utsn asmlinkage int sys_olduname(struct oldold_utsname __user * name) { int error; + struct new_utsname *ptr; if (!name) return -EFAULT; --- linux-2.6.14/arch/i386/kernel/sys_i386.c 2004-08-14 12:56:23 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/i386/kernel/sys_i386.c 2005-10-29 03:20:33 +0200 @@ -233,15 +235,16 @@ asmlinkage int sys_olduname(struct oldol down_read(&uts_sem); - error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname,__OLD_UTS_LEN); error |= __put_user(0,name->sysname+__OLD_UTS_LEN); - error |= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); + error |= __copy_to_user(&name->nodename,ptr->nodename,__OLD_UTS_LEN); error |= __put_user(0,name->nodename+__OLD_UTS_LEN); - error |= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); + error |= __copy_to_user(&name->release,ptr->release,__OLD_UTS_LEN); error |= __put_user(0,name->release+__OLD_UTS_LEN); - error |= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); + error |= __copy_to_user(&name->version,ptr->version,__OLD_UTS_LEN); error |= __put_user(0,name->version+__OLD_UTS_LEN); - error |= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); + error |= __copy_to_user(&name->machine,ptr->machine,__OLD_UTS_LEN); error |= __put_user(0,name->machine+__OLD_UTS_LEN); up_read(&uts_sem); --- linux-2.6.14/arch/mips/kernel/linux32.c 2005-10-28 20:49:12 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/mips/kernel/linux32.c 2005-10-29 03:19:02 +0200 @@ -1199,7 +1199,7 @@ asmlinkage long sys32_newuname(struct ne int ret = 0; down_read(&uts_sem); - if (copy_to_user(name,&system_utsname,sizeof *name)) + if (copy_to_user(name, vx_new_utsname(), sizeof *name)) ret = -EFAULT; up_read(&uts_sem); --- linux-2.6.14/arch/mips/kernel/syscall.c 2005-10-28 20:49:12 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/mips/kernel/syscall.c 2005-10-29 03:20:33 +0200 @@ -210,7 +211,7 @@ out: */ asmlinkage int sys_uname(struct old_utsname * name) { - if (name && !copy_to_user(name, &system_utsname, sizeof (*name))) + if (name && !copy_to_user(name, vx_new_utsname(), sizeof (*name))) return 0; return -EFAULT; } --- linux-2.6.14/arch/mips/kernel/syscall.c 2005-10-28 20:49:12 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/mips/kernel/syscall.c 2005-10-29 03:20:33 +0200 @@ -221,21 +222,23 @@ asmlinkage int sys_uname(struct old_utsn asmlinkage int sys_olduname(struct oldold_utsname * name) { int error; + struct new_utsname *ptr; if (!name) return -EFAULT; if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname))) return -EFAULT; - error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname,__OLD_UTS_LEN); error -= __put_user(0,name->sysname+__OLD_UTS_LEN); - error -= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); + error -= __copy_to_user(&name->nodename,ptr->nodename,__OLD_UTS_LEN); error -= __put_user(0,name->nodename+__OLD_UTS_LEN); - error -= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); + error -= __copy_to_user(&name->release,ptr->release,__OLD_UTS_LEN); error -= __put_user(0,name->release+__OLD_UTS_LEN); - error -= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); + error -= __copy_to_user(&name->version,ptr->version,__OLD_UTS_LEN); error -= __put_user(0,name->version+__OLD_UTS_LEN); - error -= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); + error -= __copy_to_user(&name->machine,ptr->machine,__OLD_UTS_LEN); error = __put_user(0,name->machine+__OLD_UTS_LEN); error = error ? -EFAULT : 0; --- linux-2.6.14/arch/mips/kernel/syscall.c 2005-10-28 20:49:12 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/mips/kernel/syscall.c 2005-10-29 03:20:33 +0200 @@ -261,10 +264,10 @@ asmlinkage int _sys_sysmips(int cmd, lon return -EFAULT; down_write(&uts_sem); - strncpy(system_utsname.nodename, nodename, len); + strncpy(vx_new_uts(nodename), nodename, len); nodename[__NEW_UTS_LEN] = '\0'; - strlcpy(system_utsname.nodename, nodename, - sizeof(system_utsname.nodename)); + strlcpy(vx_new_uts(nodename), nodename, + sizeof(vx_new_uts(nodename))); up_write(&uts_sem); return 0; } --- linux-2.6.14/arch/ppc/kernel/syscalls.c 2005-10-28 20:49:14 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/ppc/kernel/syscalls.c 2005-10-29 03:20:33 +0200 @@ -225,7 +226,7 @@ int sys_uname(struct old_utsname __user int err = -EFAULT; down_read(&uts_sem); - if (name && !copy_to_user(name, &system_utsname, sizeof (*name))) + if (name && !copy_to_user(name, vx_new_utsname(), sizeof (*name))) err = 0; up_read(&uts_sem); return err; --- linux-2.6.14/arch/ppc/kernel/syscalls.c 2005-10-28 20:49:14 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/ppc/kernel/syscalls.c 2005-10-29 03:20:33 +0200 @@ -234,6 +235,7 @@ int sys_uname(struct old_utsname __user int sys_olduname(struct oldold_utsname __user * name) { int error; + struct new_utsname *ptr; if (!name) return -EFAULT; --- linux-2.6.14/arch/ppc/kernel/syscalls.c 2005-10-28 20:49:14 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/ppc/kernel/syscalls.c 2005-10-29 03:20:33 +0200 @@ -241,15 +243,16 @@ int sys_olduname(struct oldold_utsname _ return -EFAULT; down_read(&uts_sem); - error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname,__OLD_UTS_LEN); error -= __put_user(0,name->sysname+__OLD_UTS_LEN); - error -= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); + error -= __copy_to_user(&name->nodename,ptr->nodename,__OLD_UTS_LEN); error -= __put_user(0,name->nodename+__OLD_UTS_LEN); - error -= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); + error -= __copy_to_user(&name->release,ptr->release,__OLD_UTS_LEN); error -= __put_user(0,name->release+__OLD_UTS_LEN); - error -= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); + error -= __copy_to_user(&name->version,ptr->version,__OLD_UTS_LEN); error -= __put_user(0,name->version+__OLD_UTS_LEN); - error -= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); + error -= __copy_to_user(&name->machine,ptr->machine,__OLD_UTS_LEN); error = __put_user(0,name->machine+__OLD_UTS_LEN); up_read(&uts_sem); --- linux-2.6.14/arch/ppc64/kernel/sys_ppc32.c 2005-10-28 20:49:15 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/ppc64/kernel/sys_ppc32.c 2005-10-29 03:19:02 +0200 @@ -1037,7 +1037,7 @@ asmlinkage int sys32_uname(struct old_ut int err = 0; down_read(&uts_sem); - if (copy_to_user(name, &system_utsname, sizeof(*name))) + if (copy_to_user(name, vx_new_utsname(), sizeof(*name))) err = -EFAULT; up_read(&uts_sem); if (!err && personality(current->personality) == PER_LINUX32) { --- linux-2.6.14/arch/ppc64/kernel/sys_ppc32.c 2005-10-28 20:49:15 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/ppc64/kernel/sys_ppc32.c 2005-10-29 03:19:02 +0200 @@ -1052,20 +1052,22 @@ asmlinkage int sys32_uname(struct old_ut asmlinkage int sys32_olduname(struct oldold_utsname __user * name) { int error; + struct new_utsname *ptr; if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname))) return -EFAULT; down_read(&uts_sem); - error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname,__OLD_UTS_LEN); error |= __put_user(0,name->sysname+__OLD_UTS_LEN); - error |= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); + error |= __copy_to_user(&name->nodename,ptr->nodename,__OLD_UTS_LEN); error |= __put_user(0,name->nodename+__OLD_UTS_LEN); - error |= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); + error |= __copy_to_user(&name->release,ptr->release,__OLD_UTS_LEN); error |= __put_user(0,name->release+__OLD_UTS_LEN); - error |= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); + error |= __copy_to_user(&name->version,ptr->version,__OLD_UTS_LEN); error |= __put_user(0,name->version+__OLD_UTS_LEN); - error |= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); + error |= __copy_to_user(&name->machine,ptr->machine,__OLD_UTS_LEN); error |= __put_user(0,name->machine+__OLD_UTS_LEN); if (personality(current->personality) == PER_LINUX32) { /* change "ppc64" to "ppc" */ --- linux-2.6.14/arch/sparc/kernel/sys_sparc.c 2005-06-22 02:37:59 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/sparc/kernel/sys_sparc.c 2005-10-29 03:20:33 +0200 @@ -470,13 +471,13 @@ asmlinkage int sys_getdomainname(char __ down_read(&uts_sem); - nlen = strlen(system_utsname.domainname) + 1; + nlen = strlen(vx_new_uts(domainname)) + 1; if (nlen < len) len = nlen; if (len > __NEW_UTS_LEN) goto done; - if (copy_to_user(name, system_utsname.domainname, len)) + if (copy_to_user(name, vx_new_uts(domainname), len)) goto done; err = 0; done: --- linux-2.6.14/arch/sparc64/kernel/sys_sparc.c 2005-08-29 22:24:56 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/sparc64/kernel/sys_sparc.c 2005-10-29 03:20:33 +0200 @@ -476,13 +477,13 @@ asmlinkage long sys_getdomainname(char _ down_read(&uts_sem); - nlen = strlen(system_utsname.domainname) + 1; + nlen = strlen(vx_new_uts(domainname)) + 1; if (nlen < len) len = nlen; if (len > __NEW_UTS_LEN) goto done; - if (copy_to_user(name, system_utsname.domainname, len)) + if (copy_to_user(name, vx_new_uts(domainname), len)) goto done; err = 0; done: --- linux-2.6.14/arch/um/kernel/syscall_kern.c 2005-08-29 22:24:56 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/um/kernel/syscall_kern.c 2005-10-29 03:20:33 +0200 @@ -110,7 +112,7 @@ long sys_uname(struct old_utsname * name if (!name) return -EFAULT; down_read(&uts_sem); - err=copy_to_user(name, &system_utsname, sizeof (*name)); + err=copy_to_user(name, vx_new_utsname(), sizeof (*name)); up_read(&uts_sem); return err?-EFAULT:0; } --- linux-2.6.14/arch/um/kernel/syscall_kern.c 2005-08-29 22:24:56 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/um/kernel/syscall_kern.c 2005-10-29 03:20:33 +0200 @@ -118,6 +120,7 @@ long sys_uname(struct old_utsname * name long sys_olduname(struct oldold_utsname * name) { long error; + struct new_utsname *ptr; if (!name) return -EFAULT; --- linux-2.6.14/arch/um/kernel/syscall_kern.c 2005-08-29 22:24:56 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/um/kernel/syscall_kern.c 2005-10-29 03:20:33 +0200 @@ -126,19 +129,20 @@ long sys_olduname(struct oldold_utsname down_read(&uts_sem); - error = __copy_to_user(&name->sysname,&system_utsname.sysname, + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname, __OLD_UTS_LEN); error |= __put_user(0,name->sysname+__OLD_UTS_LEN); - error |= __copy_to_user(&name->nodename,&system_utsname.nodename, + error |= __copy_to_user(&name->nodename,ptr->nodename, __OLD_UTS_LEN); error |= __put_user(0,name->nodename+__OLD_UTS_LEN); - error |= __copy_to_user(&name->release,&system_utsname.release, + error |= __copy_to_user(&name->release,ptr->release, __OLD_UTS_LEN); error |= __put_user(0,name->release+__OLD_UTS_LEN); - error |= __copy_to_user(&name->version,&system_utsname.version, + error |= __copy_to_user(&name->version,ptr->version, __OLD_UTS_LEN); error |= __put_user(0,name->version+__OLD_UTS_LEN); - error |= __copy_to_user(&name->machine,&system_utsname.machine, + error |= __copy_to_user(&name->machine,ptr->machine, __OLD_UTS_LEN); error |= __put_user(0,name->machine+__OLD_UTS_LEN); --- linux-2.6.14/arch/x86_64/ia32/sys_ia32.c 2005-10-28 20:49:18 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/x86_64/ia32/sys_ia32.c 2005-10-29 03:19:02 +0200 @@ -860,6 +860,7 @@ asmlinkage long sys32_mmap2(unsigned lon asmlinkage long sys32_olduname(struct oldold_utsname __user * name) { int error; + struct new_utsname *ptr; if (!name) return -EFAULT; --- linux-2.6.14/arch/x86_64/ia32/sys_ia32.c 2005-10-28 20:49:18 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/x86_64/ia32/sys_ia32.c 2005-10-29 03:19:02 +0200 @@ -868,13 +869,14 @@ asmlinkage long sys32_olduname(struct ol down_read(&uts_sem); - error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); + ptr = vx_new_utsname(); + error = __copy_to_user(&name->sysname,ptr->sysname,__OLD_UTS_LEN); __put_user(0,name->sysname+__OLD_UTS_LEN); - __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); + __copy_to_user(&name->nodename,ptr->nodename,__OLD_UTS_LEN); __put_user(0,name->nodename+__OLD_UTS_LEN); - __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); + __copy_to_user(&name->release,ptr->release,__OLD_UTS_LEN); __put_user(0,name->release+__OLD_UTS_LEN); - __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); + __copy_to_user(&name->version,ptr->version,__OLD_UTS_LEN); __put_user(0,name->version+__OLD_UTS_LEN); { char *arch = "x86_64"; --- linux-2.6.14/arch/x86_64/ia32/sys_ia32.c 2005-10-28 20:49:18 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/x86_64/ia32/sys_ia32.c 2005-10-29 03:19:02 +0200 @@ -897,7 +899,7 @@ long sys32_uname(struct old_utsname __us if (!name) return -EFAULT; down_read(&uts_sem); - err=copy_to_user(name, &system_utsname, sizeof (*name)); + err=copy_to_user(name, vx_new_utsname(), sizeof (*name)); up_read(&uts_sem); if (personality(current->personality) == PER_LINUX32) err |= copy_to_user(&name->machine, "i686", 5); --- linux-2.6.14/arch/x86_64/kernel/sys_x86_64.c 2005-08-29 22:24:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/arch/x86_64/kernel/sys_x86_64.c 2005-10-29 03:20:33 +0200 @@ -148,7 +149,7 @@ asmlinkage long sys_uname(struct new_uts { int err; down_read(&uts_sem); - err = copy_to_user(name, &system_utsname, sizeof (*name)); + err = copy_to_user(name, vx_new_utsname(), sizeof (*name)); up_read(&uts_sem); if (personality(current->personality) == PER_LINUX32) err |= copy_to_user(&name->machine, "i686", 5); --- linux-2.6.14/fs/nfs/nfsroot.c 2005-08-29 22:25:32 +0200 +++ linux-2.6.14-vs2.0.1-pre3/fs/nfs/nfsroot.c 2005-10-29 03:20:34 +0200 @@ -310,7 +317,7 @@ static int __init root_nfs_name(char *na /* Override them by options set on kernel command-line */ root_nfs_parse(name, buf); - cp = system_utsname.nodename; + cp = vx_new_uts(nodename); if (strlen(buf) + strlen(cp) > NFS_MAXPATHLEN) { printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n"); return -1; --- linux-2.6.14/fs/proc/proc_misc.c 2005-08-29 22:25:33 +0200 +++ linux-2.6.14-vs2.0.1-pre3/fs/proc/proc_misc.c 2005-10-29 04:06:52 +0200 @@ -238,8 +258,9 @@ static int version_read_proc(char *page, { int len; - strcpy(page, linux_banner); - len = strlen(page); + len = sprintf(page, vx_linux_banner, + vx_new_uts(release), + vx_new_uts(version)); return proc_calc_metrics(page, start, off, count, eof, len); } --- linux-2.6.14/include/linux/kernel.h 2005-10-28 20:49:54 +0200 +++ linux-2.6.14-vs2.0.1-pre3/include/linux/kernel.h 2005-10-29 03:19:02 +0200 @@ -17,6 +17,7 @@ #include extern const char linux_banner[]; +extern const char vx_linux_banner[]; #define INT_MAX ((int)(~0U>>1)) #define INT_MIN (-INT_MAX - 1) --- linux-2.6.14/init/version.c 2005-03-02 12:39:08 +0100 +++ linux-2.6.14-vs2.0.1-pre3/init/version.c 2005-10-29 03:19:02 +0200 @@ -31,3 +31,8 @@ EXPORT_SYMBOL(system_utsname); const char linux_banner[] = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + +const char vx_linux_banner[] = + "Linux version %s (" LINUX_COMPILE_BY "@" + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") %s\n"; + --- linux-2.6.14/kernel/sys.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sys.c 2005-10-29 04:06:52 +0200 @@ -1492,7 +1506,7 @@ asmlinkage long sys_newuname(struct new_ int errno = 0; down_read(&uts_sem); - if (copy_to_user(name,&system_utsname,sizeof *name)) + if (copy_to_user(name, vx_new_utsname(), sizeof *name)) errno = -EFAULT; up_read(&uts_sem); return errno; --- linux-2.6.14/kernel/sys.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sys.c 2005-10-29 04:06:52 +0200 @@ -1503,15 +1517,17 @@ asmlinkage long sys_sethostname(char __u int errno; char tmp[__NEW_UTS_LEN]; - if (!capable(CAP_SYS_ADMIN)) + if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME)) return -EPERM; if (len < 0 || len > __NEW_UTS_LEN) return -EINVAL; down_write(&uts_sem); errno = -EFAULT; if (!copy_from_user(tmp, name, len)) { - memcpy(system_utsname.nodename, tmp, len); - system_utsname.nodename[len] = 0; + char *ptr = vx_new_uts(nodename); + + memcpy(ptr, tmp, len); + ptr[len] = 0; errno = 0; } up_write(&uts_sem); --- linux-2.6.14/kernel/sys.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sys.c 2005-10-29 04:06:52 +0200 @@ -1523,15 +1539,17 @@ asmlinkage long sys_sethostname(char __u asmlinkage long sys_gethostname(char __user *name, int len) { int i, errno; + char *ptr; if (len < 0) return -EINVAL; down_read(&uts_sem); - i = 1 + strlen(system_utsname.nodename); + ptr = vx_new_uts(nodename); + i = 1 + strlen(ptr); if (i > len) i = len; errno = 0; - if (copy_to_user(name, system_utsname.nodename, i)) + if (copy_to_user(name, ptr, i)) errno = -EFAULT; up_read(&uts_sem); return errno; --- linux-2.6.14/kernel/sys.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sys.c 2005-10-29 04:06:52 +0200 @@ -1548,7 +1566,7 @@ asmlinkage long sys_setdomainname(char _ int errno; char tmp[__NEW_UTS_LEN]; - if (!capable(CAP_SYS_ADMIN)) + if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME)) return -EPERM; if (len < 0 || len > __NEW_UTS_LEN) return -EINVAL; --- linux-2.6.14/kernel/sys.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sys.c 2005-10-29 04:06:52 +0200 @@ -1556,8 +1574,10 @@ asmlinkage long sys_setdomainname(char _ down_write(&uts_sem); errno = -EFAULT; if (!copy_from_user(tmp, name, len)) { - memcpy(system_utsname.domainname, tmp, len); - system_utsname.domainname[len] = 0; + char *ptr = vx_new_uts(domainname); + + memcpy(ptr, tmp, len); + ptr[len] = 0; errno = 0; } up_write(&uts_sem); --- linux-2.6.14/kernel/sysctl.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sysctl.c 2005-10-29 04:06:52 +0200 @@ -232,6 +234,7 @@ static ctl_table kern_table[] = { .maxlen = sizeof(system_utsname.sysname), .mode = 0444, .proc_handler = &proc_doutsstring, + .virt_handler = &vx_uts_virt_handler, .strategy = &sysctl_string, }, { --- linux-2.6.14/kernel/sysctl.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sysctl.c 2005-10-29 04:06:52 +0200 @@ -241,6 +244,7 @@ static ctl_table kern_table[] = { .maxlen = sizeof(system_utsname.release), .mode = 0444, .proc_handler = &proc_doutsstring, + .virt_handler = &vx_uts_virt_handler, .strategy = &sysctl_string, }, { --- linux-2.6.14/kernel/sysctl.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sysctl.c 2005-10-29 04:06:52 +0200 @@ -250,6 +254,7 @@ static ctl_table kern_table[] = { .maxlen = sizeof(system_utsname.version), .mode = 0444, .proc_handler = &proc_doutsstring, + .virt_handler = &vx_uts_virt_handler, .strategy = &sysctl_string, }, { --- linux-2.6.14/kernel/sysctl.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sysctl.c 2005-10-29 04:06:52 +0200 @@ -259,6 +264,7 @@ static ctl_table kern_table[] = { .maxlen = sizeof(system_utsname.nodename), .mode = 0644, .proc_handler = &proc_doutsstring, + .virt_handler = &vx_uts_virt_handler, .strategy = &sysctl_string, }, { --- linux-2.6.14/kernel/sysctl.c 2005-10-28 20:49:57 +0200 +++ linux-2.6.14-vs2.0.1-pre3/kernel/sysctl.c 2005-10-29 04:06:52 +0200 @@ -268,6 +274,7 @@ static ctl_table kern_table[] = { .maxlen = sizeof(system_utsname.domainname), .mode = 0644, .proc_handler = &proc_doutsstring, + .virt_handler = &vx_uts_virt_handler, .strategy = &sysctl_string, }, {