VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / arch / sparc64 / solaris / timod.c
index feebc82..24de506 100644 (file)
@@ -219,7 +219,7 @@ static void timod_ok(unsigned int fd, int prim)
        SOLD("done");
 }
 
-static int timod_optmgmt(unsigned int fd, int flag, char *opt_buf, int opt_len, int do_ret)
+static int timod_optmgmt(unsigned int fd, int flag, char __user *opt_buf, int opt_len, int do_ret)
 {
        int error, failed;
        int ret_space, ret_len;
@@ -337,8 +337,8 @@ static int timod_optmgmt(unsigned int fd, int flag, char *opt_buf, int opt_len,
        return 0;
 }
 
-int timod_putmsg(unsigned int fd, char *ctl_buf, int ctl_len,
-                       char *data_buf, int data_len, int flags)
+int timod_putmsg(unsigned int fd, char __user *ctl_buf, int ctl_len,
+                       char __user *data_buf, int data_len, int flags)
 {
        int ret, error, terror;
        char *buf;
@@ -347,15 +347,15 @@ int timod_putmsg(unsigned int fd, char *ctl_buf, int ctl_len,
        struct sol_socket_struct *sock;
        mm_segment_t old_fs = get_fs();
        long args[6];
-       int (*sys_socketcall)(int, unsigned long *) =
-               (int (*)(int, unsigned long *))SYS(socketcall);
-       int (*sys_sendto)(int, void *, size_t, unsigned, struct sockaddr *, int) =
-               (int (*)(int, void *, size_t, unsigned, struct sockaddr *, int))SYS(sendto);
+       int (*sys_socketcall)(int, unsigned long __user *) =
+               (int (*)(int, unsigned long __user *))SYS(socketcall);
+       int (*sys_sendto)(int, void __user *, size_t, unsigned, struct sockaddr __user *, int) =
+               (int (*)(int, void __user *, size_t, unsigned, struct sockaddr __user *, int))SYS(sendto);
        filp = current->files->fd[fd];
        ino = filp->f_dentry->d_inode;
        sock = (struct sol_socket_struct *)filp->private_data;
        SOLD("entry");
-       if (get_user(ret, (int *)A(ctl_buf)))
+       if (get_user(ret, (int __user *)A(ctl_buf)))
                return -EFAULT;
        switch (ret) {
        case T_BIND_REQ:
@@ -596,7 +596,7 @@ int timod_putmsg(unsigned int fd, char *ctl_buf, int ctl_len,
                        printk("\n");
                }
 #endif         
-               err = sys_sendto(fd, data_buf, data_len, 0, req.DEST_length > 0 ? (struct sockaddr*)(ctl_buf+req.DEST_offset) : NULL, req.DEST_length);
+               err = sys_sendto(fd, data_buf, data_len, 0, req.DEST_length > 0 ? (struct sockaddr __user *)(ctl_buf+req.DEST_offset) : NULL, req.DEST_length);
                if (err == data_len)
                        return 0;
                if(err >= 0) {
@@ -613,8 +613,8 @@ int timod_putmsg(unsigned int fd, char *ctl_buf, int ctl_len,
        return -EINVAL;
 }
 
-int timod_getmsg(unsigned int fd, char *ctl_buf, int ctl_maxlen, s32 *ctl_len,
-                       char *data_buf, int data_maxlen, s32 *data_len, int *flags_p)
+int timod_getmsg(unsigned int fd, char __user *ctl_buf, int ctl_maxlen, s32 __user *ctl_len,
+                       char __user *data_buf, int data_maxlen, s32 __user *data_len, int *flags_p)
 {
        int error;
        int oldflags;
@@ -624,11 +624,11 @@ int timod_getmsg(unsigned int fd, char *ctl_buf, int ctl_maxlen, s32 *ctl_len,
        struct T_unitdata_ind udi;
        mm_segment_t old_fs = get_fs();
        long args[6];
-       char *tmpbuf;
+       char __user *tmpbuf;
        int tmplen;
-       int (*sys_socketcall)(int, unsigned long *) =
-               (int (*)(int, unsigned long *))SYS(socketcall);
-       int (*sys_recvfrom)(int, void *, size_t, unsigned, struct sockaddr *, int *);
+       int (*sys_socketcall)(int, unsigned long __user *) =
+               (int (*)(int, unsigned long __user *))SYS(socketcall);
+       int (*sys_recvfrom)(int, void __user *, size_t, unsigned, struct sockaddr __user *, int __user *);
        
        SOLD("entry");
        SOLDD(("%u %p %d %p %p %d %p %d\n", fd, ctl_buf, ctl_maxlen, ctl_len, data_buf, data_maxlen, data_len, *flags_p));
@@ -808,8 +808,8 @@ int timod_getmsg(unsigned int fd, char *ctl_buf, int ctl_maxlen, s32 *ctl_len,
        oldflags = filp->f_flags;
        filp->f_flags |= O_NONBLOCK;
        SOLD("calling recvfrom");
-       sys_recvfrom = (int (*)(int, void *, size_t, unsigned, struct sockaddr *, int *))SYS(recvfrom);
-       error = sys_recvfrom(fd, data_buf, data_maxlen, 0, (struct sockaddr*)tmpbuf, ctl_len);
+       sys_recvfrom = (int (*)(int, void __user *, size_t, unsigned, struct sockaddr __user *, int __user *))SYS(recvfrom);
+       error = sys_recvfrom(fd, data_buf, data_maxlen, 0, (struct sockaddr __user *)tmpbuf, ctl_len);
        filp->f_flags = oldflags;
        if (error < 0)
                return error;
@@ -838,9 +838,10 @@ asmlinkage int solaris_getmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
 {
        struct file *filp;
        struct inode *ino;
-       struct strbuf *ctlptr, *datptr;
+       struct strbuf __user *ctlptr;
+       struct strbuf __user *datptr;
        struct strbuf ctl, dat;
-       int *flgptr;
+       int __user *flgptr;
        int flags;
        int error = -EBADF;
 
@@ -857,9 +858,9 @@ asmlinkage int solaris_getmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
        if (!ino->i_sock)
                goto out;
 
-       ctlptr = (struct strbuf *)A(arg1);
-       datptr = (struct strbuf *)A(arg2);
-       flgptr = (int *)A(arg3);
+       ctlptr = (struct strbuf __user *)A(arg1);
+       datptr = (struct strbuf __user *)A(arg2);
+       flgptr = (int __user *)A(arg3);
 
        error = -EFAULT;
 
@@ -891,8 +892,8 @@ asmlinkage int solaris_getmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
                goto out;
        }
 
-       error = timod_getmsg(fd,(char*)A(ctl.buf),ctl.maxlen,&ctlptr->len,
-                               (char*)A(dat.buf),dat.maxlen,&datptr->len,&flags);
+       error = timod_getmsg(fd,A(ctl.buf),ctl.maxlen,&ctlptr->len,
+                               A(dat.buf),dat.maxlen,&datptr->len,&flags);
 
        if (!error && put_user(flags,flgptr))
                error = -EFAULT;
@@ -906,7 +907,8 @@ asmlinkage int solaris_putmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
 {
        struct file *filp;
        struct inode *ino;
-       struct strbuf *ctlptr, *datptr;
+       struct strbuf __user *ctlptr;
+       struct strbuf __user *datptr;
        struct strbuf ctl, dat;
        int flags = (int) arg3;
        int error = -EBADF;
@@ -925,8 +927,8 @@ asmlinkage int solaris_putmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
                (imajor(ino) != 30 || iminor(ino) != 1))
                goto out;
 
-       ctlptr = (struct strbuf *)A(arg1);
-       datptr = (struct strbuf *)A(arg2);
+       ctlptr = A(arg1);
+       datptr = A(arg2);
 
        error = -EFAULT;
 
@@ -950,8 +952,8 @@ asmlinkage int solaris_putmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
                dat.buf = 0;
        }
 
-       error = timod_putmsg(fd,(char*)A(ctl.buf),ctl.len,
-                               (char*)A(dat.buf),dat.len,flags);
+       error = timod_putmsg(fd,A(ctl.buf),ctl.len,
+                               A(dat.buf),dat.len,flags);
 out:
        unlock_kernel();
        SOLD("done");