aboutsummaryrefslogtreecommitdiffstats
path: root/main/xen/xsa237-5.patch
diff options
context:
space:
mode:
authorDaniel Sabogal <dsabogalcc@gmail.com>2017-10-23 13:36:03 -0400
committerNatanael Copa <ncopa@alpinelinux.org>2017-10-23 20:14:55 +0000
commita977efc91e7ab0455214c2803a0947f439f9e221 (patch)
tree3c3e99f5b7e7ede311fa9a6b9b9303f59d0a0fc7 /main/xen/xsa237-5.patch
parent18a6777daafbe3fd88dbaf2551e6f19185683693 (diff)
downloadaports-a977efc91e7ab0455214c2803a0947f439f9e221.tar.bz2
aports-a977efc91e7ab0455214c2803a0947f439f9e221.tar.xz
main/xen: security fixes (xsa237 - xsa244)
CVE-2017-15590 XSA-237 XSA-238 CVE-2017-15589 XSA-239 CVE-2017-15595 XSA-240 CVE-2017-15588 XSA-241 CVE-2017-15593 XSA-242 CVE-2017-15592 XSA-243 CVE-2017-15594 XSA-244
Diffstat (limited to 'main/xen/xsa237-5.patch')
-rw-r--r--main/xen/xsa237-5.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/main/xen/xsa237-5.patch b/main/xen/xsa237-5.patch
new file mode 100644
index 0000000000..155ba15d08
--- /dev/null
+++ b/main/xen/xsa237-5.patch
@@ -0,0 +1,37 @@
+From: Jan Beulich <jbeulich@suse.com>
+Subject: 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 <jbeulich@suse.com>
+Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
+
+--- a/xen/arch/x86/irq.c
++++ b/xen/arch/x86/irq.c
+@@ -2143,7 +2143,8 @@ int unmap_domain_pirq(struct domain *d,
+ 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;
+
+--- a/xen/xsm/flask/hooks.c
++++ b/xen/xsm/flask/hooks.c
+@@ -918,8 +918,8 @@ static int flask_unmap_domain_msi (struc
+ 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;