Page MenuHomeFreeBSD

bcm2835_audio: Remove wrong chn_intr()
ClosedPublic

Authored by christos on Thu, Aug 20, 7:35 PM.
Tags
None
Referenced Files
F169374865: D59055.id184619.diff
Tue, Sep 1, 8:53 AM
F169323180: D59055.id.diff
Tue, Sep 1, 4:58 AM
F169259810: D59055.id184608.diff
Tue, Sep 1, 2:12 AM
F169219479: D59055.diff
Mon, Aug 31, 10:07 PM
F169133461: D59055.id184608.diff
Mon, Aug 31, 1:12 PM
F169114388: D59055.diff
Mon, Aug 31, 11:09 AM
F169113056: D59055.diff
Mon, Aug 31, 11:04 AM
Unknown Object (File)
Mon, Aug 31, 8:08 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.