the same byte as the specified address, 8-15 are in the next byte, etc. I hacked QEMU and tested something like... 1) addr 8126efff offset 7 -- this would be the very last bit in the page. 2) addr 8126efff offset 8 -- this would be the very first bit in the next page. 3) addr 8126efff offset 9 -- this would be the 2nd bit in the next page. I expected (1) to pass while (2) and (3) were rejected, but all 3 were rejected by your check. I think the problem is that BITS_TO_BYTES rounds up. So: BITS_TO_BYTES(0) = 0 BITS_TO_BYTES(1..8) = 1 BITS_TO_BYTES(9..16) = 2 and so on. But your offset check expects 0..7 = 0 8..15 = 1 and so on. AFAICT replacing BITS_TO_BYTES(offset) with (offset / 8) would work.[PATCH 1/2] KVM: s390: Limit adapter indicator access to mapped pageMatthew Rosato undefinedJanosch Frank , kvm@vger.kernel.org undefined undefined undefined undefined undefined undefinedˆ7†ž(