diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-01-13 10:53:20 +0100 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2015-03-06 00:39:17 +0000 |
commit | 5c8edb8faee3068348fa040c22568f132e3643fa (patch) | |
tree | b09b31a6ac23855af24cfdb9fd8d8b5e80d9438d /COPYING | |
parent | c024ef952a111ac8963bfc4edbec6e7a75fffd61 (diff) | |
download | kernel_samsung_smdk4412-5c8edb8faee3068348fa040c22568f132e3643fa.zip kernel_samsung_smdk4412-5c8edb8faee3068348fa040c22568f132e3643fa.tar.gz kernel_samsung_smdk4412-5c8edb8faee3068348fa040c22568f132e3643fa.tar.bz2 |
ALSA: ak411x: Fix stall in work callback
commit 4161b4505f1690358ac0a9ee59845a7887336b21 upstream.
When ak4114 work calls its callback and the callback invokes
ak4114_reinit(), it stalls due to flush_delayed_work(). For avoiding
this, control the reentrance by introducing a refcount. Also
flush_delayed_work() is replaced with cancel_delayed_work_sync().
The exactly same bug is present in ak4113.c and fixed as well.
Reported-by: Pavel Hofman <pavel.hofman@ivitera.com>
Acked-by: Jaroslav Kysela <perex@perex.cz>
Tested-by: Pavel Hofman <pavel.hofman@ivitera.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
[bwh: Backported to 3.2: snd_ak411{3,4}_reinit were previously using
flush_delayed_work_sync() rather than flush_delayed_work()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'COPYING')
0 files changed, 0 insertions, 0 deletions