git: adf4c3336c31 - stable/15 - bcm2835_audio: Remove wrong chn_intr()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 24 Aug 2026 20:47:20 UTC
The branch stable/15 has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=adf4c3336c319cd14de9f45a7a44465aca3a9f36
commit adf4c3336c319cd14de9f45a7a44465aca3a9f36
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-08-21 00:47:03 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-08-24 20:47:13 +0000
bcm2835_audio: Remove wrong chn_intr()
chn_trigger() calls bcmchan_trigger() with the channel lock held.
However, bcmchan_trigger() calls chn_intr(), which also tries to lock,
which results in a lock recursion panic. chn_intr() is meant to be
called by the interrupt handler and not inside CHANNEL_TRIGGER()
methods. Remove the call altogether, the bcm2835_worker_play_start()
call that comes after is enough.
Fixes: 69cab2d1bfb5 ("Fix locking in bcm2835_audio driver")
Reported by: Marco Devesas Campos <devesas.campos@gmail.com>
Tested by: Marco Devesas Campos <devesas.campos@gmail.com>
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D59055
(cherry picked from commit f0778a6f9ba7045239a0055ebfbd7965d1f162c9)
---
sys/arm/broadcom/bcm2835/bcm2835_audio.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_audio.c b/sys/arm/broadcom/bcm2835/bcm2835_audio.c
index 4b138de58238..0915bee677ef 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_audio.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_audio.c
@@ -679,7 +679,6 @@ bcmchan_trigger(kobj_t obj, void *data, int go)
switch (go) {
case PCMTRIG_START:
/* kickstart data flow */
- chn_intr(sc->pch.channel);
ch->submitted_samples = 0;
ch->retrieved_samples = 0;
bcm2835_worker_play_start(sc);