greybus: properly cleanup ida and idr structures when shutting down

idr and ida structures have internal memory allocated that needs to be
freed when modules are removed.  So call the proper idr_destroy() or
ida_destroy() functions on the module exit path to free the memory.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Alex Elder <elder@linaro.org>
diff --git a/drivers/staging/greybus/raw.c b/drivers/staging/greybus/raw.c
index d93d052..3be96db 100644
--- a/drivers/staging/greybus/raw.c
+++ b/drivers/staging/greybus/raw.c
@@ -364,6 +364,7 @@
 	gb_protocol_deregister(&raw_protocol);
 	unregister_chrdev_region(MKDEV(raw_major, 0), NUM_MINORS);
 	class_destroy(raw_class);
+	ida_destroy(&minors);
 }
 module_exit(raw_exit);
 
diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c
index e2a456f..3932f86 100644
--- a/drivers/staging/greybus/uart.c
+++ b/drivers/staging/greybus/uart.c
@@ -761,6 +761,7 @@
 {
 	tty_unregister_driver(gb_tty_driver);
 	put_tty_driver(gb_tty_driver);
+	idr_destroy(&tty_minors);
 }
 
 static struct gb_protocol uart_protocol = {
diff --git a/drivers/staging/greybus/vibrator.c b/drivers/staging/greybus/vibrator.c
index 20f09bb..62b3552 100644
--- a/drivers/staging/greybus/vibrator.c
+++ b/drivers/staging/greybus/vibrator.c
@@ -190,6 +190,7 @@
 {
 	gb_protocol_deregister(&vibrator_protocol);
 	class_unregister(&vibrator_class);
+	ida_destroy(&minors);
 }
 module_exit(protocol_exit);