On Tue, Jun 21, 2016 at 1:15 PM, David Vrabel wrote: > On 21/06/16 15:37, Andrey Grodzovsky wrote: > > Current overlap check is evaluating to false a case where a filter field > > is fully contained (proper subset) of a r/w request. > > This change applies classical overlap check instead to include > > all the scenarios. > > Reviewed-by: David Vrabel > > But the commit message could do with a concrete example of an access > that failed. > > David Thanks, will update the commit message and resubmit. Andrey > > > > Related to > https://www.mail-archive.com/xen-devel@lists.xen.org/msg72174.html > > > > Cc: Jan Beulich > > Cc: Boris Ostrovsky > > Cc: stable@vger.kernel.org > > Signed-off-by: Andrey Grodzovsky > > --- > > drivers/xen/xen-pciback/conf_space.c | 6 ++---- > > 1 file changed, 2 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/xen/xen-pciback/conf_space.c > b/drivers/xen/xen-pciback/conf_space.c > > index 8e67336..6a25533 100644 > > --- a/drivers/xen/xen-pciback/conf_space.c > > +++ b/drivers/xen/xen-pciback/conf_space.c > > @@ -183,8 +183,7 @@ int xen_pcibk_config_read(struct pci_dev *dev, int > offset, int size, > > field_start = OFFSET(cfg_entry); > > field_end = OFFSET(cfg_entry) + field->size; > > > > - if ((req_start >= field_start && req_start < field_end) > > - || (req_end > field_start && req_end <= field_end)) { > > + if (req_end > field_start && field_end > req_start) { > > err = conf_space_read(dev, cfg_entry, field_start, > > &tmp_val); > > if (err) > > @@ -230,8 +229,7 @@ int xen_pcibk_config_write(struct pci_dev *dev, int > offset, int size, u32 value) > > field_start = OFFSET(cfg_entry); > > field_end = OFFSET(cfg_entry) + field->size; > > > > - if ((req_start >= field_start && req_start < field_end) > > - || (req_end > field_start && req_end <= field_end)) { > > + if (req_end > field_start && field_end > req_start) { > > tmp_val = 0; > > > > err = xen_pcibk_config_read(dev, field_start, > > > >