diff options
author | Wenwen Wang | 2019-08-08 07:15:21 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2019-08-16 10:12:39 +0200 |
commit | 9575ba61ba19edea77575c28bc2f6ff1f8145298 (patch) | |
tree | 01541dd9307b328b3d09d4dfaa7bd6af5bfdf0a8 /sound | |
parent | usb: iowarrior: fix deadlock on disconnect (diff) | |
download | kernel-qcow2-linux-9575ba61ba19edea77575c28bc2f6ff1f8145298.tar.gz kernel-qcow2-linux-9575ba61ba19edea77575c28bc2f6ff1f8145298.tar.xz kernel-qcow2-linux-9575ba61ba19edea77575c28bc2f6ff1f8145298.zip |
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')
-rw-r--r-- | sound/sound_core.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/sound_core.c b/sound/sound_core.c index 40ad000c2e3c..dd64c4b19f23 100644 --- a/sound/sound_core.c +++ b/sound/sound_core.c @@ -280,7 +280,8 @@ retry: goto retry; } spin_unlock(&sound_loader_lock); - return -EBUSY; + r = -EBUSY; + goto fail; } } |