Page MenuHomeFreeBSD

bcm2835_audio: Remove wrong chn_intr()
ClosedPublic

Authored by christos on Thu, Aug 20, 7:35 PM.
Tags
None
Referenced Files
F170562446: D59055.diff
Sat, Sep 5, 10:26 AM
F170528580: D59055.id.diff
Sat, Sep 5, 6:22 AM
F170408102: D59055.id184608.diff
Fri, Sep 4, 4:48 PM
Unknown Object (File)
Fri, Sep 4, 10:29 AM
Unknown Object (File)
Fri, Sep 4, 8:56 AM
Unknown Object (File)
Fri, Sep 4, 8:30 AM
Unknown Object (File)
Fri, Sep 4, 6:14 AM
Unknown Object (File)
Fri, Sep 4, 1:19 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.Thu, Aug 20, 7:47 PM
This revision was automatically updated to reflect the committed changes.