Konrad Rzeszutek Wilk
2009-Nov-25 18:15 UTC
[Xen-devel] [PATCH] Fix casting usage in xen_create_msi_irq.
rc is int, domid is unsigned int. The casting of negatives values to domid results in wrap where -16 becomes 0xfff0. If we check for rc (instead of domid) and find a negative value (which you can''t with domid) then we will default to DOMID_SELF - which is exactly what this line was intending to do earlier but failed to do. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> --- drivers/xen/events.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/xen/events.c b/drivers/xen/events.c index adc8c09..67598bc 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c @@ -678,7 +678,7 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, /* Walk the XenStore keys to see if the device is assigned to any * domain. If so, extract the domain id. */ domid = rc = xenbus_walk( "/local/domain/0", get_domid_for_dev, dev); - if (domid <= 0) + if (rc <= 0) domid = DOMID_SELF; memset(&map_irq, 0, sizeof(map_irq)); -- 1.6.2.5 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Zhang, Xiantao
2009-Dec-03 05:29 UTC
[Xen-devel] RE: [PATCH] Fix casting usage in xen_create_msi_irq.
Jeremy, Seems this fix is still not in xen/master branch, pv-ops dom0 is blocked to enable SR-IOV devices without it. Could you merge it into xen/master branch ? Acked-by: Xiantao Zhang <xiantao.zhang@intel.com> Xiantao Konrad Rzeszutek Wilk wrote:> rc is int, domid is unsigned int. The casting of negatives values > to domid results in wrap where -16 becomes 0xfff0. If we check > for rc (instead of domid) and find a negative value (which you can''t > with domid) then we will default to DOMID_SELF - which is exactly > what this line was intending to do earlier but failed to do. > > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > --- > drivers/xen/events.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > index adc8c09..67598bc 100644 > --- a/drivers/xen/events.c > +++ b/drivers/xen/events.c > @@ -678,7 +678,7 @@ int xen_create_msi_irq(struct pci_dev *dev, > struct msi_desc *msidesc, /* Walk the XenStore keys to see if the > device is assigned to any * domain. If so, extract the domain id. > */ domid = rc = xenbus_walk( "/local/domain/0", get_domid_for_dev, > dev); - if (domid <= 0) > + if (rc <= 0) > domid = DOMID_SELF; > > memset(&map_irq, 0, sizeof(map_irq));_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel