From 6f17f5c43a3bd28d27ed8133b2bf513e2eab7d59 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 12 Oct 2017 14:37:56 +0200 Subject: [PATCH] x86/FLASK: fix unmap-domain-IRQ XSM hook The caller and the FLASK implementation of xsm_unmap_domain_irq() disagreed about what the "data" argument points to in the MSI case: Change both sides to pass/take a PCI device. This is part of XSA-237. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- xen/arch/x86/irq.c | 3 ++- xen/xsm/flask/hooks.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 94c1267cef..c0ab2992ee 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2154,7 +2154,8 @@ int unmap_domain_pirq(struct domain *d, int pirq) nr = msi_desc->msi.nvec; } - ret = xsm_unmap_domain_irq(XSM_HOOK, d, irq, msi_desc); + ret = xsm_unmap_domain_irq(XSM_HOOK, d, irq, + msi_desc ? msi_desc->dev : NULL); if ( ret ) goto done; diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 7b005af834..f01b4cfaaa 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -947,8 +947,8 @@ static int flask_unmap_domain_msi (struct domain *d, int irq, void *data, u32 *sid, struct avc_audit_data *ad) { #ifdef CONFIG_HAS_PCI - struct msi_info *msi = data; - u32 machine_bdf = (msi->seg << 16) | (msi->bus << 8) | msi->devfn; + const struct pci_dev *pdev = data; + u32 machine_bdf = (pdev->seg << 16) | (pdev->bus << 8) | pdev->devfn; AVC_AUDIT_DATA_INIT(ad, DEV); ad->device = machine_bdf; -- 2.30.2