vserver 2.0 rc7
[linux-2.6.git] / sound / pci / ice1712 / ak4xxx.c
index 3c6129f..ae9dc02 100644 (file)
@@ -126,12 +126,16 @@ int snd_ice1712_akm4xxx_init(akm4xxx_t *ak, const akm4xxx_t *temp,
 {
        struct snd_ak4xxx_private *priv;
 
-       priv = kmalloc(sizeof(*priv), GFP_KERNEL);
-       if (priv == NULL)
-               return -ENOMEM;
+       if (_priv != NULL) {
+               priv = kmalloc(sizeof(*priv), GFP_KERNEL);
+               if (priv == NULL)
+                       return -ENOMEM;
+               *priv = *_priv;
+       } else {
+               priv = NULL;
+       }
        *ak = *temp;
        ak->card = ice->card;
-       *priv = *_priv;
         ak->private_value[0] = (unsigned long)priv;
        ak->private_data[0] = ice;
        if (ak->ops.lock == NULL)