X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsparc64%2Fkernel%2Fsys_sparc.c;h=1abfb9c1e46d02a956429d23be0ab51efe9db57a;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=ef419255c11ac0fd0df6350fbd755a8b17571262;hpb=4e76c8a9fa413ccc09d3f7f664183dcce3555d57;p=linux-2.6.git diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c index ef419255c..1abfb9c1e 100644 --- a/arch/sparc64/kernel/sys_sparc.c +++ b/arch/sparc64/kernel/sys_sparc.c @@ -6,7 +6,6 @@ * platform. */ -#include #include #include #include @@ -707,21 +706,23 @@ extern void check_pending(int signum); asmlinkage long 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; }