X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsparc%2Fkernel%2Fsys_sparc.c;h=5a220d61b08eecb6e3bcfc67ad4106d962e54fab;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=8318dc6bc59b794432ef9fd75beb0605c398b6fb;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/arch/sparc/kernel/sys_sparc.c b/arch/sparc/kernel/sys_sparc.c index 8318dc6bc..5a220d61b 100644 --- a/arch/sparc/kernel/sys_sparc.c +++ b/arch/sparc/kernel/sys_sparc.c @@ -469,23 +469,21 @@ sys_rt_sigaction(int sig, asmlinkage int sys_getdomainname(char __user *name, int len) { - int nlen, err; + int nlen; + int err = -EFAULT; - if (len < 0) - return -EINVAL; - down_read(&uts_sem); nlen = strlen(vx_new_uts(domainname)) + 1; - err = -EINVAL; - if (nlen > len) - goto out; - err = -EFAULT; - if (!copy_to_user(name, vx_new_uts(domainname), nlen)) - err = 0; - -out: + if (nlen < len) + len = nlen; + if (len > __NEW_UTS_LEN) + goto done; + if (copy_to_user(name, vx_new_uts(domainname), len)) + goto done; + err = 0; +done: up_read(&uts_sem); return err; }