Merge branch 'topic/jack-mechanical' into to-push
[sfrench/cifs-2.6.git] / sound / core / jack.c
index 6ebd5f12bc5062a7546235776650bcbd17343f30..dd4a12dc09aa44f4c50c5b60f2cf5584c5635589 100644 (file)
@@ -34,6 +34,7 @@ static int snd_jack_dev_free(struct snd_device *device)
        else
                input_free_device(jack->input_dev);
 
+       kfree(jack->id);
        kfree(jack);
 
        return 0;
@@ -87,7 +88,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
        if (jack == NULL)
                return -ENOMEM;
 
-       jack->id = id;
+       jack->id = kstrdup(id, GFP_KERNEL);
 
        jack->input_dev = input_allocate_device();
        if (jack->input_dev == NULL) {
@@ -153,6 +154,9 @@ EXPORT_SYMBOL(snd_jack_set_parent);
  */
 void snd_jack_report(struct snd_jack *jack, int status)
 {
+       if (!jack)
+               return;
+
        if (jack->type & SND_JACK_HEADPHONE)
                input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT,
                                    status & SND_JACK_HEADPHONE);