if (! chip->ac97_regs)
                return -ENOMEM;
 
-       if ((err = snd_ac97_bus(chip->card, 0, &ops, NULL, &pbus)) < 0)
+       err = snd_ac97_bus(chip->card, 0, &ops, NULL, &pbus);
+       if (err < 0)
                return err;
 
        memset(&ac97, 0, sizeof(ac97));
 
        *chip_ret = NULL;
 
-       if ((err = pci_enable_device(pci)) < 0)
+       err = pci_enable_device(pci);
+       if (err < 0)
                return err;
 
        chip = kzalloc(sizeof(*chip), GFP_KERNEL);
                chip->buffer_end = buffer_top;
        else {
                /* get buffer end pointer from signature */
-               if ((err = snd_nm256_peek_for_sig(chip)) < 0)
+               err = snd_nm256_peek_for_sig(chip);
+               if (err < 0)
                        goto __error;
        }
 
 
        // pci_set_master(pci); /* needed? */
        
-       if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0)
+       err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
+       if (err < 0)
                goto __error;
 
        *chip_ret = chip;
                capture_bufsize = 4;
        if (capture_bufsize > 128)
                capture_bufsize = 128;
-       if ((err = snd_nm256_create(card, pci, &chip)) < 0) {
+       err = snd_nm256_create(card, pci, &chip);
+       if (err < 0) {
                snd_card_free(card);
                return err;
        }
                chip->reset_workaround_2 = 1;
        }
 
-       if ((err = snd_nm256_pcm(chip, 0)) < 0 ||
-           (err = snd_nm256_mixer(chip)) < 0) {
+       err = snd_nm256_pcm(chip, 0);
+       if (err < 0) {
+               snd_card_free(card);
+               return err;
+       }
+       err = snd_nm256_mixer(chip);
+       if (err < 0) {
                snd_card_free(card);
                return err;
        }
                card->shortname,
                chip->buffer_addr, chip->cport_addr, chip->irq);
 
-       if ((err = snd_card_register(card)) < 0) {
+       err = snd_card_register(card);
+       if (err < 0) {
                snd_card_free(card);
                return err;
        }