Message ID | 20240214103741.16189-2-roger.pau@citrix.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Fix fallout from IVMD/RMRR unification checks | expand |
On 14.02.2024 11:37, Roger Pau Monne wrote: > mfn_add() doesn't store the incremented value in the parameter, and instead > returns it to the caller. As a result, the loop in iommu_unity_region_ok() > didn't make progress. Fix it by storing the incremented value. > > Fixes: e45801dea17b ('iommu/x86: introduce a generic IVMD/RMRR range validity helper') > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> Should Andrew get a Reported-by here? And surely we want to list the Coverity ID as well? (Happy to take of both while committing, so long as you agree.) Jan
On Wed, Feb 14, 2024 at 12:51:36PM +0100, Jan Beulich wrote: > On 14.02.2024 11:37, Roger Pau Monne wrote: > > mfn_add() doesn't store the incremented value in the parameter, and instead > > returns it to the caller. As a result, the loop in iommu_unity_region_ok() > > didn't make progress. Fix it by storing the incremented value. > > > > Fixes: e45801dea17b ('iommu/x86: introduce a generic IVMD/RMRR range validity helper') > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > Reviewed-by: Jan Beulich <jbeulich@suse.com> > > Should Andrew get a Reported-by here? And surely we want to list the > Coverity ID as well? (Happy to take of both while committing, so long > as you agree.) Oh, I didn't add those here, yes, sure, feel free to add. Thanks, Roger.
diff --git a/xen/drivers/passthrough/x86/iommu.c b/xen/drivers/passthrough/x86/iommu.c index 1c8cf3271a09..a3fa0aef7c37 100644 --- a/xen/drivers/passthrough/x86/iommu.c +++ b/xen/drivers/passthrough/x86/iommu.c @@ -804,7 +804,7 @@ bool __init iommu_unity_region_ok(const char *prefix, mfn_t start, mfn_t end) "%s: [%#" PRI_mfn " ,%#" PRI_mfn "] is not (entirely) in reserved memory\n", prefix, mfn_x(start), mfn_x(end)); - for ( addr = start; mfn_x(addr) <= mfn_x(end); mfn_add(addr, 1) ) + for ( addr = start; mfn_x(addr) <= mfn_x(end); addr = mfn_add(addr, 1) ) { unsigned int type = page_get_ram_type(addr);
mfn_add() doesn't store the incremented value in the parameter, and instead returns it to the caller. As a result, the loop in iommu_unity_region_ok() didn't make progress. Fix it by storing the incremented value. Fixes: e45801dea17b ('iommu/x86: introduce a generic IVMD/RMRR range validity helper') Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- xen/drivers/passthrough/x86/iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)