[MIPS] Fix AP/SP to work in the reality of modern kernels.
authorRalf Baechle <ralf@linux-mips.org>
Wed, 25 Apr 2007 14:08:57 +0000 (15:08 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 27 Apr 2007 15:20:23 +0000 (16:20 +0100)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/kspd.c
arch/mips/kernel/rtlx.c

index 29eadd404fa5fa5c9b1d787bac2335b62908b6a2..c6580018c94b3b5a7bf690046bc58ee86a29ee41 100644 (file)
@@ -17,6 +17,7 @@
  */
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/sched.h>
 #include <linux/unistd.h>
 #include <linux/file.h>
 #include <linux/fs.h>
@@ -198,7 +199,6 @@ void sp_work_handle_request(void)
        int cmd;
 
        char *vcwd;
-       mm_segment_t old_fs;
        int size;
 
        ret.retval = -1;
@@ -241,8 +241,6 @@ void sp_work_handle_request(void)
                if ((ret.retval = sp_syscall(__NR_gettimeofday, (int)&tv,
                                             (int)&tz, 0,0)) == 0)
                ret.retval = tv.tv_sec;
-
-               ret.errno = errno;
                break;
 
        case MTSP_SYSCALL_EXIT:
@@ -279,7 +277,6 @@ void sp_work_handle_request(void)
                if (cmd >= 0) {
                        ret.retval = sp_syscall(cmd, generic.arg0, generic.arg1,
                                                generic.arg2, generic.arg3);
-                       ret.errno = errno;
                } else
                        printk(KERN_WARNING
                               "KSPD: Unknown SP syscall number %d\n", sc.cmd);
index e6e3047151a6715d61fa1b1875d47b9d73fdb0b9..bfc8ca168f8337fc5c74add679a7825b4f119520 100644 (file)
@@ -289,7 +289,7 @@ unsigned int rtlx_write_poll(int index)
        return write_spacefree(chan->rt_read, chan->rt_write, chan->buffer_size);
 }
 
-ssize_t rtlx_read(int index, void __user *buff, size_t count, int user)
+ssize_t rtlx_read(int index, void __user *buff, size_t count)
 {
        size_t lx_write, fl = 0L;
        struct rtlx_channel *lx;
@@ -331,9 +331,10 @@ out:
        return count;
 }
 
-ssize_t rtlx_write(int index, const void __user *buffer, size_t count, int user)
+ssize_t rtlx_write(int index, const void __user *buffer, size_t count)
 {
        struct rtlx_channel *rt;
+       unsigned long failed;
        size_t rt_read;
        size_t fl;
 
@@ -363,7 +364,7 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count, int user)
        }
 
 out:
-       count -= cailed;
+       count -= failed;
 
        smp_wmb();
        rt->rt_write = (rt->rt_write + count) % rt->buffer_size;