summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2014-09-28 10:50:06 +0200
committerJiri Slaby <jslaby@suse.cz>2014-10-31 15:11:16 +0100
commit9ac8b73be7efd81c8560f1a3ca16e53efc155425 (patch)
tree7fb9456318ffa95b3030625f1f96d5c1b7f1513c /Documentation
parent9085c3c4214282cb8fbf3024110bf5cd88999b7f (diff)
m68k: Disable/restore interrupts in hwreg_present()/hwreg_write()
commit e4dc601bf99ccd1c95b7e6eef1d3cf3c4b0d4961 upstream. hwreg_present() and hwreg_write() temporarily change the VBR register to another vector table. This table contains a valid bus error handler only, all other entries point to arbitrary addresses. If an interrupt comes in while the temporary table is active, the processor will start executing at such an arbitrary address, and the kernel will crash. While most callers run early, before interrupts are enabled, or explicitly disable interrupts, Finn Thain pointed out that macsonic has one callsite that doesn't, causing intermittent boot crashes. There's another unsafe callsite in hilkbd. Fix this for good by disabling and restoring interrupts inside hwreg_present() and hwreg_write(). Explicitly disabling interrupts can be removed from the callsites later. Reported-by: Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions