Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/xen/x86 Zero out page table memory for IDT before use.
details: https://anonhg.NetBSD.org/src/rev/87e7cbe02940
branches: trunk
changeset: 445203:87e7cbe02940
user: cherry <cherry%NetBSD.org@localhost>
date: Thu Oct 18 04:17:18 2018 +0000
description:
Zero out page table memory for IDT before use.
To copy the IDT entry before registration, de-reference the indexed
value, not the first entry.
Add a MAX_XEN_IDT value for max entries we expect and KASSERT() for
this as a sanity check.
diffstat:
sys/arch/xen/x86/xenfunc.c | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diffs (49 lines):
diff -r 28996012ecda -r 87e7cbe02940 sys/arch/xen/x86/xenfunc.c
--- a/sys/arch/xen/x86/xenfunc.c Thu Oct 18 04:14:07 2018 +0000
+++ b/sys/arch/xen/x86/xenfunc.c Thu Oct 18 04:17:18 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xenfunc.c,v 1.21 2018/09/23 15:28:49 cherry Exp $ */
+/* $NetBSD: xenfunc.c,v 1.22 2018/10/18 04:17:18 cherry Exp $ */
/*
* Copyright (c) 2004 Christian Limpach.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xenfunc.c,v 1.21 2018/09/23 15:28:49 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xenfunc.c,v 1.22 2018/10/18 04:17:18 cherry Exp $");
#include <sys/param.h>
@@ -41,6 +41,8 @@
#include <xen/xenpmap.h>
#include <machine/pte.h>
+#define MAX_XEN_IDT 128
+
void xen_set_ldt(vaddr_t, uint32_t);
void
@@ -59,7 +61,8 @@
* will be available at the boot stage when this is called.
*/
static char xen_idt_page[PAGE_SIZE] __attribute__((__aligned__ (PAGE_SIZE)));
-
+ memset(xen_idt_page, 0, PAGE_SIZE);
+
struct trap_info *xen_idt = (void * )xen_idt_page;
int xen_idt_idx = 0;
@@ -73,9 +76,9 @@
* back in the requestor array.
*/
for (i = 0; i < nidt; i++) {
- if (idd->address == 0) /* Skip gap */
+ if (idd[i].address == 0) /* Skip gap */
continue;
-
+ KASSERT(xen_idt_idx < MAX_XEN_IDT);
/* Copy over entry */
xen_idt[xen_idt_idx++] = idd[i];
}
Home |
Main Index |
Thread Index |
Old Index