struct iova_bitmap_map mapped;
 
        /* userspace address of the bitmap */
-       u64 __user *bitmap;
+       u8 __user *bitmap;
 
        /* u64 index that @mapped points to */
        unsigned long mapped_base_index;
 {
        struct iova_bitmap_map *mapped = &bitmap->mapped;
        unsigned long npages;
-       u64 __user *addr;
+       u8 __user *addr;
        long ret;
 
        /*
 
        mapped = &bitmap->mapped;
        mapped->pgshift = __ffs(page_size);
-       bitmap->bitmap = data;
+       bitmap->bitmap = (u8 __user *)data;
        bitmap->mapped_total_index =
                iova_bitmap_offset_to_index(bitmap, length - 1) + 1;
        bitmap->iova = iova;
 
        remaining = bitmap->mapped_total_index - bitmap->mapped_base_index;
        remaining = min_t(unsigned long, remaining,
-                         bytes / sizeof(*bitmap->bitmap));
+                         DIV_ROUND_UP(bytes, sizeof(*bitmap->bitmap)));
 
        return remaining;
 }