<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/sound/usb, branch v4.9</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>ALSA: usb-audio: Fix use-after-free of usb_device at disconnect</title>
<updated>2016-11-14T21:05:04+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2016-11-14T20:46:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6ff1a25318ebf688ef9593fe09cd449f6fb4ad31'/>
<id>6ff1a25318ebf688ef9593fe09cd449f6fb4ad31</id>
<content type='text'>
The usb-audio driver implements the deferred device disconnection for
the device in use.  In this mode, the disconnection callback returns
immediately while the actual ALSA card object removal happens later
when all files get closed.  As Shuah reported, this code flow,
however, leads to a use-after-free, detected by KASAN:

 BUG: KASAN: use-after-free in snd_usb_audio_free+0x134/0x160 [snd_usb_audio] at addr ffff8801c863ce10
 Write of size 8 by task pulseaudio/2244
 Call Trace:
  [&lt;ffffffff81b31473&gt;] dump_stack+0x67/0x94
  [&lt;ffffffff81564ef1&gt;] kasan_object_err+0x21/0x70
  [&lt;ffffffff8156518a&gt;] kasan_report_error+0x1fa/0x4e0
  [&lt;ffffffff81564ad7&gt;] ? kasan_slab_free+0x87/0xb0
  [&lt;ffffffff81565733&gt;] __asan_report_store8_noabort+0x43/0x50
  [&lt;ffffffffa0fc0f54&gt;] ? snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
  [&lt;ffffffffa0fc0f54&gt;] snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
  [&lt;ffffffffa0fc0fb1&gt;] snd_usb_audio_dev_free+0x31/0x40 [snd_usb_audio]
  [&lt;ffffffff8243c78a&gt;] __snd_device_free+0x12a/0x210
  [&lt;ffffffff8243d1f5&gt;] snd_device_free_all+0x85/0xd0
  [&lt;ffffffff8242cae4&gt;] release_card_device+0x34/0x130
  [&lt;ffffffff81ef1846&gt;] device_release+0x76/0x1e0
  [&lt;ffffffff81b37ad7&gt;] kobject_release+0x107/0x370
  .....
 Object at ffff8801c863cc80, in cache kmalloc-2048 size: 2048
 Allocated:
  [&lt;ffffffff810804eb&gt;] save_stack_trace+0x2b/0x50
  [&lt;ffffffff81564296&gt;] save_stack+0x46/0xd0
  [&lt;ffffffff8156450d&gt;] kasan_kmalloc+0xad/0xe0
  [&lt;ffffffff81560d1a&gt;] kmem_cache_alloc_trace+0xfa/0x240
  [&lt;ffffffff8214ea47&gt;] usb_alloc_dev+0x57/0xc90
  [&lt;ffffffff8216349d&gt;] hub_event+0xf1d/0x35f0
  ....
 Freed:
  [&lt;ffffffff810804eb&gt;] save_stack_trace+0x2b/0x50
  [&lt;ffffffff81564296&gt;] save_stack+0x46/0xd0
  [&lt;ffffffff81564ac1&gt;] kasan_slab_free+0x71/0xb0
  [&lt;ffffffff81560929&gt;] kfree+0xd9/0x280
  [&lt;ffffffff8214de6e&gt;] usb_release_dev+0xde/0x110
  [&lt;ffffffff81ef1846&gt;] device_release+0x76/0x1e0
  ....

It's the code trying to clear drvdata of the assigned usb_device where
the usb_device itself was already released in usb_release_dev() after
the disconnect callback.

This patch fixes it by checking whether the code path is via the
disconnect callback, i.e. chip-&gt;shutdown flag is set.

Fixes: 79289e24194a ('ALSA: usb-audio: Refer to chip-&gt;usb_id for quirks...')
Reported-and-tested-by: Shuah Khan &lt;shuahkh@osg.samsung.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The usb-audio driver implements the deferred device disconnection for
the device in use.  In this mode, the disconnection callback returns
immediately while the actual ALSA card object removal happens later
when all files get closed.  As Shuah reported, this code flow,
however, leads to a use-after-free, detected by KASAN:

 BUG: KASAN: use-after-free in snd_usb_audio_free+0x134/0x160 [snd_usb_audio] at addr ffff8801c863ce10
 Write of size 8 by task pulseaudio/2244
 Call Trace:
  [&lt;ffffffff81b31473&gt;] dump_stack+0x67/0x94
  [&lt;ffffffff81564ef1&gt;] kasan_object_err+0x21/0x70
  [&lt;ffffffff8156518a&gt;] kasan_report_error+0x1fa/0x4e0
  [&lt;ffffffff81564ad7&gt;] ? kasan_slab_free+0x87/0xb0
  [&lt;ffffffff81565733&gt;] __asan_report_store8_noabort+0x43/0x50
  [&lt;ffffffffa0fc0f54&gt;] ? snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
  [&lt;ffffffffa0fc0f54&gt;] snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
  [&lt;ffffffffa0fc0fb1&gt;] snd_usb_audio_dev_free+0x31/0x40 [snd_usb_audio]
  [&lt;ffffffff8243c78a&gt;] __snd_device_free+0x12a/0x210
  [&lt;ffffffff8243d1f5&gt;] snd_device_free_all+0x85/0xd0
  [&lt;ffffffff8242cae4&gt;] release_card_device+0x34/0x130
  [&lt;ffffffff81ef1846&gt;] device_release+0x76/0x1e0
  [&lt;ffffffff81b37ad7&gt;] kobject_release+0x107/0x370
  .....
 Object at ffff8801c863cc80, in cache kmalloc-2048 size: 2048
 Allocated:
  [&lt;ffffffff810804eb&gt;] save_stack_trace+0x2b/0x50
  [&lt;ffffffff81564296&gt;] save_stack+0x46/0xd0
  [&lt;ffffffff8156450d&gt;] kasan_kmalloc+0xad/0xe0
  [&lt;ffffffff81560d1a&gt;] kmem_cache_alloc_trace+0xfa/0x240
  [&lt;ffffffff8214ea47&gt;] usb_alloc_dev+0x57/0xc90
  [&lt;ffffffff8216349d&gt;] hub_event+0xf1d/0x35f0
  ....
 Freed:
  [&lt;ffffffff810804eb&gt;] save_stack_trace+0x2b/0x50
  [&lt;ffffffff81564296&gt;] save_stack+0x46/0xd0
  [&lt;ffffffff81564ac1&gt;] kasan_slab_free+0x71/0xb0
  [&lt;ffffffff81560929&gt;] kfree+0xd9/0x280
  [&lt;ffffffff8214de6e&gt;] usb_release_dev+0xde/0x110
  [&lt;ffffffff81ef1846&gt;] device_release+0x76/0x1e0
  ....

It's the code trying to clear drvdata of the assigned usb_device where
the usb_device itself was already released in usb_release_dev() after
the disconnect callback.

This patch fixes it by checking whether the code path is via the
disconnect callback, i.e. chip-&gt;shutdown flag is set.

