patch-2.3.45 linux/arch/ppc/kernel/syscalls.c
Next file: linux/arch/ppc/kernel/traps.c
Previous file: linux/arch/ppc/kernel/smp.c
Back to the patch index
Back to the overall index
- Lines: 32
- Date:
Sun Feb 13 10:47:01 2000
- Orig file:
v2.3.44/linux/arch/ppc/kernel/syscalls.c
- Orig date:
Thu Feb 10 17:11:05 2000
diff -u --recursive --new-file v2.3.44/linux/arch/ppc/kernel/syscalls.c linux/arch/ppc/kernel/syscalls.c
@@ -252,14 +252,13 @@
asmlinkage int sys_uname(struct old_utsname * name)
{
- int err;
-
- if (!name)
- return -EFAULT;
+ int err = -EFAULT;
+
down_read(&uts_sem);
- err = copy_to_user(name, &system_utsname, sizeof (*name));
- up(&uts_sem);
- return err ? -EFAULT : 0;
+ if (name && !copy_to_user(name, &system_utsname, sizeof (*name)))
+ err = 0;
+ up_read(&uts_sem);
+ return err;
}
asmlinkage int sys_olduname(struct oldold_utsname * name)
@@ -282,8 +281,8 @@
error -= __put_user(0,name->version+__OLD_UTS_LEN);
error -= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN);
error = __put_user(0,name->machine+__OLD_UTS_LEN);
- error = error ? -EFAULT : 0;
- up(&uts_sem);
+ up_read(&uts_sem);
+ error = error ? -EFAULT : 0;
return error;
}
FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen (who was at: [email protected])