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