summaryrefslogtreecommitdiffstats
path: root/hw/core/or-irq.c
diff options
context:
space:
mode:
authorPeter Maydell2020-01-30 17:02:01 +0100
committerPeter Maydell2020-01-30 17:02:01 +0100
commitea4d7ab5d927baa96b940bcbbdf3b2971cf6b9ab (patch)
treed884fe428f4734c18a4e18ebe162b42c8e675601 /hw/core/or-irq.c
parentMerge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-jan-29-2020' ... (diff)
downloadqemu-ea4d7ab5d927baa96b940bcbbdf3b2971cf6b9ab.tar.gz
qemu-ea4d7ab5d927baa96b940bcbbdf3b2971cf6b9ab.tar.xz
qemu-ea4d7ab5d927baa96b940bcbbdf3b2971cf6b9ab.zip
hw/core/or-irq: Fix incorrect assert forbidding num-lines == MAX_OR_LINES
The num-lines property of the TYPE_OR_GATE device sets the number of input lines it has. An assert() in or_irq_realize() restricts this to the maximum supported by the implementation. However we got the condition in the assert wrong: it should be using <=, because num-lines == MAX_OR_LINES is permitted, and means that all entries from 0 to MAX_OR_LINES-1 in the s->levels[] array are used. We didn't notice this previously because no user has so far needed that many input lines. Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Message-id: 20200120142235.10432-1-peter.maydell@linaro.org
Diffstat (limited to 'hw/core/or-irq.c')
-rw-r--r--hw/core/or-irq.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c
index 4bbdbcb321..d8f3754e96 100644
--- a/hw/core/or-irq.c
+++ b/hw/core/or-irq.c
@@ -58,7 +58,7 @@ static void or_irq_realize(DeviceState *dev, Error **errp)
{
qemu_or_irq *s = OR_IRQ(dev);
- assert(s->num_lines < MAX_OR_LINES);
+ assert(s->num_lines <= MAX_OR_LINES);
qdev_init_gpio_in(dev, or_irq_handler, s->num_lines);
}