Hi,
This patch is a revised version of a part of my previous patchset:
[alsa-devel] [PATCH v3 0/2] ALSA: fireworks/firewire-tascam: accessing to user space outside spinlock http://mailman.alsa-project.org/pipermail/alsa-devel/2016-August/112366.html
In ALSA fireworks driver, current implementation for hwdep interface have issues for page fault handling. For example, when using single core processor, after executing lock_page() in page fault handler and call task scheduler, then the context never regain CPU again, because any interrupts are disabled by these drivers and the context can't catch waiting event. This patchset fixes the issues.
The issues were reported by Vaishali Thakkar, with a help of coccinelle. Thanks a lot for her care to these minor drivers. http://mailman.alsa-project.org/pipermail/alsa-devel/2016-August/111887.html
Changes in v4: * Give up counting the number of queued response messages to simplify ring-buffer management. Instead, comparing pull/push pointers is used consistently in any parts. * Assign current state to automatic variables in critical section of blocking processing part, then utilize it for later processing.
Changes in v3: * Add a workaround against a case that several tasks are going to read from one response buffer.
Changes in v2: * improve designated initialization for automatic variable of union type
Takashi Sakamoto (1): ALSA: fireworks: accessing to user space outside spinlock
sound/firewire/fireworks/fireworks.h | 1 - sound/firewire/fireworks/fireworks_hwdep.c | 71 +++++++++++++++++------- sound/firewire/fireworks/fireworks_proc.c | 4 +- sound/firewire/fireworks/fireworks_transaction.c | 5 +- 4 files changed, 56 insertions(+), 25 deletions(-)