ALSA: hda - use WARN_ON_ONCE() for zero-division detection
authorTakashi Iwai <tiwai@suse.de>
Fri, 12 Feb 2010 17:17:06 +0000 (18:17 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 12 Feb 2010 17:20:04 +0000 (18:20 +0100)
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>
sound/pci/hda/hda_intel.c

index e767c3f..3600e9c 100644 (file)
@@ -1893,12 +1893,9 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
 
        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 */