[PATCH] soc: fsl: qbman: fix race condition in qman_destroy_fq
Christophe Leroy (CS GROUP)
chleroy at kernel.org
Fri Feb 6 18:24:38 AEDT 2026
On Tue, 23 Dec 2025 08:25:49 +0100, Richard Genoud wrote:
> When QMAN_FQ_FLAG_DYNAMIC_FQID is set, there's a race condition between
> fq_table[fq->idx] state and freeing/allocating from the pool and
> WARN_ON(fq_table[fq->idx]) in qman_create_fq() gets triggered.
>
> Indeed, we can have:
> Thread A Thread B
> qman_destroy_fq() qman_create_fq()
> qman_release_fqid()
> qman_shutdown_fq()
> gen_pool_free()
> -- At this point, the fqid is available again --
> qman_alloc_fqid()
> -- so, we can get the just-freed fqid in thread B --
> fq->fqid = fqid;
> fq->idx = fqid * 2;
> WARN_ON(fq_table[fq->idx]);
> fq_table[fq->idx] = fq;
> fq_table[fq->idx] = NULL;
>
> [...]
Applied, thanks!
[1/1] soc: fsl: qbman: fix race condition in qman_destroy_fq
(no commit info)
Best regards,
--
Christophe Leroy (CS GROUP) <chleroy at kernel.org>
More information about the Linuxppc-dev
mailing list