lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 18 Sep 2022 13:28:48 +0300 From: Oded Gabbay <ogabbay@...nel.org> To: Yang Yingliang <yangyingliang@...wei.com> Cc: linux-kernel@...r.kernel.org Subject: Re: [PATCH -next v2] habanalabs/gaudi2: fix free irq in error path in gaudi2_enable_msix() On Tue, Sep 13, 2022 at 6:00 AM Yang Yingliang <yangyingliang@...wei.com> wrote: > > Add two variables to store completion irq and event queue irq. And add > a new lable to free event queue irq in error path in gaudi2_enable_msix(). I'm sorry, I already pushed a fix to the bug (I didn't get any reply from you for more than a week so I didn't know if you are going to fix it). Oded > > Fixes: d7bb1ac89b2f ("habanalabs: add gaudi2 asic-specific code") > Signed-off-by: Yang Yingliang <yangyingliang@...wei.com> > --- > v2: > print correct irq in error prints. > --- > drivers/misc/habanalabs/gaudi2/gaudi2.c | 25 +++++++++++++++---------- > 1 file changed, 15 insertions(+), 10 deletions(-) > > diff --git a/drivers/misc/habanalabs/gaudi2/gaudi2.c b/drivers/misc/habanalabs/gaudi2/gaudi2.c > index 98336a1a84b0..8f521d8a1aa1 100644 > --- a/drivers/misc/habanalabs/gaudi2/gaudi2.c > +++ b/drivers/misc/habanalabs/gaudi2/gaudi2.c > @@ -3518,6 +3518,7 @@ static int gaudi2_enable_msix(struct hl_device *hdev) > struct asic_fixed_properties *prop = &hdev->asic_prop; > struct gaudi2_device *gaudi2 = hdev->asic_specific; > int rc, irq, i, j, user_irq_init_cnt; > + int completion_irq, event_queue_irq; > irq_handler_t irq_handler; > struct hl_cq *cq; > > @@ -3532,26 +3533,28 @@ static int gaudi2_enable_msix(struct hl_device *hdev) > return rc; > } > > - irq = pci_irq_vector(hdev->pdev, GAUDI2_IRQ_NUM_COMPLETION); > + completion_irq = pci_irq_vector(hdev->pdev, GAUDI2_IRQ_NUM_COMPLETION); > cq = &hdev->completion_queue[GAUDI2_RESERVED_CQ_CS_COMPLETION]; > - rc = request_irq(irq, hl_irq_handler_cq, 0, gaudi2_irq_name(GAUDI2_IRQ_NUM_COMPLETION), cq); > + rc = request_irq(completion_irq, hl_irq_handler_cq, 0, > + gaudi2_irq_name(GAUDI2_IRQ_NUM_COMPLETION), cq); > if (rc) { > - dev_err(hdev->dev, "Failed to request IRQ %d", irq); > + dev_err(hdev->dev, "Failed to request IRQ %d", completion_irq); > goto free_irq_vectors; > } > > - irq = pci_irq_vector(hdev->pdev, GAUDI2_IRQ_NUM_EVENT_QUEUE); > - rc = request_irq(irq, hl_irq_handler_eq, 0, gaudi2_irq_name(GAUDI2_IRQ_NUM_EVENT_QUEUE), > - &hdev->event_queue); > + event_queue_irq = pci_irq_vector(hdev->pdev, GAUDI2_IRQ_NUM_EVENT_QUEUE); > + rc = request_irq(event_queue_irq, hl_irq_handler_eq, 0, > + gaudi2_irq_name(GAUDI2_IRQ_NUM_EVENT_QUEUE), > + &hdev->event_queue); > if (rc) { > - dev_err(hdev->dev, "Failed to request IRQ %d", irq); > + dev_err(hdev->dev, "Failed to request IRQ %d", event_queue_irq); > goto free_completion_irq; > } > > rc = gaudi2_dec_enable_msix(hdev); > if (rc) { > dev_err(hdev->dev, "Failed to enable decoder IRQ"); > - goto free_completion_irq; > + goto free_event_queue_irq; > } > > for (i = GAUDI2_IRQ_NUM_USER_FIRST, j = prop->user_dec_intr_count, user_irq_init_cnt = 0; > @@ -3582,9 +3585,11 @@ static int gaudi2_enable_msix(struct hl_device *hdev) > > gaudi2_dec_disable_msix(hdev, GAUDI2_IRQ_NUM_SHARED_DEC1_ABNRM + 1); > > +free_event_queue_irq: > + free_irq(event_queue_irq, &hdev->event_queue); > + > free_completion_irq: > - irq = pci_irq_vector(hdev->pdev, GAUDI2_IRQ_NUM_COMPLETION); > - free_irq(irq, cq); > + free_irq(completion_irq, cq); > > free_irq_vectors: > pci_free_irq_vectors(hdev->pdev); > -- > 2.25.1 >
Powered by blists - more mailing lists