Fixes: 79289e24194a ('ALSA: usb-audio: Refer to chip-&gt;usb_id for quirks...')
Reported-and-tested-by: Shuah Khan &lt;shuahkh@osg.samsung.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: usb-audio: Add quirk for Syntek STK1160</title>
<updated>2016-10-27T10:07:19+00:00</updated>
<author>
<name>Marcel Hasler</name>
<email>mahasler@gmail.com</email>
</author>
<published>2016-10-26T22:42:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bdc3478f90cd4d2928197f36629d5cf93b64dbe9'/>
<id>bdc3478f90cd4d2928197f36629d5cf93b64dbe9</id>
<content type='text'>
The stk1160 chip needs QUIRK_AUDIO_ALIGN_TRANSFER. This patch resolves
the issue reported on the mailing list
(http://marc.info/?l=linux-sound&amp;m=139223599126215&amp;w=2) and also fixes
bug 180071 (https://bugzilla.kernel.org/show_bug.cgi?id=180071).

Signed-off-by: Marcel Hasler &lt;mahasler@gmail.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The stk1160 chip needs QUIRK_AUDIO_ALIGN_TRANSFER. This patch resolves
the issue reported on the mailing list
(http://marc.info/?l=linux-sound&amp;m=139223599126215&amp;w=2) and also fixes
bug 180071 (https://bugzilla.kernel.org/show_bug.cgi?id=180071).

Signed-off-by: Marcel Hasler &lt;mahasler@gmail.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: line6: fix a crash in line6_hwdep_write()</title>
<updated>2016-10-12T18:10:23+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2016-10-12T06:21:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=fdd8218d7d1bd0ccb9a3f4c58bf77773691a56cc'/>
<id>fdd8218d7d1bd0ccb9a3f4c58bf77773691a56cc</id>
<content type='text'>
The error checking here is messed up so we could end up dereferencing
-EFAULT.

Fixes: a16039cbf1a1 ('ALSA: line6: Add hwdep interface to access the POD control messages')
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Reviewed-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The error checking here is messed up so we could end up dereferencing
-EFAULT.

Fixes: a16039cbf1a1 ('ALSA: line6: Add hwdep interface to access the POD control messages')
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Reviewed-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: line6: Fix POD X3 Live audio input</title>
<updated>2016-10-10T10:07:29+00:00</updated>
<author>
<name>Andrej Krutak</name>
<email>dev@andree.sk</email>
</author>
<published>2016-10-05T15:46:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b907900ec4065e1d9b65fafa05fd6601b6a2ffc7'/>
<id>b907900ec4065e1d9b65fafa05fd6601b6a2ffc7</id>
<content type='text'>
The commit c039aaa77a7d1d9375665a8b59ec16dc7d23e259 was incomplete,
missing part of the setup for Live. This makes also audio input work,
in addition to audio output.

Fixes: c039aaa77a7d1d9375665a8b59ec16dc7d23e259
Reported-by: Eddi De Pieri &lt;eddi@depieri.net&gt;
Signed-off-by: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The commit c039aaa77a7d1d9375665a8b59ec16dc7d23e259 was incomplete,
missing part of the setup for Live. This makes also audio input work,
in addition to audio output.

Fixes: c039aaa77a7d1d9375665a8b59ec16dc7d23e259
Reported-by: Eddi De Pieri &lt;eddi@depieri.net&gt;
Signed-off-by: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' into for-next</title>
<updated>2016-09-29T16:20:14+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2016-09-29T16:20:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3383c5c395386ac8e258b1a324c72ce850b84a9e'/>
<id>3383c5c395386ac8e258b1a324c72ce850b84a9e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: usb-line6: use the same declaration as definition in header for MIDI manufacturer ID</title>
<updated>2016-09-25T20:17:45+00:00</updated>
<author>
<name>Takashi Sakamoto</name>
<email>o-takashi@sakamocchi.jp</email>
</author>
<published>2016-09-25T13:00:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8da08ca03b73593d5299893bf29fc08569c3fb5f'/>
<id>8da08ca03b73593d5299893bf29fc08569c3fb5f</id>
<content type='text'>
Currently, usb-line6 module exports an array of MIDI manufacturer ID and
usb-pod module uses it. However, the declaration is not the definition in
common header. The difference is explicit length of array. Although
compiler calculates it and everything goes well, it's better to use the
same representation between definition and declaration.

This commit fills the length of array for usb-line6 module. As a small
good sub-effect, this commit suppress below warnings from static analysis
by sparse v0.5.0.

sound/usb/line6/driver.c:274:43: error: cannot size expression
sound/usb/line6/driver.c:275:16: error: cannot size expression
sound/usb/line6/driver.c:276:16: error: cannot size expression
sound/usb/line6/driver.c:277:16: error: cannot size expression

Fixes: 705ececd1c60 ("Staging: add line6 usb driver")
Signed-off-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, usb-line6 module exports an array of MIDI manufacturer ID and
usb-pod module uses it. However, the declaration is not the definition in
common header. The difference is explicit length of array. Although
compiler calculates it and everything goes well, it's better to use the
same representation between definition and declaration.

This commit fills the length of array for usb-line6 module. As a small
good sub-effect, this commit suppress below warnings from static analysis
by sparse v0.5.0.

sound/usb/line6/driver.c:274:43: error: cannot size expression
sound/usb/line6/driver.c:275:16: error: cannot size expression
sound/usb/line6/driver.c:276:16: error: cannot size expression
sound/usb/line6/driver.c:277:16: error: cannot size expression

Fixes: 705ececd1c60 ("Staging: add line6 usb driver")
Signed-off-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: usb-audio: Extend DragonFly dB scale quirk to cover other variants</title>
<updated>2016-09-23T06:32:18+00:00</updated>
<author>
<name>Anssi Hannula</name>
<email>anssi.hannula@iki.fi</email>
</author>
<published>2016-09-23T03:43:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=eb1a74b7bea17eea31915c4f76385cefe69d9795'/>
<id>eb1a74b7bea17eea31915c4f76385cefe69d9795</id>
<content type='text'>
The DragonFly quirk added in 42e3121d90f4 ("ALSA: usb-audio: Add a more
accurate volume quirk for AudioQuest DragonFly") applies a custom dB map
on the volume control when its range is reported as 0..50 (0 .. 0.2dB).

However, there exists at least one other variant (hw v1.0c, as opposed
to the tested v1.2) which reports a different non-sensical volume range
(0..53) and the custom map is therefore not applied for that device.

This results in all of the volume change appearing close to 100% on
mixer UIs that utilize the dB TLV information.

Add a fallback case where no dB TLV is reported at all if the control
range is not 0..50 but still 0..N where N &lt;= 1000 (3.9 dB). Also
restrict the quirk to only apply to the volume control as there is also
a mute control which would match the check otherwise.

Fixes: 42e3121d90f4 ("ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly")
Signed-off-by: Anssi Hannula &lt;anssi.hannula@iki.fi&gt;
Reported-by: David W &lt;regulars@d-dub.org.uk&gt;
Tested-by: David W &lt;regulars@d-dub.org.uk&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The DragonFly quirk added in 42e3121d90f4 ("ALSA: usb-audio: Add a more
accurate volume quirk for AudioQuest DragonFly") applies a custom dB map
on the volume control when its range is reported as 0..50 (0 .. 0.2dB).

However, there exists at least one other variant (hw v1.0c, as opposed
to the tested v1.2) which reports a different non-sensical volume range
(0..53) and the custom map is therefore not applied for that device.

This results in all of the volume change appearing close to 100% on
mixer UIs that utilize the dB TLV information.

Add a fallback case where no dB TLV is reported at all if the control
range is not 0..50 but still 0..N where N &lt;= 1000 (3.9 dB). Also
restrict the quirk to only apply to the volume control as there is also
a mute control which would match the check otherwise.

Fixes: 42e3121d90f4 ("ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly")
Signed-off-by: Anssi Hannula &lt;anssi.hannula@iki.fi&gt;
Reported-by: David W &lt;regulars@d-dub.org.uk&gt;
Tested-by: David W &lt;regulars@d-dub.org.uk&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: line6: snd-usb-line6 depends on CONFIG_SND_HWDEP</title>
<updated>2016-09-21T12:36:22+00:00</updated>
<author>
<name>Valdis Kletnieks</name>
<email>Valdis.Kletnieks@vt.edu</email>
</author>
<published>2016-09-20T22:14:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0da325afbdb80098e014b83937372e3eef6872d5'/>
<id>0da325afbdb80098e014b83937372e3eef6872d5</id>
<content type='text'>
ERROR: "snd_hwdep_new" [sound/usb/line6/snd-usb-line6.ko] undefined!
scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1

Fixes: a16039cbf1a1 ('ALSA: line6: Add hwdep interface to access the POD control messages')
Signed-off-by: Valdis Kletnieks &lt;valdis.kletnieks@vt.edu&gt;
Reviewed-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ERROR: "snd_hwdep_new" [sound/usb/line6/snd-usb-line6.ko] undefined!
scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1

Fixes: a16039cbf1a1 ('ALSA: line6: Add hwdep interface to access the POD control messages')
Signed-off-by: Valdis Kletnieks &lt;valdis.kletnieks@vt.edu&gt;
Reviewed-by: Takashi Sakamoto &lt;o-takashi@sakamocchi.jp&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: line6: fix ifnullfree.cocci warnings</title>
<updated>2016-09-20T10:53:23+00:00</updated>
<author>
<name>kbuild test robot</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2016-09-20T00:10:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a4bc746c41b56ab7588b20d84a58906986edce83'/>
<id>a4bc746c41b56ab7588b20d84a58906986edce83</id>
<content type='text'>
sound/usb/line6/driver.c:484:2-7: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.

 NULL check before some freeing functions is not needed.

 Based on checkpatch warning
 "kfree(NULL) is safe this check is probably not required"
 and kfreeaddr.cocci by Julia Lawall.

Generated by: scripts/coccinelle/free/ifnullfree.cocci

CC: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sound/usb/line6/driver.c:484:2-7: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.

 NULL check before some freeing functions is not needed.

 Based on checkpatch warning
 "kfree(NULL) is safe this check is probably not required"
 and kfreeaddr.cocci by Julia Lawall.

Generated by: scripts/coccinelle/free/ifnullfree.cocci

CC: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: line6: Add hwdep interface to access the POD control messages</title>
<updated>2016-09-19T21:03:47+00:00</updated>
<author>
<name>Andrej Krutak</name>
<email>dev@andree.sk</email>
</author>
<published>2016-09-18T18:59:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a16039cbf1a1ee7e76d7d100f9e613998919ab91'/>
<id>a16039cbf1a1ee7e76d7d100f9e613998919ab91</id>
<content type='text'>
We must do it this way, because e.g. POD X3 won't play any sound unless
the host listens on the bulk EP, so we cannot export it only via libusb.

The driver currently doesn't use the bulk EP messages in other way,
in future it could e.g. sense/modify volume(s).

Signed-off-by: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We must do it this way, because e.g. POD X3 won't play any sound unless
the host listens on the bulk EP, so we cannot export it only via libusb.

The driver currently doesn't use the bulk EP messages in other way,
in future it could e.g. sense/modify volume(s).

Signed-off-by: Andrej Krutak &lt;dev@andree.sk&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
</feed>
