lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 310/313] serial: sh-sci: Do not free irqs that have already been freed
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Chris Brandt <chris.brandt@renesas.com>

    commit 4d95987a32db53f3beca76f8c4c8309ef6a5f192 upstream.

    Since IRQs might be muxed on some parts, we need to pay attention when we
    are freeing them.
    Otherwise we get the ugly WARNING "Trying to free already-free IRQ 20".

    Fixes: 628c534ae735 ("serial: sh-sci: Improve support for separate TEI and DRI interrupts")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/tty/serial/sh-sci.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    --- a/drivers/tty/serial/sh-sci.c
    +++ b/drivers/tty/serial/sh-sci.c
    @@ -1921,7 +1921,7 @@ out_nomem:

    static void sci_free_irq(struct sci_port *port)
    {
    - int i;
    + int i, j;

    /*
    * Intentionally in reverse order so we iterate over the muxed
    @@ -1937,6 +1937,13 @@ static void sci_free_irq(struct sci_port
    if (unlikely(irq < 0))
    continue;

    + /* Check if already freed (irq was muxed) */
    + for (j = 0; j < i; j++)
    + if (port->irqs[j] == irq)
    + j = i + 1;
    + if (j > i)
    + continue;
    +
    free_irq(port->irqs[i], port);
    kfree(port->irqstr[i]);


    \
     
     \ /
      Last update: 2019-02-11 16:34    [W:4.337 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site