This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] [PATCH] Fix casting usage in xen_create_msi_irq.

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] Fix casting usage in xen_create_msi_irq.
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Wed, 25 Nov 2009 13:15:45 -0500
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>, xiantao.zhang@xxxxxxxxx, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Wed, 25 Nov 2009 10:22:43 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxx>
 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 
        /* 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] Fix casting usage in xen_create_msi_irq., Konrad Rzeszutek Wilk <=