|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] mm: option to _always_ scrub freed domheap pages
commit 24f1a58d1954f56f28e494f45e2ea9aa7f78f5fb
Author: Eslam Elnikety <elnikety@xxxxxxxxxx>
AuthorDate: Mon May 13 09:58:08 2019 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon May 13 09:58:08 2019 +0200
mm: option to _always_ scrub freed domheap pages
Give the administrator further control on when to scrub domheap pages by
adding
an option to always scrub. This is a safety feature that, when enabled,
prevents a (buggy) domain from leaking secrets if it accidentally frees a
page
without proper scrubbing.
Signed-off-by: Eslam Elnikety <elnikety@xxxxxxxxxx>
Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
docs/misc/xen-command-line.pandoc | 8 ++++++++
xen/common/page_alloc.c | 9 +++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/docs/misc/xen-command-line.pandoc
b/docs/misc/xen-command-line.pandoc
index 7dcb22932a..0585b33130 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1779,6 +1779,14 @@ sockets, &c. This will reduce performance somewhat,
particularly on
systems with hyperthreading enabled, but should reduce power by
enabling more sockets and cores to go into deeper sleep states.
+### scrub-domheap
+> `= <boolean>`
+
+> Default: `false`
+
+Scrub domains' freed pages. This is a safety net against a (buggy) domain
+accidentally leaking secrets by releasing pages without proper sanitization.
+
### serial_tx_buffer
> `= <size>`
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index be44158033..9c12d71fc1 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -214,6 +214,10 @@ custom_param("bootscrub", parse_bootscrub_param);
static unsigned long __initdata opt_bootscrub_chunk = MB(128);
size_param("bootscrub_chunk", opt_bootscrub_chunk);
+ /* scrub-domheap -> Domheap pages are scrubbed when freed */
+static bool __read_mostly opt_scrub_domheap;
+boolean_param("scrub-domheap", opt_scrub_domheap);
+
#ifdef CONFIG_SCRUB_DEBUG
static bool __read_mostly scrub_debug;
#else
@@ -2378,9 +2382,10 @@ void free_domheap_pages(struct page_info *pg, unsigned
int order)
/*
* Normally we expect a domain to clear pages before freeing them,
* if it cares about the secrecy of their contents. However, after
- * a domain has died we assume responsibility for erasure.
+ * a domain has died we assume responsibility for erasure. We do
+ * scrub regardless if option scrub_domheap is set.
*/
- scrub = d->is_dying || scrub_debug;
+ scrub = d->is_dying || scrub_debug || opt_scrub_domheap;
}
else
{
--
generated by git-patchbot for /home/xen/git/xen.git#staging
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |