There's no point checking ->dev_bus_addr when GNTMAP_device_map isn't
set (and hence the field isn't going to be consumed). And if there is a
mismatch, use the so far unused GNTST_bad_dev_addr error indicator - if
not here, where else would this (so far unused) value be used?
Signed-off-by: Jan Beulich <jbeulich@suse.com>
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1450,9 +1450,9 @@ unmap_common(
op->mfn = act->mfn;
- if ( op->dev_bus_addr &&
+ if ( op->dev_bus_addr && (flags & GNTMAP_device_map) &&
unlikely(op->dev_bus_addr != mfn_to_maddr(act->mfn)) )
- PIN_FAIL(act_release_out, GNTST_general_error,
+ PIN_FAIL(act_release_out, GNTST_bad_dev_addr,
"Bus address doesn't match gntref (%"PRIx64" != %"PRIpaddr")\n",
op->dev_bus_addr, mfn_to_maddr(act->mfn));
Hi Jan, On 30/08/2021 15:26, Jan Beulich wrote: > There's no point checking ->dev_bus_addr when GNTMAP_device_map isn't > set (and hence the field isn't going to be consumed). And if there is a > mismatch, use the so far unused GNTST_bad_dev_addr error indicator - if > not here, where else would this (so far unused) value be used? > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Julien Grall <jgrall@amazon.com> > > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -1450,9 +1450,9 @@ unmap_common( > > op->mfn = act->mfn; > > - if ( op->dev_bus_addr && > + if ( op->dev_bus_addr && (flags & GNTMAP_device_map) && > unlikely(op->dev_bus_addr != mfn_to_maddr(act->mfn)) ) > - PIN_FAIL(act_release_out, GNTST_general_error, > + PIN_FAIL(act_release_out, GNTST_bad_dev_addr, > "Bus address doesn't match gntref (%"PRIx64" != %"PRIpaddr")\n", > op->dev_bus_addr, mfn_to_maddr(act->mfn)); > > Cheers, -- Julien Grall
© 2016 - 2024 Red Hat, Inc.