Commit c7cd7c74 authored by Wenwen Wang's avatar Wenwen Wang Committed by Takashi Iwai

sound: fix a memory leak bug

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: default avatarWenwen Wang <wenwen@cs.uga.edu>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent c02f77d3
...@@ -275,7 +275,8 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati ...@@ -275,7 +275,8 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati
goto retry; goto retry;
} }
spin_unlock(&sound_loader_lock); spin_unlock(&sound_loader_lock);
return -EBUSY; r = -EBUSY;
goto fail;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment