Page MenuHomeFreeBSD

bcm2835_audio: Remove wrong chn_intr()
ClosedPublic

Authored by christos on Aug 20 2026, 7:35 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Sep 19, 7:24 PM
Unknown Object (File)
Mon, Sep 14, 11:48 PM
Unknown Object (File)
Mon, Sep 14, 11:46 AM
Unknown Object (File)
Sun, Sep 13, 9:18 AM
Unknown Object (File)
Fri, Sep 11, 2:12 AM
Unknown Object (File)
Thu, Sep 10, 8:19 AM
Unknown Object (File)
Wed, Sep 9, 3:47 PM
Unknown Object (File)
Wed, Sep 9, 11:40 AM
Subscribers

Details

Summary

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.

Reported by: devesas.campos@gmail.com
Tested by: devesas.campos@gmail.com
Sponsored by: The FreeBSD Foundation
MFC after: 3 days

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Could you please add a Fixes tag?

Reported by: devesas.campos@gmail.com
Tested by: devesas.campos@gmail.com

It's nicer to include the person's name as well, per https://docs.freebsd.org/en/articles/committers-guide/#_include_appropriate_metadata_in_a_footer
So:

Reported by: Marco Devesas Campos <devesas.campos@gmail.com>
Tested by: Marco Devesas Campos <devesas.campos@gmail.com>
This revision is now accepted and ready to land.Aug 20 2026, 7:47 PM
This revision was automatically updated to reflect the committed changes.