Re: [PATCH 4/4] PCI: rcar: Teardown MSI setup if rcar_pcie_enable() fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marek,

On Tue, May 22, 2018 at 11:53 PM, Marek Vasut <marek.vasut@xxxxxxxxx> wrote:
> On 05/22/2018 08:36 PM, Geert Uytterhoeven wrote:
>> On Mon, May 21, 2018 at 3:11 PM, Marek Vasut <marek.vasut@xxxxxxxxx> wrote:
>>> --- a/drivers/pci/host/pcie-rcar.c
>>> +++ b/drivers/pci/host/pcie-rcar.c
>>> @@ -900,6 +900,28 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie)
>>>         return err;
>>>  }
>>>
>>> +static void rcar_pcie_teardown_msi(struct rcar_pcie *pcie)
>>> +{
>>> +       struct rcar_msi *msi = &pcie->msi;
>>> +       int irq, i;
>>> +
>>> +       /* Disable all MSI interrupts */
>>> +       rcar_pci_write_reg(pcie, 0, PCIEMSIIER);
>>> +
>>> +       /* Disable address decoding of the MSI interrupt, MSIFE */
>>> +       rcar_pci_write_reg(pcie, 0, PCIEMSIALR);
>>> +
>>> +       free_pages(msi->pages, 0);
>>> +
>>> +       for (i = 0; i < INT_PCI_MSI_NR; i++) {
>>> +               irq = irq_find_mapping(msi->domain, i);
>>> +               if (irq > 0)
>>> +                       irq_dispose_mapping(irq);
>>> +       }
>>
>> Note that similar calls to irq_dispose_mapping() should be added to the
>> failure path of rcar_pcie_enable_msi(), too.
>
> There are no failures happening in rcar_pcie_enable_msi() after the
> mapping is created, just memory writes, so no. Did I miss something there ?

In my copy, there are two calls to devm_request_irq(). If they fail, the
IRQ domain is removed, but the mappings are never disposed of.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux