default:
                BUG();
        }
-       r = vgic_find_range(ranges, &mmio, offset);
+       r = vgic_find_range(ranges, 4, offset);
 
        if (unlikely(!r || !r->handle_mmio)) {
                ret = -ENXIO;
 
 
 const
 struct vgic_io_range *vgic_find_range(const struct vgic_io_range *ranges,
-                                     struct kvm_exit_mmio *mmio,
-                                     phys_addr_t offset)
+                                     int len, gpa_t offset)
 {
-       const struct vgic_io_range *r = ranges;
-
-       while (r->len) {
-               if (offset >= r->base &&
-                   (offset + mmio->len) <= (r->base + r->len))
-                       return r;
-               r++;
+       while (ranges->len) {
+               if (offset >= ranges->base &&
+                   (offset + len) <= (ranges->base + ranges->len))
+                       return ranges;
+               ranges++;
        }
 
        return NULL;
        unsigned long offset;
 
        offset = mmio->phys_addr - mmio_base;
-       range = vgic_find_range(ranges, mmio, offset);
+       range = vgic_find_range(ranges, mmio->len, offset);
        if (unlikely(!range || !range->handle_mmio)) {
                pr_warn("Unhandled access %d %08llx %d\n",
                        mmio->is_write, mmio->phys_addr, mmio->len);
 
 int vgic_has_attr_regs(const struct vgic_io_range *ranges, phys_addr_t offset)
 {
-       struct kvm_exit_mmio dev_attr_mmio;
-
-       dev_attr_mmio.len = 4;
-       if (vgic_find_range(ranges, &dev_attr_mmio, offset))
+       if (vgic_find_range(ranges, 4, offset))
                return 0;
        else
                return -ENXIO;
 
 
 const
 struct vgic_io_range *vgic_find_range(const struct vgic_io_range *ranges,
-                                     struct kvm_exit_mmio *mmio,
-                                     phys_addr_t offset);
+                                     int len, gpa_t offset);
 
 bool vgic_handle_mmio_range(struct kvm_vcpu *vcpu, struct kvm_run *run,
                            struct kvm_exit_mmio *mmio,