Title: [7893] trunk/drivers/usb/gadget: bug[5261]free alsa devices when remove the audio gadget
Revision
7893
Author
cliff
Date
2009-11-30 01:12:35 -0500 (Mon, 30 Nov 2009)

Log Message

bug[5261]free alsa devices when remove the audio gadget

Modified Paths

Diff

Modified: trunk/drivers/usb/gadget/audio.c (7892 => 7893)


--- trunk/drivers/usb/gadget/audio.c	2009-11-30 04:05:46 UTC (rev 7892)
+++ trunk/drivers/usb/gadget/audio.c	2009-11-30 06:12:35 UTC (rev 7893)
@@ -273,6 +273,7 @@
 
 static int __exit audio_unbind(struct usb_composite_dev *cdev)
 {
+	gaudio_cleanup();
 	return 0;
 }
 

Modified: trunk/drivers/usb/gadget/f_audio.c (7892 => 7893)


--- trunk/drivers/usb/gadget/f_audio.c	2009-11-30 04:05:46 UTC (rev 7892)
+++ trunk/drivers/usb/gadget/f_audio.c	2009-11-30 06:12:35 UTC (rev 7893)
@@ -700,7 +700,7 @@
 	return status;
 
 add_fail:
-	gaudio_cleanup(&audio->card);
+	gaudio_cleanup();
 setup_fail:
 	kfree(audio);
 	return status;

Modified: trunk/drivers/usb/gadget/u_audio.c (7892 => 7893)


--- trunk/drivers/usb/gadget/u_audio.c	2009-11-30 04:05:46 UTC (rev 7892)
+++ trunk/drivers/usb/gadget/u_audio.c	2009-11-30 06:12:35 UTC (rev 7893)
@@ -287,6 +287,7 @@
 	return 0;
 }
 
+static struct gaudio *the_card;
 /**
  * gaudio_setup - setup ALSA interface and preparing for USB transfer
  *
@@ -302,6 +303,9 @@
 	if (ret)
 		ERROR(card, "we need at least one control device\n");
 
+	if (!the_card)
+		the_card = card;
+
 	return ret;
 
 }
@@ -311,9 +315,11 @@
  *
  * This is called to free all resources allocated by @gaudio_setup().
  */
-void gaudio_cleanup(struct gaudio *card)
+void gaudio_cleanup(void)
 {
-	if (card)
-		gaudio_close_snd_dev(card);
+	if (the_card) {
+		gaudio_close_snd_dev(the_card);
+		the_card = NULL;
+	}
 }
 

Modified: trunk/drivers/usb/gadget/u_audio.h (7892 => 7893)


--- trunk/drivers/usb/gadget/u_audio.h	2009-11-30 04:05:46 UTC (rev 7892)
+++ trunk/drivers/usb/gadget/u_audio.h	2009-11-30 06:12:35 UTC (rev 7893)
@@ -51,6 +51,6 @@
 };
 
 int gaudio_setup(struct gaudio *card);
-void gaudio_cleanup(struct gaudio *card);
+void gaudio_cleanup(void);
 
 #endif /* __U_AUDIO_H */
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to