| From c7cd7c748a3250ca33509f9235efab9c803aca09 Mon Sep 17 00:00:00 2001 |
| From: Wenwen Wang <wenwen@cs.uga.edu> |
| Date: Thu, 8 Aug 2019 00:15:21 -0500 |
| Subject: sound: fix a memory leak bug |
| |
| From: Wenwen Wang <wenwen@cs.uga.edu> |
| |
| commit c7cd7c748a3250ca33509f9235efab9c803aca09 upstream. |
| |
| In sound_insert_unit(), the controlling structure 's' is allocated through |
| kmalloc(). Then it is added to the sound driver list by invoking |
| __sound_insert_unit(). Later on, if __register_chrdev() fails, 's' is |
| removed from the list through __sound_remove_unit(). If 'index' is not less |
| than 0, -EBUSY is returned to indicate the error. However, 's' is not |
| deallocated on this execution path, leading to a memory leak bug. |
| |
| To fix the above issue, free 's' before -EBUSY is returned. |
| |
| Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/sound_core.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/sound/sound_core.c |
| +++ b/sound/sound_core.c |
| @@ -287,7 +287,8 @@ retry: |
| goto retry; |
| } |
| spin_unlock(&sound_loader_lock); |
| - return -EBUSY; |
| + r = -EBUSY; |
| + goto fail; |
| } |
| } |
| |