Add a spin_unlock missing on the error path.
The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@@
expression E1;
@@
* spin_lock(E1,...);
  <+... when != E1
  if (...) {
    ... when != E1
*   return ...;
  }
  ...+>
* spin_unlock(E1,...);
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
                        break;
        if (i == 0x5000) {
                printk(KERN_ERR "au1000 AC97: AC97 command read timeout\n");
+               spin_unlock(&au1000->ac97_lock);
                return 0;
        }
 
 
                 * (almost) like on the TT.
                 */
                write_sq_ignore_int = 0;
-               return IRQ_HANDLED;
+               goto out;
        }
 
        if (!write_sq.active) {
                 * the sq variables, so better don't do anything here.
                 */
                WAKE_UP(write_sq.sync_queue);
-               return IRQ_HANDLED;
+               goto out;
        }
 
        /* Probably ;) one frame is finished. Well, in fact it may be that a
        /* We are not playing after AtaPlay(), so there
           is nothing to play any more. Wake up a process
           waiting for audio output to drain. */
+out:
        spin_unlock(&dmasound.lock);
        return IRQ_HANDLED;
 }