linux/sound/firewire
Takashi Sakamoto 87de6c966b ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping
commit 493626f2d8 upstream.

When executing 'fw_run_transaction()' with 'TCODE_WRITE_BLOCK_REQUEST',
an address of 'payload' argument is used for streaming DMA mapping by
'firewire_ohci' module if 'size' argument is larger than 8 byte.
Although in this case the address should not be on kernel stack, current
implementation of ALSA bebob driver uses data in kernel stack for a cue
to boot M-Audio devices. This often brings unexpected result, especially
for a case of CONFIG_VMAP_STACK=y.

This commit fixes the bug.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=201021
Reference: https://forum.manjaro.org/t/firewire-m-audio-410-driver-wont-load-firmware/51165
Fixes: a2b2a7798fb6('ALSA: bebob: Send a cue to load firmware for M-Audio Firewire series')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-12-16 22:09:14 +00:00
..
bebob ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping 2018-12-16 22:09:14 +00:00
fireworks ALSA: fireworks: accessing to user space outside spinlock 2016-11-20 01:17:20 +00:00
amdtp.c ALSA: fireworks/firewire-lib: add support for recent firmware quirk 2015-08-27 12:08:13 +01:00
amdtp.h ALSA: fireworks/firewire-lib: add support for recent firmware quirk 2015-08-27 12:08:13 +01:00
cmp.c ALSA: firewire-lib: Fix sparse warning of incorrect type in assignment 2014-05-27 17:34:37 +02:00
cmp.h ALSA: firewire-lib: Add a new function to check others' connection 2014-05-26 14:22:46 +02:00
dice-interface.h ALSA: dice: document quadlet alignment 2013-10-20 22:07:57 +02:00
dice.c ALSA: firewire-lib/dice: add arrangements of PCM pointer and interrupts for Dice quirk 2014-10-05 13:40:54 -07:00
fcp.c ALSA: firewire-lib: Remove a comment about restriction of asynchronous operation 2014-06-03 08:14:21 +02:00
fcp.h ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00
isight.c ALSA: firewire: Convert to snd_card_new() with a device pointer 2014-02-14 08:13:31 +01:00
iso-resources.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
iso-resources.h firewire: octlet AT payloads can be stack-allocated 2011-05-10 22:53:44 +02:00
Kconfig ALSA: firewire: Fix dependency on PCM and rawmidi 2014-05-30 15:22:06 +02:00
lib.c ALSA: firewire: extend snd_fw_transaction() 2013-10-20 22:07:57 +02:00
lib.h ALSA: firewire: extend snd_fw_transaction() 2013-10-20 22:07:57 +02:00
Makefile ALSA: bebob: Add skelton for BeBoB based devices 2014-05-26 14:29:12 +02:00
packets-buffer.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
packets-buffer.h ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver 2011-03-15 08:42:22 +01:00
scs1x.c ALSA: firewire: Convert to snd_card_new() with a device pointer 2014-02-14 08:13:31 +01:00
speakers.c ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00