Index: kernel/generic/include/shutdown.h
===================================================================
--- kernel/generic/include/shutdown.h	(revision 0116f21c8322ed5d0d54d2a20a217567036f889f)
+++ kernel/generic/include/shutdown.h	(revision b79207da393cfae6971582319c3f7316a68c3f98)
@@ -47,4 +47,5 @@
 extern void reboot(void);
 extern void arch_reboot(void);
+extern void abort_shutdown(void);
 extern sys_errno_t sys_shutdown(sysarg_t mode, sysarg_t delay, sysarg_t kconsole);
 
Index: kernel/generic/src/console/cmd.c
===================================================================
--- kernel/generic/src/console/cmd.c	(revision 0116f21c8322ed5d0d54d2a20a217567036f889f)
+++ kernel/generic/src/console/cmd.c	(revision b79207da393cfae6971582319c3f7316a68c3f98)
@@ -880,4 +880,5 @@
 int cmd_reboot(cmd_arg_t *argv)
 {
+	abort_shutdown();
 	reboot();
 
@@ -1125,4 +1126,5 @@
 int cmd_halt(cmd_arg_t *argv)
 {
+	abort_shutdown();
 	halt();
 	return 1;
Index: kernel/generic/src/main/shutdown.c
===================================================================
--- kernel/generic/src/main/shutdown.c	(revision 0116f21c8322ed5d0d54d2a20a217567036f889f)
+++ kernel/generic/src/main/shutdown.c	(revision b79207da393cfae6971582319c3f7316a68c3f98)
@@ -98,4 +98,15 @@
 }
 
+void abort_shutdown()
+{
+	irq_spinlock_lock(&threads_lock, true);
+	thread_t *thread = atomic_load(&shutdown_thread);
+	if (thread != NULL) {
+		thread_interrupt(thread);
+		atomic_store(&shutdown_thread, NULL);
+	}
+	irq_spinlock_unlock(&threads_lock, true);
+}
+
 /* argument structure for the shutdown thread */
 typedef struct {
@@ -135,11 +146,5 @@
 #endif
 
-	irq_spinlock_lock(&threads_lock, true);
-	thread_t *thread = atomic_load(&shutdown_thread);
-	if (thread != NULL) {
-		thread_interrupt(thread);
-		atomic_store(&shutdown_thread, NULL);
-	}
-	irq_spinlock_unlock(&threads_lock, true);
+	abort_shutdown();
 
 	/* `cancel` or default has been called */
@@ -165,5 +170,5 @@
 	arg->delay = delay;
 
-	thread = thread_create(sys_shutdown_function, arg, kernel_task, THREAD_FLAG_NONE, "shutdown");
+	thread_t *thread = thread_create(sys_shutdown_function, arg, kernel_task, THREAD_FLAG_NONE, "shutdown");
 
 	if (thread == NULL) {
