public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
  • * Re: [PATCH 0/7] uts namespaces: Introduction
           [not found] <20060407234815.849357768@sergelap>
           [not found] ` <20060408045206.EAA8E19B8FF@sergelap.hallyn.com>
    @ 2006-04-10  1:15 ` Sam Vilain
           [not found] ` <20060408045206.EFDD819B901@sergelap.hallyn.com>
      2 siblings, 0 replies; 15+ messages in thread
    From: Sam Vilain @ 2006-04-10  1:15 UTC (permalink / raw)
      To: Serge E. Hallyn
      Cc: linux-kernel, Kirill Korotaev, herbert, devel, Eric W. Biederman,
    	xemul, James Morris
    
    Serge,
    
    I have just imported your series into the GIT repository where I have
    been collating the various recent related submissions at:
    
      git://vserver.utsl.gen.nz/vserver
    
    A summary of the submissions imported to date are at:
    
      http://www.utsl.gen.nz/gitweb/?p=vserver;a=heads
    
    I will endeavour to continue to collect and catalogue all vserver
    related submissions I receive, see on LKML, or get pull requests for, as
    a part of my efforts to merge this functionality.
    
    Sam.
    
    Serge E. Hallyn wrote:
    
    >Introduce utsname namespaces.  Instead of a single system_utsname
    >containing hostname domainname etc, a process can request it's
    >copy of the uts info to be cloned.  The data will be copied from
    >it's original, but any further changes will not be seen by processes
    >which are not it's children, and vice versa.
    >
    >This is useful, for instance, for vserver/openvz, which can now clone
    >a new uts namespace for each new virtual server.
    >
    >Aside from the debugging patch which comes last, this patchset does
    >not actually implement a way for processes to unshare the uts namespace.
    >The proper unsharing semantics are to be worked out later.
    >
    >Changes since last submission:
    >  Restructured patchset so it compiles after each patch
    >  Removed EXPORT_SYMBOL for unshare_uts_ns and free_uts_ns.
    >    The former is now in the debugging pach and the latter gone
    >    entirely, as unsharing is likely not something to be done
    >    from modules!
    >
    >-serge
    >
    >
    >  
    >
    
    
    ^ permalink raw reply	[flat|nested] 15+ messages in thread
  • [parent not found: <20060408045206.EFDD819B901@sergelap.hallyn.com>]
  • * [PATCH 2/7] uts namespaces: switch to using uts namespaces
    @ 2006-05-01 19:53 Serge E. Hallyn
      2006-05-01 19:53 ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Serge E. Hallyn
      0 siblings, 1 reply; 15+ messages in thread
    From: Serge E. Hallyn @ 2006-05-01 19:53 UTC (permalink / raw)
      To: Serge E. Hallyn
      Cc: ebiederm, herbert, dev, linux-kernel, sam, xemul, haveblue, clg,
    	frankeh
    
    Replace references to system_utsname to the per-process uts namespace
    where appropriate.  This includes things like uname.
    
    Changes: Per Eric Biederman's comments, use the per-process uts namespace
    	for ELF_PLATFORM, sunrpc, and parts of net/ipv4/ipconfig.c
    
    Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
    
    ---
    
     arch/alpha/kernel/osf_sys.c         |   24 ++++++++++++------------
     arch/i386/kernel/sys_i386.c         |   12 ++++++------
     arch/ia64/sn/kernel/sn2/sn_hwperf.c |    2 +-
     arch/m32r/kernel/sys_m32r.c         |    2 +-
     arch/mips/kernel/linux32.c          |    2 +-
     arch/mips/kernel/syscall.c          |   18 +++++++++---------
     arch/mips/kernel/sysirix.c          |   12 ++++++------
     arch/parisc/hpux/sys_hpux.c         |   22 +++++++++++-----------
     arch/powerpc/kernel/syscalls.c      |   14 +++++++-------
     arch/sh/kernel/sys_sh.c             |    2 +-
     arch/sh64/kernel/sys_sh64.c         |    2 +-
     arch/sparc/kernel/sys_sparc.c       |    4 ++--
     arch/sparc/kernel/sys_sunos.c       |   10 +++++-----
     arch/sparc64/kernel/sys_sparc.c     |    4 ++--
     arch/sparc64/kernel/sys_sunos32.c   |   10 +++++-----
     arch/sparc64/solaris/misc.c         |    6 +++---
     arch/um/drivers/mconsole_kern.c     |    6 +++---
     arch/um/kernel/syscall_kern.c       |   12 ++++++------
     arch/um/sys-x86_64/syscalls.c       |    2 +-
     arch/x86_64/ia32/sys_ia32.c         |   10 +++++-----
     arch/x86_64/kernel/sys_x86_64.c     |    2 +-
     arch/xtensa/kernel/syscalls.c       |    2 +-
     drivers/char/random.c               |    4 ++--
     fs/cifs/connect.c                   |   28 ++++++++++++++--------------
     fs/exec.c                           |    2 +-
     fs/lockd/clntproc.c                 |    4 ++--
     fs/lockd/mon.c                      |    2 +-
     fs/lockd/svclock.c                  |    2 +-
     fs/lockd/xdr.c                      |    2 +-
     fs/nfs/nfsroot.c                    |    2 +-
     include/asm-i386/elf.h              |    2 +-
     include/linux/lockd/lockd.h         |    2 +-
     kernel/sys.c                        |   14 +++++++-------
     net/ipv4/ipconfig.c                 |   14 +++++++-------
     net/sunrpc/clnt.c                   |    4 ++--
     35 files changed, 131 insertions(+), 131 deletions(-)
    
    2dbe7dc9002109814ee4e3410454aff06bb38f9f
    diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
    index 31afe3d..b793b96 100644
    --- a/arch/alpha/kernel/osf_sys.c
    +++ b/arch/alpha/kernel/osf_sys.c
    @@ -402,15 +402,15 @@ osf_utsname(char __user *name)
     
     	down_read(&uts_sem);
     	error = -EFAULT;
    -	if (copy_to_user(name + 0, system_utsname.sysname, 32))
    +	if (copy_to_user(name + 0, utsname()->sysname, 32))
     		goto out;
    -	if (copy_to_user(name + 32, system_utsname.nodename, 32))
    +	if (copy_to_user(name + 32, utsname()->nodename, 32))
     		goto out;
    -	if (copy_to_user(name + 64, system_utsname.release, 32))
    +	if (copy_to_user(name + 64, utsname()->release, 32))
     		goto out;
    -	if (copy_to_user(name + 96, system_utsname.version, 32))
    +	if (copy_to_user(name + 96, utsname()->version, 32))
     		goto out;
    -	if (copy_to_user(name + 128, system_utsname.machine, 32))
    +	if (copy_to_user(name + 128, utsname()->machine, 32))
     		goto out;
     
     	error = 0;
    @@ -449,8 +449,8 @@ osf_getdomainname(char __user *name, int
     
     	down_read(&uts_sem);
     	for (i = 0; i < len; ++i) {
    -		__put_user(system_utsname.domainname[i], name + i);
    -		if (system_utsname.domainname[i] == '\0')
    +		__put_user(utsname()->domainname[i], name + i);
    +		if (utsname()->domainname[i] == '\0')
     			break;
     	}
     	up_read(&uts_sem);
    @@ -608,11 +608,11 @@ asmlinkage long
     osf_sysinfo(int command, char __user *buf, long count)
     {
     	static char * sysinfo_table[] = {
    -		system_utsname.sysname,
    -		system_utsname.nodename,
    -		system_utsname.release,
    -		system_utsname.version,
    -		system_utsname.machine,
    +		utsname()->sysname,
    +		utsname()->nodename,
    +		utsname()->release,
    +		utsname()->version,
    +		utsname()->machine,
     		"alpha",	/* instruction set architecture */
     		"dummy",	/* hardware serial number */
     		"dummy",	/* hardware manufacturer */
    diff --git a/arch/i386/kernel/sys_i386.c b/arch/i386/kernel/sys_i386.c
    index 8fdb1fb..4af731d 100644
    --- a/arch/i386/kernel/sys_i386.c
    +++ b/arch/i386/kernel/sys_i386.c
    @@ -210,7 +210,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	return err?-EFAULT:0;
     }
    @@ -226,15 +226,15 @@ asmlinkage int sys_olduname(struct oldol
       
       	down_read(&uts_sem);
     	
    -	error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN);
    +	error = __copy_to_user(&name->sysname,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->machine,__OLD_UTS_LEN);
     	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
     	
     	up_read(&uts_sem);
    diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
    index 739c948..a27b223 100644
    --- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
    +++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
    @@ -420,7 +420,7 @@ static int sn_topology_show(struct seq_f
     			"coherency_domain %d, "
     			"region_size %d\n",
     
    -			partid, system_utsname.nodename,
    +			partid, utsname()->nodename,
     			shubtype ? "shub2" : "shub1", 
     			(u64)nasid_mask << nasid_shift, nasid_msb, nasid_shift,
     			system_size, sharing_size, coher, region_size);
    diff --git a/arch/m32r/kernel/sys_m32r.c b/arch/m32r/kernel/sys_m32r.c
    index 670cb49..11412c0 100644
    --- a/arch/m32r/kernel/sys_m32r.c
    +++ b/arch/m32r/kernel/sys_m32r.c
    @@ -206,7 +206,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	return err?-EFAULT:0;
     }
    diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
    index a7d2bb3..66f999b 100644
    --- a/arch/mips/kernel/linux32.c
    +++ b/arch/mips/kernel/linux32.c
    @@ -1040,7 +1040,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,utsname(),sizeof *name))
     		ret = -EFAULT;
     	up_read(&uts_sem);
     
    diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
    index 2aeaa2f..8b13d57 100644
    --- a/arch/mips/kernel/syscall.c
    +++ b/arch/mips/kernel/syscall.c
    @@ -232,7 +232,7 @@ out:
      */
     asmlinkage int sys_uname(struct old_utsname __user * name)
     {
    -	if (name && !copy_to_user(name, &system_utsname, sizeof (*name)))
    +	if (name && !copy_to_user(name, utsname(), sizeof (*name)))
     		return 0;
     	return -EFAULT;
     }
    @@ -249,15 +249,15 @@ asmlinkage int sys_olduname(struct oldol
     	if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname)))
     		return -EFAULT;
     
    -	error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN);
    +	error = __copy_to_user(&name->sysname,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->machine,__OLD_UTS_LEN);
     	error = __put_user(0,name->machine+__OLD_UTS_LEN);
     	error = error ? -EFAULT : 0;
     
    @@ -293,10 +293,10 @@ asmlinkage int _sys_sysmips(int cmd, lon
     			return -EFAULT;
     
     		down_write(&uts_sem);
    -		strncpy(system_utsname.nodename, nodename, len);
    +		strncpy(utsname()->nodename, nodename, len);
     		nodename[__NEW_UTS_LEN] = '\0';
    -		strlcpy(system_utsname.nodename, nodename,
    -		        sizeof(system_utsname.nodename));
    +		strlcpy(utsname()->nodename, nodename,
    +		        sizeof(utsname()->nodename));
     		up_write(&uts_sem);
     		return 0;
     	}
    diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c
    index 5407b78..1b4e7e7 100644
    --- a/arch/mips/kernel/sysirix.c
    +++ b/arch/mips/kernel/sysirix.c
    @@ -884,7 +884,7 @@ asmlinkage int irix_getdomainname(char _
     	down_read(&uts_sem);
     	if (len > __NEW_UTS_LEN)
     		len = __NEW_UTS_LEN;
    -	err = copy_to_user(name, system_utsname.domainname, len) ? -EFAULT : 0;
    +	err = copy_to_user(name, utsname()->domainname, len) ? -EFAULT : 0;
     	up_read(&uts_sem);
     
     	return err;
    @@ -1127,11 +1127,11 @@ struct iuname {
     asmlinkage int irix_uname(struct iuname __user *buf)
     {
     	down_read(&uts_sem);
    -	if (copy_from_user(system_utsname.sysname, buf->sysname, 65)
    -	    || copy_from_user(system_utsname.nodename, buf->nodename, 65)
    -	    || copy_from_user(system_utsname.release, buf->release, 65)
    -	    || copy_from_user(system_utsname.version, buf->version, 65)
    -	    || copy_from_user(system_utsname.machine, buf->machine, 65)) {
    +	if (copy_from_user(utsname()->sysname, buf->sysname, 65)
    +	    || copy_from_user(utsname()->nodename, buf->nodename, 65)
    +	    || copy_from_user(utsname()->release, buf->release, 65)
    +	    || copy_from_user(utsname()->version, buf->version, 65)
    +	    || copy_from_user(utsname()->machine, buf->machine, 65)) {
     		return -EFAULT;
     	}
     	up_read(&uts_sem);
    diff --git a/arch/parisc/hpux/sys_hpux.c b/arch/parisc/hpux/sys_hpux.c
    index 05273cc..9fc2c08 100644
    --- a/arch/parisc/hpux/sys_hpux.c
    +++ b/arch/parisc/hpux/sys_hpux.c
    @@ -266,15 +266,15 @@ static int hpux_uname(struct hpux_utsnam
     
     	down_read(&uts_sem);
     
    -	error = __copy_to_user(&name->sysname,&system_utsname.sysname,HPUX_UTSLEN-1);
    +	error = __copy_to_user(&name->sysname,&utsname()->sysname,HPUX_UTSLEN-1);
     	error |= __put_user(0,name->sysname+HPUX_UTSLEN-1);
    -	error |= __copy_to_user(&name->nodename,&system_utsname.nodename,HPUX_UTSLEN-1);
    +	error |= __copy_to_user(&name->nodename,&utsname()->nodename,HPUX_UTSLEN-1);
     	error |= __put_user(0,name->nodename+HPUX_UTSLEN-1);
    -	error |= __copy_to_user(&name->release,&system_utsname.release,HPUX_UTSLEN-1);
    +	error |= __copy_to_user(&name->release,&utsname()->release,HPUX_UTSLEN-1);
     	error |= __put_user(0,name->release+HPUX_UTSLEN-1);
    -	error |= __copy_to_user(&name->version,&system_utsname.version,HPUX_UTSLEN-1);
    +	error |= __copy_to_user(&name->version,&utsname()->version,HPUX_UTSLEN-1);
     	error |= __put_user(0,name->version+HPUX_UTSLEN-1);
    -	error |= __copy_to_user(&name->machine,&system_utsname.machine,HPUX_UTSLEN-1);
    +	error |= __copy_to_user(&name->machine,&utsname()->machine,HPUX_UTSLEN-1);
     	error |= __put_user(0,name->machine+HPUX_UTSLEN-1);
     
     	up_read(&uts_sem);
    @@ -373,8 +373,8 @@ int hpux_utssys(char *ubuf, int n, int t
     		/*  TODO:  print a warning about using this?  */
     		down_write(&uts_sem);
     		error = -EFAULT;
    -		if (!copy_from_user(system_utsname.sysname, ubuf, len)) {
    -			system_utsname.sysname[len] = 0;
    +		if (!copy_from_user(utsname()->sysname, ubuf, len)) {
    +			utsname()->sysname[len] = 0;
     			error = 0;
     		}
     		up_write(&uts_sem);
    @@ -400,8 +400,8 @@ int hpux_utssys(char *ubuf, int n, int t
     		/*  TODO:  print a warning about this?  */
     		down_write(&uts_sem);
     		error = -EFAULT;
    -		if (!copy_from_user(system_utsname.release, ubuf, len)) {
    -			system_utsname.release[len] = 0;
    +		if (!copy_from_user(utsname()->release, ubuf, len)) {
    +			utsname()->release[len] = 0;
     			error = 0;
     		}
     		up_write(&uts_sem);
    @@ -422,13 +422,13 @@ int hpux_getdomainname(char *name, int l
      	
      	down_read(&uts_sem);
      	
    -	nlen = strlen(system_utsname.domainname) + 1;
    +	nlen = strlen(utsname()->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, utsname()->domainname, len))
     		goto done;
     	err = 0;
     done:
    diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
    index 9b69d99..d358866 100644
    --- a/arch/powerpc/kernel/syscalls.c
    +++ b/arch/powerpc/kernel/syscalls.c
    @@ -260,7 +260,7 @@ long ppc_newuname(struct new_utsname __u
     	int err = 0;
     
     	down_read(&uts_sem);
    -	if (copy_to_user(name, &system_utsname, sizeof(*name)))
    +	if (copy_to_user(name, utsname(), sizeof(*name)))
     		err = -EFAULT;
     	up_read(&uts_sem);
     	if (!err)
    @@ -273,7 +273,7 @@ int sys_uname(struct old_utsname __user 
     	int err = 0;
     	
     	down_read(&uts_sem);
    -	if (copy_to_user(name, &system_utsname, sizeof(*name)))
    +	if (copy_to_user(name, utsname(), sizeof(*name)))
     		err = -EFAULT;
     	up_read(&uts_sem);
     	if (!err)
    @@ -289,19 +289,19 @@ int sys_olduname(struct oldold_utsname _
     		return -EFAULT;
       
     	down_read(&uts_sem);
    -	error = __copy_to_user(&name->sysname, &system_utsname.sysname,
    +	error = __copy_to_user(&name->sysname, &utsname()->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, &utsname()->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, &utsname()->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, &utsname()->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, &utsname()->machine,
     				__OLD_UTS_LEN);
     	error |= override_machine(name->machine);
     	up_read(&uts_sem);
    diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
    index 917b2f3..e4966b2 100644
    --- a/arch/sh/kernel/sys_sh.c
    +++ b/arch/sh/kernel/sys_sh.c
    @@ -267,7 +267,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	return err?-EFAULT:0;
     }
    diff --git a/arch/sh64/kernel/sys_sh64.c b/arch/sh64/kernel/sys_sh64.c
    index 58ff7d5..a8dc88c 100644
    --- a/arch/sh64/kernel/sys_sh64.c
    +++ b/arch/sh64/kernel/sys_sh64.c
    @@ -279,7 +279,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	return err?-EFAULT:0;
     }
    diff --git a/arch/sparc/kernel/sys_sparc.c b/arch/sparc/kernel/sys_sparc.c
    index 0cdfc9d..c8ad73c 100644
    --- a/arch/sparc/kernel/sys_sparc.c
    +++ b/arch/sparc/kernel/sys_sparc.c
    @@ -470,13 +470,13 @@ asmlinkage int sys_getdomainname(char __
      	
      	down_read(&uts_sem);
      	
    -	nlen = strlen(system_utsname.domainname) + 1;
    +	nlen = strlen(utsname()->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, utsname()->domainname, len))
     		goto done;
     	err = 0;
     done:
    diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c
    index 288de27..9f9206f 100644
    --- a/arch/sparc/kernel/sys_sunos.c
    +++ b/arch/sparc/kernel/sys_sunos.c
    @@ -483,13 +483,13 @@ asmlinkage int sunos_uname(struct sunos_
     {
     	int ret;
     	down_read(&uts_sem);
    -	ret = copy_to_user(&name->sname[0], &system_utsname.sysname[0], sizeof(name->sname) - 1);
    +	ret = copy_to_user(&name->sname[0], &utsname()->sysname[0], sizeof(name->sname) - 1);
     	if (!ret) {
    -		ret |= __copy_to_user(&name->nname[0], &system_utsname.nodename[0], sizeof(name->nname) - 1);
    +		ret |= __copy_to_user(&name->nname[0], &utsname()->nodename[0], sizeof(name->nname) - 1);
     		ret |= __put_user('\0', &name->nname[8]);
    -		ret |= __copy_to_user(&name->rel[0], &system_utsname.release[0], sizeof(name->rel) - 1);
    -		ret |= __copy_to_user(&name->ver[0], &system_utsname.version[0], sizeof(name->ver) - 1);
    -		ret |= __copy_to_user(&name->mach[0], &system_utsname.machine[0], sizeof(name->mach) - 1);
    +		ret |= __copy_to_user(&name->rel[0], &utsname()->release[0], sizeof(name->rel) - 1);
    +		ret |= __copy_to_user(&name->ver[0], &utsname()->version[0], sizeof(name->ver) - 1);
    +		ret |= __copy_to_user(&name->mach[0], &utsname()->machine[0], sizeof(name->mach) - 1);
     	}
     	up_read(&uts_sem);
     	return ret ? -EFAULT : 0;
    diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
    index 7a86913..0453bd2 100644
    --- a/arch/sparc64/kernel/sys_sparc.c
    +++ b/arch/sparc64/kernel/sys_sparc.c
    @@ -707,13 +707,13 @@ asmlinkage long sys_getdomainname(char _
     
      	down_read(&uts_sem);
      	
    -	nlen = strlen(system_utsname.domainname) + 1;
    +	nlen = strlen(utsname()->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, utsname()->domainname, len))
     		goto done;
     	err = 0;
     done:
    diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c
    index ae5b32f..ba98c47 100644
    --- a/arch/sparc64/kernel/sys_sunos32.c
    +++ b/arch/sparc64/kernel/sys_sunos32.c
    @@ -439,16 +439,16 @@ asmlinkage int sunos_uname(struct sunos_
     	int ret;
     
     	down_read(&uts_sem);
    -	ret = copy_to_user(&name->sname[0], &system_utsname.sysname[0],
    +	ret = copy_to_user(&name->sname[0], &utsname()->sysname[0],
     			   sizeof(name->sname) - 1);
    -	ret |= copy_to_user(&name->nname[0], &system_utsname.nodename[0],
    +	ret |= copy_to_user(&name->nname[0], &utsname()->nodename[0],
     			    sizeof(name->nname) - 1);
     	ret |= put_user('\0', &name->nname[8]);
    -	ret |= copy_to_user(&name->rel[0], &system_utsname.release[0],
    +	ret |= copy_to_user(&name->rel[0], &utsname()->release[0],
     			    sizeof(name->rel) - 1);
    -	ret |= copy_to_user(&name->ver[0], &system_utsname.version[0],
    +	ret |= copy_to_user(&name->ver[0], &utsname()->version[0],
     			    sizeof(name->ver) - 1);
    -	ret |= copy_to_user(&name->mach[0], &system_utsname.machine[0],
    +	ret |= copy_to_user(&name->mach[0], &utsname()->machine[0],
     			    sizeof(name->mach) - 1);
     	up_read(&uts_sem);
     	return (ret ? -EFAULT : 0);
    diff --git a/arch/sparc64/solaris/misc.c b/arch/sparc64/solaris/misc.c
    index 5284996..5d0162a 100644
    --- a/arch/sparc64/solaris/misc.c
    +++ b/arch/sparc64/solaris/misc.c
    @@ -239,7 +239,7 @@ asmlinkage int solaris_utssys(u32 buf, u
     		/* Let's cheat */
     		err  = set_utsfield(v->sysname, "SunOS", 1, 0);
     		down_read(&uts_sem);
    -		err |= set_utsfield(v->nodename, system_utsname.nodename,
    +		err |= set_utsfield(v->nodename, utsname()->nodename,
     				    1, 1);
     		up_read(&uts_sem);
     		err |= set_utsfield(v->release, "2.6", 0, 0);
    @@ -263,7 +263,7 @@ asmlinkage int solaris_utsname(u32 buf)
     	/* Why should we not lie a bit? */
     	down_read(&uts_sem);
     	err  = set_utsfield(v->sysname, "SunOS", 0, 0);
    -	err |= set_utsfield(v->nodename, system_utsname.nodename, 1, 1);
    +	err |= set_utsfield(v->nodename, utsname()->nodename, 1, 1);
     	err |= set_utsfield(v->release, "5.6", 0, 0);
     	err |= set_utsfield(v->version, "Generic", 0, 0);
     	err |= set_utsfield(v->machine, machine(), 0, 0);
    @@ -295,7 +295,7 @@ asmlinkage int solaris_sysinfo(int cmd, 
     	case SI_HOSTNAME:
     		r = buffer + 256;
     		down_read(&uts_sem);
    -		for (p = system_utsname.nodename, q = buffer; 
    +		for (p = utsname()->nodename, q = buffer;
     		     q < r && *p && *p != '.'; *q++ = *p++);
     		up_read(&uts_sem);
     		*q = 0;
    diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
    index 6d7173f..244244a 100644
    --- a/arch/um/drivers/mconsole_kern.c
    +++ b/arch/um/drivers/mconsole_kern.c
    @@ -106,9 +106,9 @@ void mconsole_version(struct mc_request 
     {
     	char version[256];
     
    -	sprintf(version, "%s %s %s %s %s", system_utsname.sysname,
    -		system_utsname.nodename, system_utsname.release,
    -		system_utsname.version, system_utsname.machine);
    +	sprintf(version, "%s %s %s %s %s", utsname()->sysname,
    +		utsname()->nodename, utsname()->release,
    +		utsname()->version, utsname()->machine);
     	mconsole_reply(req, version, 0, 0);
     }
     
    diff --git a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c
    index 37d3978..d90e9ed 100644
    --- a/arch/um/kernel/syscall_kern.c
    +++ b/arch/um/kernel/syscall_kern.c
    @@ -110,7 +110,7 @@ long sys_uname(struct old_utsname __user
     	if (!name)
     		return -EFAULT;
     	down_read(&uts_sem);
    -	err=copy_to_user(name, &system_utsname, sizeof (*name));
    +	err=copy_to_user(name, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	return err?-EFAULT:0;
     }
    @@ -126,19 +126,19 @@ long sys_olduname(struct oldold_utsname 
       
       	down_read(&uts_sem);
     	
    -	error = __copy_to_user(&name->sysname,&system_utsname.sysname,
    +	error = __copy_to_user(&name->sysname,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->machine,
     				__OLD_UTS_LEN);
     	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
     	
    diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c
    index 6acee5c..3ad014e 100644
    --- a/arch/um/sys-x86_64/syscalls.c
    +++ b/arch/um/sys-x86_64/syscalls.c
    @@ -21,7 +21,7 @@ asmlinkage long sys_uname64(struct new_u
     {
     	int err;
     	down_read(&uts_sem);
    -	err = copy_to_user(name, &system_utsname, sizeof (*name));
    +	err = copy_to_user(name, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	if (personality(current->personality) == PER_LINUX32)
     		err |= copy_to_user(&name->machine, "i686", 5);
    diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
    index f182b20..6e0a19d 100644
    --- a/arch/x86_64/ia32/sys_ia32.c
    +++ b/arch/x86_64/ia32/sys_ia32.c
    @@ -801,13 +801,13 @@ asmlinkage long sys32_olduname(struct ol
       
       	down_read(&uts_sem);
     	
    -	error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN);
    +	error = __copy_to_user(&name->sysname,&utsname()->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,&utsname()->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,&utsname()->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,&utsname()->version,__OLD_UTS_LEN);
     	 __put_user(0,name->version+__OLD_UTS_LEN);
     	 { 
     		 char *arch = "x86_64";
    @@ -830,7 +830,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	if (personality(current->personality) == PER_LINUX32) 
     		err |= copy_to_user(&name->machine, "i686", 5);
    diff --git a/arch/x86_64/kernel/sys_x86_64.c b/arch/x86_64/kernel/sys_x86_64.c
    index 6449ea8..76bf7c2 100644
    --- a/arch/x86_64/kernel/sys_x86_64.c
    +++ b/arch/x86_64/kernel/sys_x86_64.c
    @@ -148,7 +148,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, utsname(), sizeof (*name));
     	up_read(&uts_sem);
     	if (personality(current->personality) == PER_LINUX32) 
     		err |= copy_to_user(&name->machine, "i686", 5); 		
    diff --git a/arch/xtensa/kernel/syscalls.c b/arch/xtensa/kernel/syscalls.c
    index f20c649..30060c1 100644
    --- a/arch/xtensa/kernel/syscalls.c
    +++ b/arch/xtensa/kernel/syscalls.c
    @@ -129,7 +129,7 @@ out:
     
     int sys_uname(struct old_utsname * name)
     {
    -	if (name && !copy_to_user(name, &system_utsname, sizeof (*name)))
    +	if (name && !copy_to_user(name, utsname(), sizeof (*name)))
     		return 0;
     	return -EFAULT;
     }
    diff --git a/drivers/char/random.c b/drivers/char/random.c
    index 58f3512..a891421 100644
    --- a/drivers/char/random.c
    +++ b/drivers/char/random.c
    @@ -888,8 +888,8 @@ static void init_std_data(struct entropy
     
     	do_gettimeofday(&tv);
     	add_entropy_words(r, (__u32 *)&tv, sizeof(tv)/4);
    -	add_entropy_words(r, (__u32 *)&system_utsname,
    -			  sizeof(system_utsname)/4);
    +	add_entropy_words(r, (__u32 *)utsname(),
    +			  sizeof(*(utsname()))/4);
     }
     
     static int __init rand_initialize(void)
    diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
    index d2ec806..b6c0886 100644
    --- a/fs/cifs/connect.c
    +++ b/fs/cifs/connect.c
    @@ -765,12 +765,12 @@ cifs_parse_mount_options(char *options, 
     	separator[1] = 0; 
     
     	memset(vol->source_rfc1001_name,0x20,15);
    -	for(i=0;i < strnlen(system_utsname.nodename,15);i++) {
    +	for(i=0;i < strnlen(utsname()->nodename,15);i++) {
     		/* does not have to be a perfect mapping since the field is
     		informational, only used for servers that do not support
     		port 445 and it can be overridden at mount time */
     		vol->source_rfc1001_name[i] = 
    -			toupper(system_utsname.nodename[i]);
    +			toupper(utsname()->nodename[i]);
     	}
     	vol->source_rfc1001_name[15] = 0;
     	/* null target name indicates to use *SMBSERVR default called name
    @@ -2077,7 +2077,7 @@ CIFSSessSetup(unsigned int xid, struct c
     				  32, nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bytes_returned =
    -		    cifs_strtoUCS((__le16 *) bcc_ptr, system_utsname.release,
    +		    cifs_strtoUCS((__le16 *) bcc_ptr, utsname()->release,
     				  32, nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bcc_ptr += 2;
    @@ -2104,8 +2104,8 @@ CIFSSessSetup(unsigned int xid, struct c
     		}
     		strcpy(bcc_ptr, "Linux version ");
     		bcc_ptr += strlen("Linux version ");
    -		strcpy(bcc_ptr, system_utsname.release);
    -		bcc_ptr += strlen(system_utsname.release) + 1;
    +		strcpy(bcc_ptr, utsname()->release);
    +		bcc_ptr += strlen(utsname()->release) + 1;
     		strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
     		bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
     	}
    @@ -2346,7 +2346,7 @@ CIFSSpnegoSessSetup(unsigned int xid, st
     				  32, nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bytes_returned =
    -		    cifs_strtoUCS((__le16 *) bcc_ptr, system_utsname.release, 32,
    +		    cifs_strtoUCS((__le16 *) bcc_ptr, utsname()->release, 32,
     				  nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bcc_ptr += 2;
    @@ -2371,8 +2371,8 @@ CIFSSpnegoSessSetup(unsigned int xid, st
     		}
     		strcpy(bcc_ptr, "Linux version ");
     		bcc_ptr += strlen("Linux version ");
    -		strcpy(bcc_ptr, system_utsname.release);
    -		bcc_ptr += strlen(system_utsname.release) + 1;
    +		strcpy(bcc_ptr, utsname()->release);
    +		bcc_ptr += strlen(utsname()->release) + 1;
     		strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
     		bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
     	}
    @@ -2622,7 +2622,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned i
     				  32, nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bytes_returned =
    -		    cifs_strtoUCS((__le16 *) bcc_ptr, system_utsname.release, 32,
    +		    cifs_strtoUCS((__le16 *) bcc_ptr, utsname()->release, 32,
     				  nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bcc_ptr += 2;	/* null terminate Linux version */
    @@ -2639,8 +2639,8 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned i
     	} else {		/* ASCII */
     		strcpy(bcc_ptr, "Linux version ");
     		bcc_ptr += strlen("Linux version ");
    -		strcpy(bcc_ptr, system_utsname.release);
    -		bcc_ptr += strlen(system_utsname.release) + 1;
    +		strcpy(bcc_ptr, utsname()->release);
    +		bcc_ptr += strlen(utsname()->release) + 1;
     		strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
     		bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
     		bcc_ptr++;	/* empty domain field */
    @@ -3001,7 +3001,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xi
     				  32, nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bytes_returned =
    -		    cifs_strtoUCS((__le16 *) bcc_ptr, system_utsname.release, 32,
    +		    cifs_strtoUCS((__le16 *) bcc_ptr, utsname()->release, 32,
     				  nls_codepage);
     		bcc_ptr += 2 * bytes_returned;
     		bcc_ptr += 2;	/* null term version string */
    @@ -3053,8 +3053,8 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xi
     
     		strcpy(bcc_ptr, "Linux version ");
     		bcc_ptr += strlen("Linux version ");
    -		strcpy(bcc_ptr, system_utsname.release);
    -		bcc_ptr += strlen(system_utsname.release) + 1;
    +		strcpy(bcc_ptr, utsname()->release);
    +		bcc_ptr += strlen(utsname()->release) + 1;
     		strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
     		bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
     		bcc_ptr++;	/* null domain */
    diff --git a/fs/exec.c b/fs/exec.c
    index 3a79d97..cbb3270 100644
    --- a/fs/exec.c
    +++ b/fs/exec.c
    @@ -1337,7 +1337,7 @@ static void format_corename(char *corena
     			case 'h':
     				down_read(&uts_sem);
     				rc = snprintf(out_ptr, out_end - out_ptr,
    -					      "%s", system_utsname.nodename);
    +					      "%s", utsname()->nodename);
     				up_read(&uts_sem);
     				if (rc > out_end - out_ptr)
     					goto out;
    diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c
    index f96e381..915e596 100644
    --- a/fs/lockd/clntproc.c
    +++ b/fs/lockd/clntproc.c
    @@ -130,11 +130,11 @@ static void nlmclnt_setlockargs(struct n
     	nlmclnt_next_cookie(&argp->cookie);
     	argp->state   = nsm_local_state;
     	memcpy(&lock->fh, NFS_FH(fl->fl_file->f_dentry->d_inode), sizeof(struct nfs_fh));
    -	lock->caller  = system_utsname.nodename;
    +	lock->caller  = utsname()->nodename;
     	lock->oh.data = req->a_owner;
     	lock->oh.len  = snprintf(req->a_owner, sizeof(req->a_owner), "%u@%s",
     				(unsigned int)fl->fl_u.nfs_fl.owner->pid,
    -				system_utsname.nodename);
    +				utsname()->nodename);
     	lock->svid = fl->fl_u.nfs_fl.owner->pid;
     	lock->fl.fl_start = fl->fl_start;
     	lock->fl.fl_end = fl->fl_end;
    diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
    index 3fc683f..547aaa3 100644
    --- a/fs/lockd/mon.c
    +++ b/fs/lockd/mon.c
    @@ -152,7 +152,7 @@ xdr_encode_common(struct rpc_rqst *rqstp
     	 */
     	sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(argp->addr));
     	if (!(p = xdr_encode_string(p, buffer))
    -	 || !(p = xdr_encode_string(p, system_utsname.nodename)))
    +	 || !(p = xdr_encode_string(p, utsname()->nodename)))
     		return ERR_PTR(-EIO);
     	*p++ = htonl(argp->prog);
     	*p++ = htonl(argp->vers);
    diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c
    index 3ef7391..ec93c35 100644
    --- a/fs/lockd/svclock.c
    +++ b/fs/lockd/svclock.c
    @@ -326,7 +326,7 @@ static int nlmsvc_setgrantargs(struct nl
     {
     	locks_copy_lock(&call->a_args.lock.fl, &lock->fl);
     	memcpy(&call->a_args.lock.fh, &lock->fh, sizeof(call->a_args.lock.fh));
    -	call->a_args.lock.caller = system_utsname.nodename;
    +	call->a_args.lock.caller = utsname()->nodename;
     	call->a_args.lock.oh.len = lock->oh.len;
     
     	/* set default data area */
    diff --git a/fs/lockd/xdr.c b/fs/lockd/xdr.c
    index f22a376..4eec051 100644
    --- a/fs/lockd/xdr.c
    +++ b/fs/lockd/xdr.c
    @@ -516,7 +516,7 @@ nlmclt_decode_res(struct rpc_rqst *req, 
      */
     #define NLM_void_sz		0
     #define NLM_cookie_sz		1+XDR_QUADLEN(NLM_MAXCOOKIELEN)
    -#define NLM_caller_sz		1+XDR_QUADLEN(sizeof(system_utsname.nodename))
    +#define NLM_caller_sz		1+XDR_QUADLEN(sizeof(utsname()->nodename))
     #define NLM_netobj_sz		1+XDR_QUADLEN(XDR_MAX_NETOBJ)
     /* #define NLM_owner_sz		1+XDR_QUADLEN(NLM_MAXOWNER) */
     #define NLM_fhandle_sz		1+XDR_QUADLEN(NFS2_FHSIZE)
    diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
    index c0a754e..1d656a6 100644
    --- a/fs/nfs/nfsroot.c
    +++ b/fs/nfs/nfsroot.c
    @@ -312,7 +312,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 = utsname()->nodename;
     	if (strlen(buf) + strlen(cp) > NFS_MAXPATHLEN) {
     		printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n");
     		return -1;
    diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h
    index 4153d80..1b06c44 100644
    --- a/include/asm-i386/elf.h
    +++ b/include/asm-i386/elf.h
    @@ -108,7 +108,7 @@ #define ELF_HWCAP	(boot_cpu_data.x86_cap
        For the moment, we have only optimizations for the Intel generations,
        but that could change... */
     
    -#define ELF_PLATFORM  (system_utsname.machine)
    +#define ELF_PLATFORM  (utsname()->machine)
     
     #ifdef __KERNEL__
     #define SET_PERSONALITY(ex, ibcs2) do { } while (0)
    diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
    index 995f89d..ac15b87 100644
    --- a/include/linux/lockd/lockd.h
    +++ b/include/linux/lockd/lockd.h
    @@ -80,7 +80,7 @@ struct nlm_wait;
     /*
      * Memory chunk for NLM client RPC request.
      */
    -#define NLMCLNT_OHSIZE		(sizeof(system_utsname.nodename)+10)
    +#define NLMCLNT_OHSIZE		(sizeof(utsname()->nodename)+10)
     struct nlm_rqst {
     	unsigned int		a_flags;	/* initial RPC task flags */
     	struct nlm_host *	a_host;		/* host handle */
    diff --git a/kernel/sys.c b/kernel/sys.c
    index 0b6ec0e..bcaa48e 100644
    --- a/kernel/sys.c
    +++ b/kernel/sys.c
    @@ -1671,7 +1671,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,utsname(),sizeof *name))
     		errno = -EFAULT;
     	up_read(&uts_sem);
     	return errno;
    @@ -1689,8 +1689,8 @@ asmlinkage long sys_sethostname(char __u
     	down_write(&uts_sem);
     	errno = -EFAULT;
     	if (!copy_from_user(tmp, name, len)) {
    -		memcpy(system_utsname.nodename, tmp, len);
    -		system_utsname.nodename[len] = 0;
    +		memcpy(utsname()->nodename, tmp, len);
    +		utsname()->nodename[len] = 0;
     		errno = 0;
     	}
     	up_write(&uts_sem);
    @@ -1706,11 +1706,11 @@ asmlinkage long sys_gethostname(char __u
     	if (len < 0)
     		return -EINVAL;
     	down_read(&uts_sem);
    -	i = 1 + strlen(system_utsname.nodename);
    +	i = 1 + strlen(utsname()->nodename);
     	if (i > len)
     		i = len;
     	errno = 0;
    -	if (copy_to_user(name, system_utsname.nodename, i))
    +	if (copy_to_user(name, utsname()->nodename, i))
     		errno = -EFAULT;
     	up_read(&uts_sem);
     	return errno;
    @@ -1735,8 +1735,8 @@ 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;
    +		memcpy(utsname()->domainname, tmp, len);
    +		utsname()->domainname[len] = 0;
     		errno = 0;
     	}
     	up_write(&uts_sem);
    diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
    index cb8a92f..b9bdf0f 100644
    --- a/net/ipv4/ipconfig.c
    +++ b/net/ipv4/ipconfig.c
    @@ -806,7 +806,7 @@ #endif
     			}
     			break;
     		case 12:	/* Host name */
    -			ic_bootp_string(system_utsname.nodename, ext+1, *ext, __NEW_UTS_LEN);
    +			ic_bootp_string(utsname()->nodename, ext+1, *ext, __NEW_UTS_LEN);
     			ic_host_name_set = 1;
     			break;
     		case 15:	/* Domain name (DNS) */
    @@ -817,7 +817,7 @@ #endif
     				ic_bootp_string(root_server_path, ext+1, *ext, sizeof(root_server_path));
     			break;
     		case 40:	/* NIS Domain name (_not_ DNS) */
    -			ic_bootp_string(system_utsname.domainname, ext+1, *ext, __NEW_UTS_LEN);
    +			ic_bootp_string(utsname()->domainname, ext+1, *ext, __NEW_UTS_LEN);
     			break;
     	}
     }
    @@ -1369,7 +1369,7 @@ #ifndef IPCONFIG_SILENT
     	printk(", mask=%u.%u.%u.%u", NIPQUAD(ic_netmask));
     	printk(", gw=%u.%u.%u.%u", NIPQUAD(ic_gateway));
     	printk(",\n     host=%s, domain=%s, nis-domain=%s",
    -	       system_utsname.nodename, ic_domain, system_utsname.domainname);
    +	       utsname()->nodename, ic_domain, utsname()->domainname);
     	printk(",\n     bootserver=%u.%u.%u.%u", NIPQUAD(ic_servaddr));
     	printk(", rootserver=%u.%u.%u.%u", NIPQUAD(root_server_addr));
     	printk(", rootpath=%s", root_server_path);
    @@ -1479,11 +1479,11 @@ static int __init ip_auto_config_setup(c
     			case 4:
     				if ((dp = strchr(ip, '.'))) {
     					*dp++ = '\0';
    -					strlcpy(system_utsname.domainname, dp,
    -						sizeof(system_utsname.domainname));
    +					strlcpy(utsname()->domainname, dp,
    +						sizeof(utsname()->domainname));
     				}
    -				strlcpy(system_utsname.nodename, ip,
    -					sizeof(system_utsname.nodename));
    +				strlcpy(utsname()->nodename, ip,
    +					sizeof(utsname()->nodename));
     				ic_host_name_set = 1;
     				break;
     			case 5:
    diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
    index aa8965e..1d00e41 100644
    --- a/net/sunrpc/clnt.c
    +++ b/net/sunrpc/clnt.c
    @@ -176,10 +176,10 @@ rpc_new_client(struct rpc_xprt *xprt, ch
     	}
     
     	/* save the nodename */
    -	clnt->cl_nodelen = strlen(system_utsname.nodename);
    +	clnt->cl_nodelen = strlen(utsname()->nodename);
     	if (clnt->cl_nodelen > UNX_MAXNODENAME)
     		clnt->cl_nodelen = UNX_MAXNODENAME;
    -	memcpy(clnt->cl_nodename, system_utsname.nodename, clnt->cl_nodelen);
    +	memcpy(clnt->cl_nodename, utsname()->nodename, clnt->cl_nodelen);
     	return clnt;
     
     out_no_auth:
    -- 
    1.3.0
    
    
    
    ^ permalink raw reply related	[flat|nested] 15+ messages in thread

    end of thread, other threads:[~2006-05-01 19:54 UTC | newest]
    
    Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20060407234815.849357768@sergelap>
         [not found] ` <20060408045206.EAA8E19B8FF@sergelap.hallyn.com>
    2006-04-08  7:09   ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Eric W. Biederman
    2006-04-08 20:27     ` Serge E. Hallyn
    2006-04-09  9:44       ` Eric W. Biederman
    2006-04-09 10:14         ` Christoph Hellwig
    2006-04-09 10:25           ` Christoph Hellwig
    2006-04-09 10:36             ` Eric W. Biederman
    2006-04-10 20:39         ` Serge E. Hallyn
    2006-04-10 20:46           ` Serge E. Hallyn
    2006-04-08 23:44     ` Sam Vilain
    2006-04-09  0:12       ` [Devel] " Kir Kolyshkin
    2006-04-09  9:25         ` Eric W. Biederman
    2006-04-10  1:15 ` [PATCH 0/7] uts namespaces: Introduction Sam Vilain
         [not found] ` <20060408045206.EFDD819B901@sergelap.hallyn.com>
    2006-04-10 16:06   ` [Devel] [PATCH 4/7] uts namespaces: implement utsname namespaces Cedric Le Goater
    2006-04-10 20:48     ` Serge E. Hallyn
    2006-05-01 19:53 [PATCH 2/7] uts namespaces: switch to using uts namespaces Serge E. Hallyn
    2006-05-01 19:53 ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Serge E. Hallyn
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox