Subject: port-i386/3208: doshutdownhooks() can be called with interrupts enabled
To: None <gnats-bugs@gnats.netbsd.org>
From: Matthias Drochner <drochner@zel024.zel.kfa-juelich.de>
List: netbsd-bugs
Date: 02/11/1997 13:39:45
>Number: 3208
>Category: port-i386
>Synopsis: doshutdownhooks() can be called with interrupts enabled
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: gnats-admin (GNATS administrator)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Feb 11 04:50:01 1997
>Last-Modified:
>Originator: Matthias Drochner
>Organization:
KFA Juelich
>Release: current
>Environment:
NetBSD-current, i386
System: NetBSD zel024 1.2C NetBSD 1.2C (TULIP) #10: Tue Feb 11 11:48:43 MET 1997 drochner@zelz26:/home/drochner/netbsd-970206/sys/arch/i386/compile/TULIP i386
>Description:
doshutdownhooks() is called from boot(). There the global "cold" is
used to decide if the interrupts have to be turned off before.
However, there is a time window where "cold" is 0 but the interrupts are enabled:
in the second half of "configure()".
This bug is triggered when "halt" is typed at the "boot device" prompt (new mountroot
framework).
>From a quick look at the sources, other ports seem affected too.
>How-To-Repeat:
boot -a, type "halt" at boot device prompt
>Fix:
I'm not sure what is The Righy Way: unconditional splhigh() in boot(),
set cold=0 earlier in configure() or do the user interaction not in setroot(),
but at mountroot time...
>Audit-Trail:
>Unformatted: