Check to ensure exception handlers are not being overwritten or invalid exception numbers are used. Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> --- Since v2: - New patch lib/powerpc/processor.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/powerpc/processor.c b/lib/powerpc/processor.c index ec85b9d..70391aa 100644 --- a/lib/powerpc/processor.c +++ b/lib/powerpc/processor.c @@ -19,11 +19,23 @@ static struct { void handle_exception(int trap, void (*func)(struct pt_regs *, void *), void * data) { + if (trap & 0xff) { + printf("invalid exception handler %#x\n", trap); + abort(); + } + trap >>= 8; if (trap < 16) { + if (func && handlers[trap].func) { + printf("exception handler installed twice %#x\n", trap); + abort(); + } handlers[trap].func = func; handlers[trap].data = data; + } else { + printf("invalid exception handler %#x\n", trap); + abort(); } } -- 2.37.2