From 5c1ac6945526c76258869c8c04632ab5ae61bdab Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 8 Jul 2015 10:44:09 -0700 Subject: [PATCH] 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 Reviewed-by: Alex Elder --- drivers/staging/greybus/raw.c | 1 + drivers/staging/greybus/uart.c | 1 + drivers/staging/greybus/vibrator.c | 1 + 3 files changed, 3 insertions(+) diff --git a/drivers/staging/greybus/raw.c b/drivers/staging/greybus/raw.c index d93d052a8a7e..3be96db2588b 100644 --- a/drivers/staging/greybus/raw.c +++ b/drivers/staging/greybus/raw.c @@ -364,6 +364,7 @@ static void __exit raw_exit(void) 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 e2a456f8105c..3932f8667d31 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -761,6 +761,7 @@ static void gb_tty_exit(void) { 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 20f09bba5fac..62b3552006fc 100644 --- a/drivers/staging/greybus/vibrator.c +++ b/drivers/staging/greybus/vibrator.c @@ -190,6 +190,7 @@ static __exit void protocol_exit(void) { gb_protocol_deregister(&vibrator_protocol); class_unregister(&vibrator_class); + ida_destroy(&minors); } module_exit(protocol_exit); -- 2.39.5