]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/core/iovec.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[net-next-2.6.git] / net / core / iovec.c
index 1cd98df412dfd52daee9cc9105ceddfea0d87a59..72aceb1fe4fae6c072b12e5acc4c97bc4ed73cf7 100644 (file)
  *     in any case.
  */
 
-int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode)
+long verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode)
 {
-       int size, err, ct;
+       int size, ct;
+       long err;
 
        if (m->msg_namelen) {
                if (mode == VERIFY_READ) {
-                       err = move_addr_to_kernel(m->msg_name, m->msg_namelen,
+                       void __user *namep;
+                       namep = (void __user __force *) m->msg_name;
+                       err = move_addr_to_kernel(namep, m->msg_namelen,
                                                  address);
                        if (err < 0)
                                return err;
@@ -52,7 +55,7 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address,
        }
 
        size = m->msg_iovlen * sizeof(struct iovec);
-       if (copy_from_user(iov, m->msg_iov, size))
+       if (copy_from_user(iov, (void __user __force *) m->msg_iov, size))
                return -EFAULT;
 
        m->msg_iov = iov;