Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / asm-s390 / idals.h
index ad444dc..e82c10e 100644 (file)
@@ -13,7 +13,6 @@
 #ifndef _S390_IDALS_H
 #define _S390_IDALS_H
 
-#include <linux/config.h>
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/types.h>
@@ -35,7 +34,7 @@ static inline int
 idal_is_needed(void *vaddr, unsigned int length)
 {
 #ifdef __s390x__
-       return ((__pa(vaddr) + length) >> 31) != 0;
+       return ((__pa(vaddr) + length - 1) >> 31) != 0;
 #else
        return 0;
 #endif
@@ -218,7 +217,7 @@ idal_buffer_set_cda(struct idal_buffer *ib, struct ccw1 *ccw)
  * Copy count bytes from an idal buffer to user memory
  */
 static inline size_t
-idal_buffer_to_user(struct idal_buffer *ib, void *to, size_t count)
+idal_buffer_to_user(struct idal_buffer *ib, void __user *to, size_t count)
 {
        size_t left;
        int i;
@@ -228,7 +227,7 @@ idal_buffer_to_user(struct idal_buffer *ib, void *to, size_t count)
                left = copy_to_user(to, ib->data[i], IDA_BLOCK_SIZE);
                if (left)
                        return left + count - IDA_BLOCK_SIZE;
-               to = (void *) to + IDA_BLOCK_SIZE;
+               to = (void __user *) to + IDA_BLOCK_SIZE;
                count -= IDA_BLOCK_SIZE;
        }
        return copy_to_user(to, ib->data[i], count);
@@ -238,7 +237,7 @@ idal_buffer_to_user(struct idal_buffer *ib, void *to, size_t count)
  * Copy count bytes from user memory to an idal buffer
  */
 static inline size_t
-idal_buffer_from_user(struct idal_buffer *ib, const void *from, size_t count)
+idal_buffer_from_user(struct idal_buffer *ib, const void __user *from, size_t count)
 {
        size_t left;
        int i;
@@ -248,7 +247,7 @@ idal_buffer_from_user(struct idal_buffer *ib, const void *from, size_t count)
                left = copy_from_user(ib->data[i], from, IDA_BLOCK_SIZE);
                if (left)
                        return left + count - IDA_BLOCK_SIZE;
-               from = (void *) from + IDA_BLOCK_SIZE;
+               from = (void __user *) from + IDA_BLOCK_SIZE;
                count -= IDA_BLOCK_SIZE;
        }
        return copy_from_user(ib->data[i], from, count);