summaryrefslogtreecommitdiff
path: root/sound/sound_core.c
diff options
context:
space:
mode:
authorWenwen Wang <wenwen@cs.uga.edu>2019-08-08 00:15:21 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-08-25 10:51:18 +0200
commit808dff56c326ebab0a4848d501ebe60b612e3815 (patch)
tree021d14d911b5dbbaeb0f4d8561954efc18485d93 /sound/sound_core.c
parentf34431096132f2865dd8ca02448a0b112fa52d52 (diff)
sound: fix a memory leak bug
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>
Diffstat (limited to 'sound/sound_core.c')
-rw-r--r--sound/sound_core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/sound_core.c b/sound/sound_core.c
index 99b73c675743..20d4e2e1bacf 100644
--- 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;
}
}