diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index d64bafb1afd08d7e64378d3e9b98c66b015781c8..0a7840aeb0fb9efbc18a6e6e8e6f01de17ed91cd 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -491,6 +491,9 @@ int irq_set_irq_wake(unsigned int irq, unsigned int on)
 	struct irq_desc *desc = irq_get_desc_buslock(irq, &flags);
 	int ret = 0;
 
+	if (!desc)
+		return -EINVAL;
+
 	/* wakeup-capable irqs can be shared between drivers that
 	 * don't need to have the same sleep mode behaviors.
 	 */