intel_iommu: Fix incorrect "end" for vtd_address_space_unmap

IOMMUNotifier is with inclusive ranges, so we should check
against (VTD_ADDRESS_SIZE(s->aw_bits) - 1).

Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
[peterx: split from another bigger patch]
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20190624091811.30412-2-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Yan Zhao 2019-06-24 17:18:10 +08:00 committed by Paolo Bonzini
parent 9dc83cd9c3
commit d6d10793dc

View File

@ -3379,12 +3379,12 @@ static void vtd_address_space_unmap(VTDAddressSpace *as, IOMMUNotifier *n)
* VT-d spec), otherwise we need to consider overflow of 64 bits. * VT-d spec), otherwise we need to consider overflow of 64 bits.
*/ */
if (end > VTD_ADDRESS_SIZE(s->aw_bits)) { if (end > VTD_ADDRESS_SIZE(s->aw_bits) - 1) {
/* /*
* Don't need to unmap regions that is bigger than the whole * Don't need to unmap regions that is bigger than the whole
* VT-d supported address space size * VT-d supported address space size
*/ */
end = VTD_ADDRESS_SIZE(s->aw_bits); end = VTD_ADDRESS_SIZE(s->aw_bits) - 1;
} }
assert(start <= end); assert(start <= end);