pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/pkgsrc-2020Q4]: pkgsrc/sysutils/xenkernel413 Pullup ticket #6422 - re...
details: https://anonhg.NetBSD.org/pkgsrc/rev/1278c942ad0f
branches: pkgsrc-2020Q4
changeset: 447097:1278c942ad0f
user: bsiegert <bsiegert%pkgsrc.org@localhost>
date: Tue Feb 16 07:57:46 2021 +0000
description:
Pullup ticket #6422 - requested by bouyer
sysutils/xenkernel413: security fix
Revisions pulled up:
- sysutils/xenkernel413/Makefile 1.12
- sysutils/xenkernel413/distinfo 1.9
- sysutils/xenkernel413/patches/patch-XSA355 1.1
- sysutils/xenkernel413/patches/patch-XSA360 1.1
---
Module Name: pkgsrc
Committed By: bouyer
Date: Wed Feb 3 22:27:16 UTC 2021
Modified Files:
pkgsrc/sysutils/xenkernel413: Makefile distinfo
Added Files:
pkgsrc/sysutils/xenkernel413/patches: patch-XSA355 patch-XSA360
Log Message:
Add upstream patches for Xen security advisory 355 and 360.
Bump PKGREVSION
diffstat:
sysutils/xenkernel413/Makefile | 4 +-
sysutils/xenkernel413/distinfo | 4 +-
sysutils/xenkernel413/patches/patch-XSA355 | 25 +++++++
sysutils/xenkernel413/patches/patch-XSA360 | 99 ++++++++++++++++++++++++++++++
4 files changed, 129 insertions(+), 3 deletions(-)
diffs (165 lines):
diff -r 080470f2979b -r 1278c942ad0f sysutils/xenkernel413/Makefile
--- a/sysutils/xenkernel413/Makefile Sun Feb 14 16:15:25 2021 +0000
+++ b/sysutils/xenkernel413/Makefile Tue Feb 16 07:57:46 2021 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.11 2020/12/16 17:15:22 bouyer Exp $
+# $NetBSD: Makefile,v 1.11.2.1 2021/02/16 07:57:46 bsiegert Exp $
VERSION= 4.13.2
-PKGREVISION= 4
+PKGREVISION= 5
DISTNAME= xen-${VERSION}
PKGNAME= xenkernel413-${VERSION}
CATEGORIES= sysutils
diff -r 080470f2979b -r 1278c942ad0f sysutils/xenkernel413/distinfo
--- a/sysutils/xenkernel413/distinfo Sun Feb 14 16:15:25 2021 +0000
+++ b/sysutils/xenkernel413/distinfo Tue Feb 16 07:57:46 2021 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.8 2020/12/16 17:15:22 bouyer Exp $
+$NetBSD: distinfo,v 1.8.2.1 2021/02/16 07:57:46 bsiegert Exp $
SHA1 (xen413/xen-4.13.2.tar.gz) = d514f1de9582c58676420bb2c9fb1c765b44fbff
RMD160 (xen413/xen-4.13.2.tar.gz) = 96727c20bd84338f8c67c7c584c01ef877bbcb18
@@ -7,8 +7,10 @@
SHA1 (patch-Config.mk) = 9372a09efd05c9fbdbc06f8121e411fcb7c7ba65
SHA1 (patch-XSA348) = 70de325f88e004228d2b69b7ae3b4106175be1e0
SHA1 (patch-XSA351) = edb0975ab0aa53d7a0ae7816fe170a081eea695e
+SHA1 (patch-XSA355) = 73ca5dff042a4a54b06af36e6ace7d09673c05f0
SHA1 (patch-XSA358) = 71d5b2e3d19223b986b8572adfbe7355a3a03db6
SHA1 (patch-XSA359) = 4b778a86fffbe0e2a364e1589d573bbc7c27ff99
+SHA1 (patch-XSA360) = c1aa4bdade4d3318bc2dffa83e359f66997b11df
SHA1 (patch-fixpvh) = fd71e150e0b3a461875c02c4419dbfb30548d8f6
SHA1 (patch-xen_Makefile) = 465388d80de414ca3bb84faefa0f52d817e423a6
SHA1 (patch-xen_Rules.mk) = c743dc63f51fc280d529a7d9e08650292c171dac
diff -r 080470f2979b -r 1278c942ad0f sysutils/xenkernel413/patches/patch-XSA355
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/xenkernel413/patches/patch-XSA355 Tue Feb 16 07:57:46 2021 +0000
@@ -0,0 +1,25 @@
+$NetBSD: patch-XSA355,v 1.1.2.2 2021/02/16 07:57:46 bsiegert Exp $
+
+From: Jan Beulich <jbeulich%suse.com@localhost>
+Subject: memory: fix off-by-one in XSA-346 change
+
+The comparison against ARRAY_SIZE() needs to be >= in order to avoid
+overrunning the pages[] array.
+
+This is XSA-355.
+
+Fixes: 5777a3742d88 ("IOMMU: hold page ref until after deferred TLB flush")
+Signed-off-by: Jan Beulich <jbeulich%suse.com@localhost>
+Reviewed-by: Julien Grall <jgrall%amazon.com@localhost>
+
+--- xen/common/memory.c.orig
++++ xen/common/memory.c
+@@ -854,7 +854,7 @@ int xenmem_add_to_physmap(struct domain
+ ++extra.ppage;
+
+ /* Check for continuation if it's not the last iteration. */
+- if ( (++done > ARRAY_SIZE(pages) && extra.ppage) ||
++ if ( (++done >= ARRAY_SIZE(pages) && extra.ppage) ||
+ (xatp->size > done && hypercall_preempt_check()) )
+ {
+ rc = start + done;
diff -r 080470f2979b -r 1278c942ad0f sysutils/xenkernel413/patches/patch-XSA360
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/xenkernel413/patches/patch-XSA360 Tue Feb 16 07:57:46 2021 +0000
@@ -0,0 +1,99 @@
+$NetBSD: patch-XSA360,v 1.1.2.2 2021/02/16 07:57:46 bsiegert Exp $
+
+From: Roger Pau Monne <roger.pau%citrix.com@localhost>
+Subject: x86/dpci: do not remove pirqs from domain tree on unbind
+
+A fix for a previous issue removed the pirqs from the domain tree when
+they are unbound in order to prevent shared pirqs from triggering a
+BUG_ON in __pirq_guest_unbind if they are unbound multiple times. That
+caused free_domain_pirqs to no longer unmap the pirqs because they
+are gone from the domain pirq tree, thus leaving stale unbound pirqs
+after domain destruction if the domain had mapped dpci pirqs after
+shutdown.
+
+Take a different approach to fix the original issue, instead of
+removing the pirq from d->pirq_tree clear the flags of the dpci pirq
+struct to signal that the pirq is now unbound. This prevents calling
+pirq_guest_unbind multiple times for the same pirq without having to
+remove it from the domain pirq tree.
+
+This is XSA-360.
+
+Fixes: 5b58dad089 ('x86/pass-through: avoid double IRQ unbind during domain cleanup')
+Signed-off-by: Roger Pau Monné <roger.pau%citrix.com@localhost>
+Reviewed-by: Jan Beulich <jbeulich%suse.com@localhost>
+
+--- xen/arch/x86/irq.c.orig
++++ xen/arch/x86/irq.c
+@@ -1331,7 +1331,7 @@ void (pirq_cleanup_check)(struct pirq *p
+ }
+
+ if ( radix_tree_delete(&d->pirq_tree, pirq->pirq) != pirq )
+- BUG_ON(!d->is_dying);
++ BUG();
+ }
+
+ /* Flush all ready EOIs from the top of this CPU's pending-EOI stack. */
+--- xen/drivers/passthrough/pci.c.orig
++++ xen/drivers/passthrough/pci.c
+@@ -862,6 +862,10 @@ static int pci_clean_dpci_irq(struct dom
+ {
+ struct dev_intx_gsi_link *digl, *tmp;
+
++ if ( !pirq_dpci->flags )
++ /* Already processed. */
++ return 0;
++
+ pirq_guest_unbind(d, dpci_pirq(pirq_dpci));
+
+ if ( pt_irq_need_timer(pirq_dpci->flags) )
+@@ -872,15 +876,10 @@ static int pci_clean_dpci_irq(struct dom
+ list_del(&digl->list);
+ xfree(digl);
+ }
++ /* Note the pirq is now unbound. */
++ pirq_dpci->flags = 0;
+
+- radix_tree_delete(&d->pirq_tree, dpci_pirq(pirq_dpci)->pirq);
+-
+- if ( !pt_pirq_softirq_active(pirq_dpci) )
+- return 0;
+-
+- domain_get_irq_dpci(d)->pending_pirq_dpci = pirq_dpci;
+-
+- return -ERESTART;
++ return pt_pirq_softirq_active(pirq_dpci) ? -ERESTART : 0;
+ }
+
+ static int pci_clean_dpci_irqs(struct domain *d)
+@@ -897,18 +896,8 @@ static int pci_clean_dpci_irqs(struct do
+ hvm_irq_dpci = domain_get_irq_dpci(d);
+ if ( hvm_irq_dpci != NULL )
+ {
+- int ret = 0;
+-
+- if ( hvm_irq_dpci->pending_pirq_dpci )
+- {
+- if ( pt_pirq_softirq_active(hvm_irq_dpci->pending_pirq_dpci) )
+- ret = -ERESTART;
+- else
+- hvm_irq_dpci->pending_pirq_dpci = NULL;
+- }
++ int ret = pt_pirq_iterate(d, pci_clean_dpci_irq, NULL);
+
+- if ( !ret )
+- ret = pt_pirq_iterate(d, pci_clean_dpci_irq, NULL);
+ if ( ret )
+ {
+ spin_unlock(&d->event_lock);
+--- xen/include/asm-x86/hvm/irq.h.orig
++++ xen/include/asm-x86/hvm/irq.h
+@@ -160,8 +160,6 @@ struct hvm_irq_dpci {
+ DECLARE_BITMAP(isairq_map, NR_ISAIRQS);
+ /* Record of mapped Links */
+ uint8_t link_cnt[NR_LINK];
+- /* Clean up: Entry with a softirq invocation pending / in progress. */
+- struct hvm_pirq_dpci *pending_pirq_dpci;
+ };
+
+ /* Machine IRQ to guest device/intx mapping. */
Home |
Main Index |
Thread Index |
Old Index