--- /dev/null
+From d6d8bf549393484e906913f02fa3c9518a2819b6 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 12 Feb 2010 18:17:06 +0100
+Subject: ALSA: hda - use WARN_ON_ONCE() for zero-division detection
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit d6d8bf549393484e906913f02fa3c9518a2819b6 upstream.
+
+Replace the zero-division warning message with WARN_ON_ONCE() per the
+advice by Linus. This shouldn't happen, but if it happens, it's
+possible that the bug happens often due to buggy IRQs.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -1858,12 +1858,9 @@ static int azx_position_ok(struct azx *c
+
+ if (!bdl_pos_adj[chip->dev_index])
+ return 1; /* no delayed ack */
+- if (azx_dev->period_bytes == 0) {
+- printk(KERN_WARNING
+- "hda-intel: Divide by zero was avoided "
+- "in azx_dev->period_bytes.\n");
+- return 0;
+- }
++ if (WARN_ONCE(!azx_dev->period_bytes,
++ "hda-intel: zero azx_dev->period_bytes"))
++ return 0; /* this shouldn't happen! */
+ if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2)
+ return 0; /* NG - it's below the period boundary */
+ return 1; /* OK, it's fine */