<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/sound/drivers, branch v3.18.76</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>ALSA: dummy: Fix a use-after-free at closing</title>
<updated>2016-07-12T12:47:08+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2016-06-24T13:15:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a8a59536c5e01d01b01cf1df2945aa05e654b7c1'/>
<id>a8a59536c5e01d01b01cf1df2945aa05e654b7c1</id>
<content type='text'>
[ Upstream commit d5dbbe6569481bf12dcbe3e12cff72c5f78d272c ]

syzkaller fuzzer spotted a potential use-after-free case in snd-dummy
driver when hrtimer is used as backend:
&gt; ==================================================================
&gt; BUG: KASAN: use-after-free in rb_erase+0x1b17/0x2010 at addr ffff88005e5b6f68
&gt;  Read of size 8 by task syz-executor/8984
&gt; =============================================================================
&gt; BUG kmalloc-192 (Not tainted): kasan: bad access detected
&gt; -----------------------------------------------------------------------------
&gt;
&gt; Disabling lock debugging due to kernel taint
&gt; INFO: Allocated in 0xbbbbbbbbbbbbbbbb age=18446705582212484632
&gt; ....
&gt; [&lt;      none      &gt;] dummy_hrtimer_create+0x49/0x1a0 sound/drivers/dummy.c:464
&gt; ....
&gt; INFO: Freed in 0xfffd8e09 age=18446705496313138713 cpu=2164287125 pid=-1
&gt; [&lt;      none      &gt;] dummy_hrtimer_free+0x68/0x80 sound/drivers/dummy.c:481
&gt; ....
&gt; Call Trace:
&gt;  [&lt;ffffffff8179e59e&gt;] __asan_report_load8_noabort+0x3e/0x40 mm/kasan/report.c:333
&gt;  [&lt;     inline     &gt;] rb_set_parent include/linux/rbtree_augmented.h:111
&gt;  [&lt;     inline     &gt;] __rb_erase_augmented include/linux/rbtree_augmented.h:218
&gt;  [&lt;ffffffff82ca5787&gt;] rb_erase+0x1b17/0x2010 lib/rbtree.c:427
&gt;  [&lt;ffffffff82cb02e8&gt;] timerqueue_del+0x78/0x170 lib/timerqueue.c:86
&gt;  [&lt;ffffffff814d0c80&gt;] __remove_hrtimer+0x90/0x220 kernel/time/hrtimer.c:903
&gt;  [&lt;     inline     &gt;] remove_hrtimer kernel/time/hrtimer.c:945
&gt;  [&lt;ffffffff814d23da&gt;] hrtimer_try_to_cancel+0x22a/0x570 kernel/time/hrtimer.c:1046
&gt;  [&lt;ffffffff814d2742&gt;] hrtimer_cancel+0x22/0x40 kernel/time/hrtimer.c:1066
&gt;  [&lt;ffffffff85420531&gt;] dummy_hrtimer_stop+0x91/0xb0 sound/drivers/dummy.c:417
&gt;  [&lt;ffffffff854228bf&gt;] dummy_pcm_trigger+0x17f/0x1e0 sound/drivers/dummy.c:507
&gt;  [&lt;ffffffff85392170&gt;] snd_pcm_do_stop+0x160/0x1b0 sound/core/pcm_native.c:1106
&gt;  [&lt;ffffffff85391b26&gt;] snd_pcm_action_single+0x76/0x120 sound/core/pcm_native.c:956
&gt;  [&lt;ffffffff85391e01&gt;] snd_pcm_action+0x231/0x290 sound/core/pcm_native.c:974
&gt;  [&lt;     inline     &gt;] snd_pcm_stop sound/core/pcm_native.c:1139
&gt;  [&lt;ffffffff8539754d&gt;] snd_pcm_drop+0x12d/0x1d0 sound/core/pcm_native.c:1784
&gt;  [&lt;ffffffff8539d3be&gt;] snd_pcm_common_ioctl1+0xfae/0x2150 sound/core/pcm_native.c:2805
&gt;  [&lt;ffffffff8539ee91&gt;] snd_pcm_capture_ioctl1+0x2a1/0x5e0 sound/core/pcm_native.c:2976
&gt;  [&lt;ffffffff8539f2ec&gt;] snd_pcm_kernel_ioctl+0x11c/0x160 sound/core/pcm_native.c:3020
&gt;  [&lt;ffffffff853d9a44&gt;] snd_pcm_oss_sync+0x3a4/0xa30 sound/core/oss/pcm_oss.c:1693
&gt;  [&lt;ffffffff853da27d&gt;] snd_pcm_oss_release+0x1ad/0x280 sound/core/oss/pcm_oss.c:2483
&gt;  .....

