times(2) sys call bug?
Joakim Tjernlund
joakim.tjernlund at transmode.se
Fri Nov 21 20:31:09 EST 2008
On Fri, 2008-11-21 at 10:52 +1100, Paul Mackerras wrote:
> Joakim Tjernlund writes:
>
> > This little hack changes the kernel sys call handling in an crude
> > way and then it works. Apperently the kernel thinks is an error if the
> > syscall returns a value between -_LAST_ERRNO and -1.
>
> Try this patch and let me if it fixes it. If it does I'll push it
> upstream.
>
> Paul.
[SNIP]
> + force_successful_syscall_return();
> return (long) jiffies_64_to_clock_t(get_jiffies_64());
Why is 64 bits ops used here when you only use 32 bits?
BTW, I think time(2) needs this:
diff --git a/kernel/time.c b/kernel/time.c
index 6a08660..1627910 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -37,6 +37,7 @@
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/math64.h>
+#include <linux/ptrace.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
@@ -65,8 +66,9 @@ asmlinkage long sys_time(time_t __user * tloc)
if (tloc) {
if (put_user(i,tloc))
- i = -EFAULT;
+ return -EFAULT;
}
+ force_successful_syscall_return();
return i;
}
More information about the Linuxppc-dev
mailing list