Hi,
This patchset is to fix an issue of concurrent access to operate ELEM_READ/ELEM_WRITE, which I found in my previous patch:
[PATCH 0/5] ALSA: control: fix issue of concurrent access for TLV operations http://mailman.alsa-project.org/pipermail/alsa-devel/2017-August/123561.html
In current implementation of ALSA control core, concurrent accesses with ELEM_READ/ELEM_WRITE are managed with counting semaphore, however lock acquisition for both of these operations is a type of 'read'. In this case, ELEM_READ can be going to be handled for a target element when ELEM_WRITE is handled for the element. A purpose of the ELEM_WRITE operation is to change state of the target element. It's better to guarantee that concurrent accesses to the same element with these two operations are properly managed.
For the above aim, this patchset uses the counting semaphore as 'write' lock for ELEM_WRITE operation. But I can imagine an discussion to add 'per-element' lock for this issue. In a comment of patch 03, I investigate it. Please refer to it.
Takashi Sakamoto (3): ALSA: control: queue events within locking of controls_rwsem for ELEM_WRITE operation ALSA: control: code refactoring for ELEM_READ/ELEM_WRITE operations ALSA: control: use counting semaphore as write lock for ELEM_WRITE operation
sound/core/control.c | 78 +++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 40 deletions(-)