pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/sysutils Update xenkernel413 and xentools413 to 4.13.2...
details: https://anonhg.NetBSD.org/pkgsrc/rev/0f4112d46e02
branches: trunk
changeset: 441598:0f4112d46e02
user: bouyer <bouyer%pkgsrc.org@localhost>
date: Fri Nov 06 21:45:49 2020 +0000
description:
Update xenkernel413 and xentools413 to 4.13.2. This includes fixes for
XSA up to XSA347, and an improved fix for XSA 286.
diffstat:
sysutils/xenkernel413/Makefile | 6 +-
sysutils/xenkernel413/distinfo | 29 +-
sysutils/xenkernel413/patches/patch-XSA286 | 716 -----------------------
sysutils/xenkernel413/patches/patch-XSA317 | 52 -
sysutils/xenkernel413/patches/patch-XSA319 | 29 -
sysutils/xenkernel413/patches/patch-XSA320 | 334 ----------
sysutils/xenkernel413/patches/patch-XSA321 | 584 -------------------
sysutils/xenkernel413/patches/patch-XSA328 | 212 ------
sysutils/xenkernel413/patches/patch-XSA333 | 41 -
sysutils/xenkernel413/patches/patch-XSA334 | 53 -
sysutils/xenkernel413/patches/patch-XSA336 | 285 ---------
sysutils/xenkernel413/patches/patch-XSA337 | 270 --------
sysutils/xenkernel413/patches/patch-XSA338 | 44 -
sysutils/xenkernel413/patches/patch-XSA339 | 78 --
sysutils/xenkernel413/patches/patch-XSA340 | 67 --
sysutils/xenkernel413/patches/patch-XSA342 | 147 ----
sysutils/xenkernel413/patches/patch-XSA343 | 888 -----------------------------
sysutils/xenkernel413/patches/patch-XSA344 | 335 ----------
sysutils/xenkernel413/patches/patch-XSA345 | 413 -------------
sysutils/xenkernel413/patches/patch-XSA346 | 256 --------
sysutils/xenkernel413/patches/patch-XSA347 | 282 ---------
sysutils/xentools413/Makefile | 6 +-
sysutils/xentools413/distinfo | 11 +-
sysutils/xentools413/patches/patch-XSA335 | 86 --
24 files changed, 16 insertions(+), 5208 deletions(-)
diffs (truncated from 5349 to 300 lines):
diff -r f91bf0e6daac -r 0f4112d46e02 sysutils/xenkernel413/Makefile
--- a/sysutils/xenkernel413/Makefile Fri Nov 06 21:38:30 2020 +0000
+++ b/sysutils/xenkernel413/Makefile Fri Nov 06 21:45:49 2020 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.6 2020/10/21 09:04:10 bouyer Exp $
+# $NetBSD: Makefile,v 1.7 2020/11/06 21:45:49 bouyer Exp $
-VERSION= 4.13.1
-PKGREVISION= 3
+VERSION= 4.13.2
+#PKGREVISION= 0
DISTNAME= xen-${VERSION}
PKGNAME= xenkernel413-${VERSION}
CATEGORIES= sysutils
diff -r f91bf0e6daac -r 0f4112d46e02 sysutils/xenkernel413/distinfo
--- a/sysutils/xenkernel413/distinfo Fri Nov 06 21:38:30 2020 +0000
+++ b/sysutils/xenkernel413/distinfo Fri Nov 06 21:45:49 2020 +0000
@@ -1,29 +1,10 @@
-$NetBSD: distinfo,v 1.4 2020/10/21 09:04:10 bouyer Exp $
+$NetBSD: distinfo,v 1.5 2020/11/06 21:45:49 bouyer Exp $
-SHA1 (xen413/xen-4.13.1.tar.gz) = 194a314171120dad0b3c5433104c92343ec884ba
-RMD160 (xen413/xen-4.13.1.tar.gz) = 29cfb90b9da0ede99c1228b8e5964a99547c205d
-SHA512 (xen413/xen-4.13.1.tar.gz) = b56d20704155d98d803496cba83eb928e0f986a750831cd5600fc88d0ae772fe1456571654375054043d2da8daca255cc98385ebf08b1b1a75ecf7f4b7a0ee90
-Size (xen413/xen-4.13.1.tar.gz) = 39024612 bytes
+SHA1 (xen413/xen-4.13.2.tar.gz) = d514f1de9582c58676420bb2c9fb1c765b44fbff
+RMD160 (xen413/xen-4.13.2.tar.gz) = 96727c20bd84338f8c67c7c584c01ef877bbcb18
+SHA512 (xen413/xen-4.13.2.tar.gz) = cd3092281c97e9421e303aa288aac04dcccd5536ba7c0ff4d51fbf3d07b5ffacfe3456ba06f5cf63577dafbf8cf3a5d9825ceb5e9ef8ca1427900cc3e57b50a3
+Size (xen413/xen-4.13.2.tar.gz) = 39037826 bytes
SHA1 (patch-Config.mk) = 9372a09efd05c9fbdbc06f8121e411fcb7c7ba65
-SHA1 (patch-XSA286) = 93bf307619151cd4389db95557d8af0e1b29ea0a
-SHA1 (patch-XSA317) = 3a3e7bf8f115bebaf56001afcf68c2bd501c00a5
-SHA1 (patch-XSA319) = 4954bdc849666e1c735c3281256e4850c0594ee8
-SHA1 (patch-XSA320) = db978d49298660fb750dc6b50c2a1ddd099c8fa0
-SHA1 (patch-XSA321) = 257dfc7e15a63b2149a9b9aed4e6e3b10f01f551
-SHA1 (patch-XSA328) = eb86e10b7279318006a8593561e3932b76adbc0c
-SHA1 (patch-XSA333) = 47660b70b2c998436587600bb9a25c2f494afa49
-SHA1 (patch-XSA334) = d11e778775314dff561d67da629d71704cc0bd8c
-SHA1 (patch-XSA336) = d3cfcb7a9800475967417e4b5b47698ed6a6b5a5
-SHA1 (patch-XSA337) = 3fcfab120c9b4c5e4dc55a4138f68aceaed9bebf
-SHA1 (patch-XSA338) = 0adcebec2c25a389155a10de84bf999ff2e5425d
-SHA1 (patch-XSA339) = 4f97076bda8150d1b1c68f6000d563f3c3314c02
-SHA1 (patch-XSA340) = 23888acfe25fc82ff085fa9acfbb36c156a15bc3
-SHA1 (patch-XSA342) = a61c4e28a8c8219b88e3bab534a109b2b29e2cc3
-SHA1 (patch-XSA343) = f4656c110229fdc63b57b8af76fc6e60386ef3cd
-SHA1 (patch-XSA344) = 616fb56027ee289bb3b7b061e2f9f6f6d81e358b
-SHA1 (patch-XSA345) = 5fd7f8c04c6fd81c3ba49c01063075325f2b4779
-SHA1 (patch-XSA346) = 834b2c3b89aa2569a61ee990000592bc0a044999
-SHA1 (patch-XSA347) = ffb4a0fa152196e26c34f733eeff62c02b79cf49
SHA1 (patch-xen_Makefile) = 465388d80de414ca3bb84faefa0f52d817e423a6
SHA1 (patch-xen_Rules.mk) = c743dc63f51fc280d529a7d9e08650292c171dac
SHA1 (patch-xen_arch_x86_Rules.mk) = 0bedfc53a128a87b6a249ae04fbdf6a053bfb70b
diff -r f91bf0e6daac -r 0f4112d46e02 sysutils/xenkernel413/patches/patch-XSA286
--- a/sysutils/xenkernel413/patches/patch-XSA286 Fri Nov 06 21:38:30 2020 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,716 +0,0 @@
-$NetBSD: patch-XSA286,v 1.1 2020/10/21 09:04:10 bouyer Exp $
-
-From: Jan Beulich <jbeulich%suse.com@localhost>
-Subject: x86/mm: split L4 and L3 parts of the walk out of do_page_walk()
-
-The L3 one at least is going to be re-used by a subsequent patch, and
-splitting the L4 one then as well seems only natural.
-
-This is part of XSA-286.
-
-Signed-off-by: Jan Beulich <jbeulich%suse.com@localhost>
-Reviewed-by: George Dunlap <george.dunlap%citrix.com@localhost>
-Reviewed-by: Andrew Cooper <andrew.cooper3%citrix.com@localhost>
-
-diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
-index db4f035d8d..b1582b56fb 100644
---- xen/arch/x86/x86_64/mm.c.orig
-+++ xen/arch/x86/x86_64/mm.c
-@@ -44,26 +44,47 @@ unsigned int __read_mostly m2p_compat_vstart = __HYPERVISOR_COMPAT_VIRT_START;
-
- l2_pgentry_t *compat_idle_pg_table_l2;
-
--void *do_page_walk(struct vcpu *v, unsigned long addr)
-+static l4_pgentry_t page_walk_get_l4e(pagetable_t root, unsigned long addr)
- {
-- unsigned long mfn = pagetable_get_pfn(v->arch.guest_table);
-- l4_pgentry_t l4e, *l4t;
-- l3_pgentry_t l3e, *l3t;
-- l2_pgentry_t l2e, *l2t;
-- l1_pgentry_t l1e, *l1t;
-+ unsigned long mfn = pagetable_get_pfn(root);
-+ l4_pgentry_t *l4t, l4e;
-
-- if ( !is_pv_vcpu(v) || !is_canonical_address(addr) )
-- return NULL;
-+ if ( !is_canonical_address(addr) )
-+ return l4e_empty();
-
- l4t = map_domain_page(_mfn(mfn));
- l4e = l4t[l4_table_offset(addr)];
- unmap_domain_page(l4t);
-+
-+ return l4e;
-+}
-+
-+static l3_pgentry_t page_walk_get_l3e(pagetable_t root, unsigned long addr)
-+{
-+ l4_pgentry_t l4e = page_walk_get_l4e(root, addr);
-+ l3_pgentry_t *l3t, l3e;
-+
- if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
-- return NULL;
-+ return l3e_empty();
-
- l3t = map_l3t_from_l4e(l4e);
- l3e = l3t[l3_table_offset(addr)];
- unmap_domain_page(l3t);
-+
-+ return l3e;
-+}
-+
-+void *do_page_walk(struct vcpu *v, unsigned long addr)
-+{
-+ l3_pgentry_t l3e;
-+ l2_pgentry_t l2e, *l2t;
-+ l1_pgentry_t l1e, *l1t;
-+ unsigned long mfn;
-+
-+ if ( !is_pv_vcpu(v) )
-+ return NULL;
-+
-+ l3e = page_walk_get_l3e(v->arch.guest_table, addr);
- mfn = l3e_get_pfn(l3e);
- if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) )
- return NULL;
-From: Jan Beulich <jbeulich%suse.com@localhost>
-Subject: x86/mm: check page types in do_page_walk()
-
-For page table entries read to be guaranteed valid, transiently locking
-the pages and validating their types is necessary. Note that guest use
-of linear page tables is intentionally not taken into account here, as
-ordinary data (guest stacks) can't possibly live inside page tables.
-
-This is part of XSA-286.
-
-Signed-off-by: Jan Beulich <jbeulich%suse.com@localhost>
-Reviewed-by: George Dunlap <george.dunlap%citrix.com@localhost>
-Reviewed-by: Andrew Cooper <andrew.cooper3%citrix.com@localhost>
-
-diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
-index b1582b56fb..7d439639b7 100644
---- xen/arch/x86/x86_64/mm.c.orig
-+++ xen/arch/x86/x86_64/mm.c
-@@ -46,15 +46,29 @@ l2_pgentry_t *compat_idle_pg_table_l2;
-
- static l4_pgentry_t page_walk_get_l4e(pagetable_t root, unsigned long addr)
- {
-- unsigned long mfn = pagetable_get_pfn(root);
-- l4_pgentry_t *l4t, l4e;
-+ mfn_t mfn = pagetable_get_mfn(root);
-+ /* current's root page table can't disappear under our feet. */
-+ bool need_lock = !mfn_eq(mfn, pagetable_get_mfn(current->arch.guest_table));
-+ struct page_info *pg;
-+ l4_pgentry_t l4e = l4e_empty();
-
- if ( !is_canonical_address(addr) )
- return l4e_empty();
-
-- l4t = map_domain_page(_mfn(mfn));
-- l4e = l4t[l4_table_offset(addr)];
-- unmap_domain_page(l4t);
-+ pg = mfn_to_page(mfn);
-+ if ( need_lock && !page_lock(pg) )
-+ return l4e_empty();
-+
-+ if ( (pg->u.inuse.type_info & PGT_type_mask) == PGT_l4_page_table )
-+ {
-+ l4_pgentry_t *l4t = map_domain_page(mfn);
-+
-+ l4e = l4t[l4_table_offset(addr)];
-+ unmap_domain_page(l4t);
-+ }
-+
-+ if ( need_lock )
-+ page_unlock(pg);
-
- return l4e;
- }
-@@ -62,14 +76,26 @@ static l4_pgentry_t page_walk_get_l4e(pagetable_t root, unsigned long addr)
- static l3_pgentry_t page_walk_get_l3e(pagetable_t root, unsigned long addr)
- {
- l4_pgentry_t l4e = page_walk_get_l4e(root, addr);
-- l3_pgentry_t *l3t, l3e;
-+ mfn_t mfn = l4e_get_mfn(l4e);
-+ struct page_info *pg;
-+ l3_pgentry_t l3e = l3e_empty();
-
- if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
- return l3e_empty();
-
-- l3t = map_l3t_from_l4e(l4e);
-- l3e = l3t[l3_table_offset(addr)];
-- unmap_domain_page(l3t);
-+ pg = mfn_to_page(mfn);
-+ if ( !page_lock(pg) )
-+ return l3e_empty();
-+
-+ if ( (pg->u.inuse.type_info & PGT_type_mask) == PGT_l3_page_table )
-+ {
-+ l3_pgentry_t *l3t = map_domain_page(mfn);
-+
-+ l3e = l3t[l3_table_offset(addr)];
-+ unmap_domain_page(l3t);
-+ }
-+
-+ page_unlock(pg);
-
- return l3e;
- }
-@@ -77,44 +103,67 @@ static l3_pgentry_t page_walk_get_l3e(pagetable_t root, unsigned long addr)
- void *do_page_walk(struct vcpu *v, unsigned long addr)
- {
- l3_pgentry_t l3e;
-- l2_pgentry_t l2e, *l2t;
-- l1_pgentry_t l1e, *l1t;
-- unsigned long mfn;
-+ l2_pgentry_t l2e = l2e_empty();
-+ l1_pgentry_t l1e = l1e_empty();
-+ mfn_t mfn;
-+ struct page_info *pg;
-
- if ( !is_pv_vcpu(v) )
- return NULL;
-
- l3e = page_walk_get_l3e(v->arch.guest_table, addr);
-- mfn = l3e_get_pfn(l3e);
-- if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) )
-+ mfn = l3e_get_mfn(l3e);
-+ if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || !mfn_valid(mfn) )
- return NULL;
- if ( (l3e_get_flags(l3e) & _PAGE_PSE) )
- {
-- mfn += PFN_DOWN(addr & ((1UL << L3_PAGETABLE_SHIFT) - 1));
-+ mfn = mfn_add(mfn, PFN_DOWN(addr & ((1UL << L3_PAGETABLE_SHIFT) - 1)));
- goto ret;
- }
-
-- l2t = map_domain_page(_mfn(mfn));
-- l2e = l2t[l2_table_offset(addr)];
-- unmap_domain_page(l2t);
-- mfn = l2e_get_pfn(l2e);
-- if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) )
-+ pg = mfn_to_page(mfn);
-+ if ( !page_lock(pg) )
-+ return NULL;
-+
-+ if ( (pg->u.inuse.type_info & PGT_type_mask) == PGT_l2_page_table )
-+ {
-+ const l2_pgentry_t *l2t = map_domain_page(mfn);
-+
-+ l2e = l2t[l2_table_offset(addr)];
-+ unmap_domain_page(l2t);
-+ }
-+
-+ page_unlock(pg);
-+
-+ mfn = l2e_get_mfn(l2e);
-+ if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || !mfn_valid(mfn) )
- return NULL;
- if ( (l2e_get_flags(l2e) & _PAGE_PSE) )
- {
-- mfn += PFN_DOWN(addr & ((1UL << L2_PAGETABLE_SHIFT) - 1));
-+ mfn = mfn_add(mfn, PFN_DOWN(addr & ((1UL << L2_PAGETABLE_SHIFT) - 1)));
- goto ret;
- }
-
-- l1t = map_domain_page(_mfn(mfn));
-- l1e = l1t[l1_table_offset(addr)];
-- unmap_domain_page(l1t);
-- mfn = l1e_get_pfn(l1e);
-- if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) )
-+ pg = mfn_to_page(mfn);
-+ if ( !page_lock(pg) )
-+ return NULL;
-+
-+ if ( (pg->u.inuse.type_info & PGT_type_mask) == PGT_l1_page_table )
-+ {
-+ const l1_pgentry_t *l1t = map_domain_page(mfn);
-+
-+ l1e = l1t[l1_table_offset(addr)];
-+ unmap_domain_page(l1t);
-+ }
-+
-+ page_unlock(pg);
-+
-+ mfn = l1e_get_mfn(l1e);
-+ if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) || !mfn_valid(mfn) )
- return NULL;
-
- ret:
-- return map_domain_page(_mfn(mfn)) + (addr & ~PAGE_MASK);
-+ return map_domain_page(mfn) + (addr & ~PAGE_MASK);
- }
-
Home |
Main Index |
Thread Index |
Old Index