From 66d471f4426abad8175ee818421fc92e21e69c49 Mon Sep 17 00:00:00 2001 From: Achilleas Anagnostopoulos Date: Fri, 14 Jul 2017 07:51:04 +0100 Subject: [PATCH] Defer kernel panic when Kmain returns --- src/gopheros/kernel/kmain/kmain.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gopheros/kernel/kmain/kmain.go b/src/gopheros/kernel/kmain/kmain.go index 2e3f2df..736a511 100644 --- a/src/gopheros/kernel/kmain/kmain.go +++ b/src/gopheros/kernel/kmain/kmain.go @@ -39,10 +39,13 @@ func Kmain(multibootInfoPtr, kernelStart, kernelEnd, kernelPageOffset uintptr) { panic(err) } + // After goruntime.Init returns we can safely use defer + defer func() { + // Use kfmt.Panic instead of panic to prevent the compiler from + // treating kernel.Panic as dead-code and eliminating it. + kfmt.Panic(errKmainReturned) + }() + // Detect and initialize hardware hal.DetectHardware() - - // Use kfmt.Panic instead of panic to prevent the compiler from - // treating kernel.Panic as dead-code and eliminating it. - kfmt.Panic(errKmainReturned) }