A workaround is to call hrtimer_cancel() in dummy_hrtimer_sync() which
is called certainly before other blocking ops.

Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Tested-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit d5dbbe6569481bf12dcbe3e12cff72c5f78d272c ]

syzkaller fuzzer spotted a potential use-after-free case in snd-dummy
driver when hrtimer is used as backend:
&gt; ==================================================================
&gt; BUG: KASAN: use-after-free in rb_erase+0x1b17/0x2010 at addr ffff88005e5b6f68
&gt;  Read of size 8 by task syz-executor/8984
&gt; =============================================================================
&gt; BUG kmalloc-192 (Not tainted): kasan: bad access detected
&gt; -----------------------------------------------------------------------------
&gt;
&gt; Disabling lock debugging due to kernel taint
&gt; INFO: Allocated in 0xbbbbbbbbbbbbbbbb age=18446705582212484632
&gt; ....
&gt; [&lt;      none      &gt;] dummy_hrtimer_create+0x49/0x1a0 sound/drivers/dummy.c:464
&gt; ....
&gt; INFO: Freed in 0xfffd8e09 age=18446705496313138713 cpu=2164287125 pid=-1
&gt; [&lt;      none      &gt;] dummy_hrtimer_free+0x68/0x80 sound/drivers/dummy.c:481
&gt; ....
&gt; Call Trace:
&gt;  [&lt;ffffffff8179e59e&gt;] __asan_report_load8_noabort+0x3e/0x40 mm/kasan/report.c:333
&gt;  [&lt;     inline     &gt;] rb_set_parent include/linux/rbtree_augmented.h:111
&gt;  [&lt;     inline     &gt;] __rb_erase_augmented include/linux/rbtree_augmented.h:218
&gt;  [&lt;ffffffff82ca5787&gt;] rb_erase+0x1b17/0x2010 lib/rbtree.c:427
&gt;  [&lt;ffffffff82cb02e8&gt;] timerqueue_del+0x78/0x170 lib/timerqueue.c:86
&gt;  [&lt;ffffffff814d0c80&gt;] __remove_hrtimer+0x90/0x220 kernel/time/hrtimer.c:903
&gt;  [&lt;     inline     &gt;] remove_hrtimer kernel/time/hrtimer.c:945
&gt;  [&lt;ffffffff814d23da&gt;] hrtimer_try_to_cancel+0x22a/0x570 kernel/time/hrtimer.c:1046
&gt;  [&lt;ffffffff814d2742&gt;] hrtimer_cancel+0x22/0x40 kernel/time/hrtimer.c:1066
&gt;  [&lt;ffffffff85420531&gt;] dummy_hrtimer_stop+0x91/0xb0 sound/drivers/dummy.c:417
&gt;  [&lt;ffffffff854228bf&gt;] dummy_pcm_trigger+0x17f/0x1e0 sound/drivers/dummy.c:507
&gt;  [&lt;ffffffff85392170&gt;] snd_pcm_do_stop+0x160/0x1b0 sound/core/pcm_native.c:1106
&gt;  [&lt;ffffffff85391b26&gt;] snd_pcm_action_single+0x76/0x120 sound/core/pcm_native.c:956
&gt;  [&lt;ffffffff85391e01&gt;] snd_pcm_action+0x231/0x290 sound/core/pcm_native.c:974
&gt;  [&lt;     inline     &gt;] snd_pcm_stop sound/core/pcm_native.c:1139
&gt;  [&lt;ffffffff8539754d&gt;] snd_pcm_drop+0x12d/0x1d0 sound/core/pcm_native.c:1784
&gt;  [&lt;ffffffff8539d3be&gt;] snd_pcm_common_ioctl1+0xfae/0x2150 sound/core/pcm_native.c:2805
&gt;  [&lt;ffffffff8539ee91&gt;] snd_pcm_capture_ioctl1+0x2a1/0x5e0 sound/core/pcm_native.c:2976
&gt;  [&lt;ffffffff8539f2ec&gt;] snd_pcm_kernel_ioctl+0x11c/0x160 sound/core/pcm_native.c:3020
&gt;  [&lt;ffffffff853d9a44&gt;] snd_pcm_oss_sync+0x3a4/0xa30 sound/core/oss/pcm_oss.c:1693
&gt;  [&lt;ffffffff853da27d&gt;] snd_pcm_oss_release+0x1ad/0x280 sound/core/oss/pcm_oss.c:2483
&gt;  .....

A workaround is to call hrtimer_cancel() in dummy_hrtimer_sync() which
is called certainly before other blocking ops.

Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Tested-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: dummy: Implement timer backend switching more safely</title>
<updated>2016-03-02T20:19:17+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2016-02-02T14:27:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8d517c392406ba3ee99c9bec5bd2d147f4d60c6d'/>
<id>8d517c392406ba3ee99c9bec5bd2d147f4d60c6d</id>
<content type='text'>
[ Upstream commit ddce57a6f0a2d8d1bfacfa77f06043bc760403c2 ]

Currently the selected timer backend is referred at any moment from
the running PCM callbacks.  When the backend is switched, it's
possible to lead to inconsistency from the running backend.  This was
pointed by syzkaller fuzzer, and the commit [7ee96216c31a: ALSA:
dummy: Disable switching timer backend via sysfs] disabled the dynamic
switching for avoiding the crash.

This patch improves the handling of timer backend switching.  It keeps
the reference to the selected backend during the whole operation of an
opened stream so that it won't be changed by other streams.

Together with this change, the hrtimer parameter is reenabled as
writable now.

NOTE: this patch also turned out to fix the still remaining race.
Namely, ops was still replaced dynamically at dummy_pcm_open:

  static int dummy_pcm_open(struct snd_pcm_substream *substream)
  {
  ....
          dummy-&gt;timer_ops = &amp;dummy_systimer_ops;
          if (hrtimer)
                  dummy-&gt;timer_ops = &amp;dummy_hrtimer_ops;

Since dummy-&gt;timer_ops is common among all streams, and when the
replacement happens during accesses of other streams, it may lead to a
crash.  This was actually triggered by syzkaller fuzzer and KASAN.

This patch rewrites the code not to use the ops shared by all streams
any longer, too.

BugLink: http://lkml.kernel.org/r/CACT4Y+aZ+xisrpuM6cOXbL21DuM0yVxPYXf4cD4Md9uw0C3dBQ@mail.gmail.com
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ddce57a6f0a2d8d1bfacfa77f06043bc760403c2 ]

Currently the selected timer backend is referred at any moment from
the running PCM callbacks.  When the backend is switched, it's
possible to lead to inconsistency from the running backend.  This was
pointed by syzkaller fuzzer, and the commit [7ee96216c31a: ALSA:
dummy: Disable switching timer backend via sysfs] disabled the dynamic
switching for avoiding the crash.

This patch improves the handling of timer backend switching.  It keeps
the reference to the selected backend during the whole operation of an
opened stream so that it won't be changed by other streams.

Together with this change, the hrtimer parameter is reenabled as
writable now.

NOTE: this patch also turned out to fix the still remaining race.
Namely, ops was still replaced dynamically at dummy_pcm_open:

  static int dummy_pcm_open(struct snd_pcm_substream *substream)
  {
  ....
          dummy-&gt;timer_ops = &amp;dummy_systimer_ops;
          if (hrtimer)
                  dummy-&gt;timer_ops = &amp;dummy_hrtimer_ops;

Since dummy-&gt;timer_ops is common among all streams, and when the
replacement happens during accesses of other streams, it may lead to a
crash.  This was actually triggered by syzkaller fuzzer and KASAN.

This patch rewrites the code not to use the ops shared by all streams
any longer, too.

BugLink: http://lkml.kernel.org/r/CACT4Y+aZ+xisrpuM6cOXbL21DuM0yVxPYXf4cD4Md9uw0C3dBQ@mail.gmail.com
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: dummy: Disable switching timer backend via sysfs</title>
<updated>2016-02-15T20:42:33+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2016-01-28T06:54:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7108febf59d5658ea3742999a38bbda40f667820'/>
<id>7108febf59d5658ea3742999a38bbda40f667820</id>
<content type='text'>
[ Upstream commit 7ee96216c31aabe1eb42fb91ff50dae9fcd014b2 ]

ALSA dummy driver can switch the timer backend between system timer
and hrtimer via its hrtimer module option.  This can be also switched
dynamically via sysfs, but it may lead to a memory corruption when
switching is done while a PCM stream is running; the stream instance
for the newly switched timer method tries to access the memory that
was allocated by another timer method although the sizes differ.

As the simplest fix, this patch just disables the switch via sysfs by
dropping the writable bit.

BugLink: http://lkml.kernel.org/r/CACT4Y+ZGEeEBntHW5WHn2GoeE0G_kRrCmUh6=dWyy-wfzvuJLg@mail.gmail.com
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 7ee96216c31aabe1eb42fb91ff50dae9fcd014b2 ]

ALSA dummy driver can switch the timer backend between system timer
and hrtimer via its hrtimer module option.  This can be also switched
dynamically via sysfs, but it may lead to a memory corruption when
switching is done while a PCM stream is running; the stream instance
for the newly switched timer method tries to access the memory that
was allocated by another timer method although the sizes differ.

As the simplest fix, this patch just disables the switch via sysfs by
dropping the writable bit.

BugLink: http://lkml.kernel.org/r/CACT4Y+ZGEeEBntHW5WHn2GoeE0G_kRrCmUh6=dWyy-wfzvuJLg@mail.gmail.com
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: vx: Use nonatomic PCM ops</title>
<updated>2014-09-15T13:52:03+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2014-09-09T15:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=db0a5214b8d6cc7a90ce3336d24a85b90cbb4e67'/>
<id>db0a5214b8d6cc7a90ce3336d24a85b90cbb4e67</id>
<content type='text'>
Rewrite VXpocket and VX222 drivers to use the new PCM nonatomic ops.
The former irq tasklet is replaced with a threaded irq handler, and
the tasklet for the PCM delayed start is simply merged into the normal
PCM trigger, as well as the replacement of spinlock with mutex.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rewrite VXpocket and VX222 drivers to use the new PCM nonatomic ops.
The former irq tasklet is replaced with a threaded irq handler, and
the tasklet for the PCM delayed start is simply merged into the normal
PCM trigger, as well as the replacement of spinlock with mutex.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: drivers: Convert to snd_card_new() with a device pointer</title>
<updated>2014-02-12T09:58:20+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2014-01-29T11:59:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5872f3f621f9f65342583a85ec93b00c0a697eda'/>
<id>5872f3f621f9f65342583a85ec93b00c0a697eda</id>
<content type='text'>
Also remove superfluous snd_card_set_dev() calls.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also remove superfluous snd_card_set_dev() calls.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: Drop unused name argument in snd_register_oss_device()</title>
<updated>2014-02-12T09:58:19+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2014-02-04T12:51:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=80d7d771ae839d6fc2286f443ad8445b6721a7f3'/>
<id>80d7d771ae839d6fc2286f443ad8445b6721a7f3</id>
<content type='text'>
The last argument, name, of snd_oss_register_device() is nowhere
referred in the function in the current code.  Let's drop it.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The last argument, name, of snd_oss_register_device() is nowhere
referred in the function in the current code.  Let's drop it.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: Replace with IS_ENABLED()</title>
<updated>2014-02-10T10:42:00+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2014-02-10T08:48:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8eeaa2f9e06dcfb45593a0fcd91e81abc7f5d209'/>
<id>8eeaa2f9e06dcfb45593a0fcd91e81abc7f5d209</id>
<content type='text'>
Replace the lengthy #if defined(XXX) || defined(XXX_MODULE) with the
new IS_ENABLED() macro.

The patch still doesn't cover all ifdefs.  For example, the dependency
on CONFIG_GAMEPORT is still open-coded because this also has an extra
dependency on MODULE.  Similarly, an open-coded ifdef in pcm_oss.c and
some sequencer-related stuff are left untouched.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the lengthy #if defined(XXX) || defined(XXX_MODULE) with the
new IS_ENABLED() macro.

The patch still doesn't cover all ifdefs.  For example, the dependency
on CONFIG_GAMEPORT is still open-coded because this also has an extra
dependency on MODULE.  Similarly, an open-coded ifdef in pcm_oss.c and
some sequencer-related stuff are left untouched.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: pcsp: Include appropriate header file in pcsp/pcsp_input.c</title>
<updated>2014-02-07T17:24:20+00:00</updated>
<author>
<name>Rashika Kheria</name>
<email>rashika.kheria@gmail.com</email>
</author>
<published>2014-02-07T16:41:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=01b1dccbf74b18eff6257ee37fbcbdc1087a962c'/>
<id>01b1dccbf74b18eff6257ee37fbcbdc1087a962c</id>
<content type='text'>
Include appropriate header file in drivers/pcsp/pcsp_input.c because it
defines function whose prototype definitions are present in
drivers/pcsp/pcsp_input.h.

This eliminates the following warning in drivers/pcsp/pcsp_input.c:
sound/drivers/pcsp/pcsp_input.c:42:6: warning: no previous prototype for ‘pcspkr_stop_sound’ [-Wmissing-prototypes]
sound/drivers/pcsp/pcsp_input.c:80:5: warning: no previous prototype for ‘pcspkr_input_init’ [-Wmissing-prototypes]
sound/drivers/pcsp/pcsp_input.c:110:5: warning: no previous prototype for ‘pcspkr_input_remove’ [-Wmissing-prototypes]

Signed-off-by: Rashika Kheria &lt;rashika.kheria@gmail.com&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.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>
Include appropriate header file in drivers/pcsp/pcsp_input.c because it
defines function whose prototype definitions are present in
drivers/pcsp/pcsp_input.h.

This eliminates the following warning in drivers/pcsp/pcsp_input.c:
sound/drivers/pcsp/pcsp_input.c:42:6: warning: no previous prototype for ‘pcspkr_stop_sound’ [-Wmissing-prototypes]
sound/drivers/pcsp/pcsp_input.c:80:5: warning: no previous prototype for ‘pcspkr_input_init’ [-Wmissing-prototypes]
sound/drivers/pcsp/pcsp_input.c:110:5: warning: no previous prototype for ‘pcspkr_input_remove’ [-Wmissing-prototypes]

Signed-off-by: Rashika Kheria &lt;rashika.kheria@gmail.com&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: pcsp: Fix the order of input device unregistration</title>
<updated>2013-11-14T14:50:10+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-11-14T14:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6408eac2665955343cd0e4bcd7d6237ce39611ed'/>
<id>6408eac2665955343cd0e4bcd7d6237ce39611ed</id>
<content type='text'>
The current code may access to the already freed object.  The input
device must be accessed and unregistered before freeing the top level
sound object.

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 current code may access to the already freed object.  The input
device must be accessed and unregistered before freeing the top level
sound object.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: pcsp: Fix initialization with nopcm=1</title>
<updated>2013-10-29T14:15:20+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-10-29T14:15:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=75415df8ffbac2ace9463ceffb3f21299af2548a'/>
<id>75415df8ffbac2ace9463ceffb3f21299af2548a</id>
<content type='text'>
When nopcm=1 is set, some initializations based on hrtimer resolution
might be bogus because the driver checks the resolution only when
nopcm=0.  Simply get the resolution always at first for fixing the
bug.

Spotted by coverity CID 139740.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When nopcm=1 is set, some initializations based on hrtimer resolution
might be bogus because the driver checks the resolution only when
nopcm=0.  Simply get the resolution always at first for fixing the
bug.

Spotted by coverity CID 139740.

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