Message ID | 20230608075826.86217-3-npiggin@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | powerpc: updates, P10, PNV support | expand |
On 08/06/2023 09.58, Nicholas Piggin wrote: > Check to ensure exception handlers are not being overwritten or > invalid exception numbers are used. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > Since v3: > - Simplified code as suggested by Thomas. > > lib/powerpc/processor.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/lib/powerpc/processor.c b/lib/powerpc/processor.c > index 05b4b04f..0550e4fc 100644 > --- a/lib/powerpc/processor.c > +++ b/lib/powerpc/processor.c > @@ -19,12 +19,16 @@ static struct { > void handle_exception(int trap, void (*func)(struct pt_regs *, void *), > void * data) > { > + assert(!(trap & ~0xf00)); > + > trap >>= 8; > > - if (trap < 16) { > - handlers[trap].func = func; > - handlers[trap].data = data; > + if (func && handlers[trap].func) { > + printf("exception handler installed twice %#x\n", trap); > + abort(); > } > + handlers[trap].func = func; > + handlers[trap].data = data; > } > > void do_handle_exception(struct pt_regs *regs) Reviewed-by: Thomas Huth <thuth@redhat.com>
diff --git a/lib/powerpc/processor.c b/lib/powerpc/processor.c index 05b4b04f..0550e4fc 100644 --- a/lib/powerpc/processor.c +++ b/lib/powerpc/processor.c @@ -19,12 +19,16 @@ static struct { void handle_exception(int trap, void (*func)(struct pt_regs *, void *), void * data) { + assert(!(trap & ~0xf00)); + trap >>= 8; - if (trap < 16) { - handlers[trap].func = func; - handlers[trap].data = data; + if (func && handlers[trap].func) { + printf("exception handler installed twice %#x\n", trap); + abort(); } + handlers[trap].func = func; + handlers[trap].data = data; } void do_handle_exception(struct pt_regs *regs)
Check to ensure exception handlers are not being overwritten or invalid exception numbers are used. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- Since v3: - Simplified code as suggested by Thomas. lib/powerpc/processor.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)