From f64bcd88f5cc9e44573c202daf3c0dcec199636b Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 13 Mar 2022 22:54:11 +0100 Subject: device intr: Return an error on bogus intr port Rather than risking dereferencing NULL. --- device/intr.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/device/intr.c b/device/intr.c index 48812d73..2298d1bb 100644 --- a/device/intr.c +++ b/device/intr.c @@ -60,7 +60,10 @@ irq_acknowledge (ipc_port_t receive_port) e = search_intr (&irqtab, receive_port); if (!e) - printf("didn't find user intr for interrupt !?\n"); + { + printf("didn't find user intr for interrupt !?\n"); + ret = KERN_INVALID_ARGUMENT; + } else { if (!e->n_unacked) @@ -73,8 +76,7 @@ irq_acknowledge (ipc_port_t receive_port) if (ret) return ret; - if (e && irqtab.irqdev_ack) - (*(irqtab.irqdev_ack)) (&irqtab, e->id); + (*(irqtab.irqdev_ack)) (&irqtab, e->id); __enable_irq (irqtab.irq[e->id]); -- cgit v1.2.3