serial: sh-sci: Do not free irqs that have already been freed
commit4d95987a32upstream. 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:628c534ae7("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>
This commit is contained in:
parent
57a3ef4dd5
commit
c287265bfa
1 changed files with 8 additions and 1 deletions
|
|
@ -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 *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]);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue