lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 31 Mar 2011 09:11:16 +0200
From:	Clemens Ladisch <clemens@...isch.de>
To:	Kelly Anderson <kelly@...ka.with-linux.com>
CC:	linux-kernel@...r.kernel.org, alsa-devel@...a-project.org
Subject: Re: 2.6.38+ hard lockup in pcm_lib.c

Kelly Anderson wrote:
> I had a consistent hard-lockup on one of my machines, an Amd X6, just
> after Kdm loaded the desktop (most certainly when it decides to start
> talking to the sound card).  Everything was dead, even ssh access to the
> computer.  I git bisected it until I found the commit that was causing
> it.  After reverting the patch everything is fine.
> 
> commit 59ff878ffb26bc0be812ca8295799164f413ae88
> Author: Clemens Ladisch
> Date:   Thu Nov 18 09:43:52 2010 +0100
> 
>      ALSA: pcm: detect xruns in no-period-wakeup mode

This looks as if you get an infinite loop, probably because
hw_ptr_buffer_jiffies is zero.

Please try this patch:

--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -425,6 +425,8 @@ static int snd_pcm_hw_params(struct snd_
 	runtime->no_period_wakeup =
 			(params->info & SNDRV_PCM_INFO_NO_PERIOD_WAKEUP) &&
 			(params->flags & SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP);
+	runtime->hw_ptr_buffer_jiffies =
+			max(1uL, (runtime->buffer_size * HZ) / runtime->rate);
 
 	bits = snd_pcm_format_physical_width(runtime->format);
 	runtime->sample_bits = bits;
@@ -866,8 +868,6 @@ static void snd_pcm_post_start(struct sn
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	snd_pcm_trigger_tstamp(substream);
 	runtime->hw_ptr_jiffies = jiffies;
-	runtime->hw_ptr_buffer_jiffies = (runtime->buffer_size * HZ) / 
-							    runtime->rate;
 	runtime->status->state = state;
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
 	    runtime->silence_size > 0)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