If the console is enabled. Don't write messages to the console page if
it is disabled. Otherwise we would leak information if we disable the
hypervisor.

Signed-off-by: Ralf Ramsauer <[email protected]>
---
 hypervisor/printk.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/hypervisor/printk.c b/hypervisor/printk.c
index 117fe74c96..63faed1d39 100644
--- a/hypervisor/printk.c
+++ b/hypervisor/printk.c
@@ -23,7 +23,26 @@ volatile struct jailhouse_console console 
__attribute__((section(".console")));
 
 static DEFINE_SPINLOCK(printk_lock);
 
-#define console_write(msg)     arch_dbg_write(msg)
+static void console_write(const char *msg)
+{
+       arch_dbg_write(msg);
+
+       if (!virtual_console)
+               return;
+
+       console.lock = true;
+       /* ensure the lock is visible prior to updates of the content */
+       memory_barrier();
+       while (*msg) {
+               console.content[console.tail % sizeof(console.content)] =
+                       *msg++;
+               console.tail++;
+       }
+       /* ensure that all updates are committed before releasing the lock */
+       memory_barrier();
+       console.lock = false;
+}
+
 #include "printk-core.c"
 
 static void dbg_write_stub(const char *msg)
-- 
2.11.0

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to