lkml.org 
[lkml]   [2020]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 113/254] genirq/debugfs: Add missing sanity checks to interrupt injection
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    commit a740a423c36932695b01a3e920f697bc55b05fec upstream.

    Interrupts cannot be injected when the interrupt is not activated and when
    a replay is already in progress.

    Fixes: 536e2e34bd00 ("genirq/debugfs: Triggering of interrupts from userspace")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200306130623.500019114@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    kernel/irq/debugfs.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    --- a/kernel/irq/debugfs.c
    +++ b/kernel/irq/debugfs.c
    @@ -206,8 +206,15 @@ static ssize_t irq_debug_write(struct fi
    chip_bus_lock(desc);
    raw_spin_lock_irqsave(&desc->lock, flags);

    - if (irq_settings_is_level(desc) || desc->istate & IRQS_NMI) {
    - /* Can't do level nor NMIs, sorry */
    + /*
    + * Don't allow injection when the interrupt is:
    + * - Level or NMI type
    + * - not activated
    + * - replaying already
    + */
    + if (irq_settings_is_level(desc) ||
    + !irqd_is_activated(&desc->irq_data) ||
    + (desc->istate & (IRQS_NMI | IRQS_REPLAY))) {
    err = -EINVAL;
    } else {
    desc->istate |= IRQS_PENDING;

    \
     
     \ /
      Last update: 2020-04-16 16:24    [W:4.147 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site