Re: [PATCH net 1/4] eth: bnxt: cancel IRQ notifier before freeing affinity mask

Michael Chan <[email protected]> Mon, 3 Aug 2026 13:01:23 -0700
Newsgroups gmane.linux.network
Message-ID <CACKFLi=BXqtBuRAoSxdXoxSDfdX4QdLZwzdSRny7qcQsMkcWEg@mail.gmail.com>
On Mon, Aug 3, 2026 at 12:31 PM Jakub Kicinski <[email protected]> wrote:
>
> bnxt_irq_affinity_notify() copies into irq->cpu_mask.
> Cancel the notifier before freeing irq->cpu_mask.
>
> Fixes: c214410c47d6 ("bnxt_en: Add TPH support in BNXT driver")
> Signed-off-by: Jakub Kicinski <[email protected]>
> ---
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> index 7513618793da..4a2a44ffe669 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> @@ -11859,14 +11859,14 @@ static void bnxt_free_irq(struct bnxt *bp)
>
>                 irq = &bp->irq_tbl[map_idx];
>                 if (irq->requested) {
> +                       bnxt_release_irq_notifier(irq);
> +

bnxt_release_irq_notifier() calls irq_set_affinity_notifier() to set
the notifier to NULL.  But the call is not synchronous, right?  A
pending notifier is still possible after irq_set_affinity_notifier()
returns, right?

>                         if (irq->have_cpumask) {
>                                 irq_update_affinity_hint(irq->vector, NULL);
>                                 free_cpumask_var(irq->cpu_mask);
>                                 irq->have_cpumask = 0;
>                         }
>
> -                       bnxt_release_irq_notifier(irq);
> -
>                         free_irq(irq->vector, bp->bnapi[i]);
>                 }
smime.p7s (application/pkcs7-signature, 5.3 KB) - not displayed