Commit 110e7c7e authored by Joe Jin's avatar Joe Jin Committed by Konrad Rzeszutek Wilk

xen/event: validate irq before get evtchn by irq

When retrieving the event channel number from irq, the irq
number may not be valid under some conditions.

So far that can be when we suspend/resume and irq ends with -1.
Validate and return sanitized irq and provide diagnostics information.

[v3: added unlikely on the WARN path]
[v2: reworded the commit message]
Signed-off-by: default avatarJoe Jin <joe.jin@oracle.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tested-by: default avatarGurudas Pai <gurudas.pai@oracle.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
parent fc550e95
...@@ -170,6 +170,9 @@ static struct irq_info *info_for_irq(unsigned irq) ...@@ -170,6 +170,9 @@ static struct irq_info *info_for_irq(unsigned irq)
static unsigned int evtchn_from_irq(unsigned irq) static unsigned int evtchn_from_irq(unsigned irq)
{ {
if (unlikely(WARN(irq < 0 || irq >= nr_irqs, "Invalid irq %d!\n", irq)))
return 0;
return info_for_irq(irq)->evtchn; return info_for_irq(irq)->evtchn;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment