Commit 982d6ab50115025c63f4b9f7175614008c41d449
Committed by
Greg Kroah-Hartman
1 parent
6f37aca827
Exists in
master
and in
6 other branches
line6: fix memory leaks in line6_init_midi()
If the first call to line6_midibuf_init() fails we'll leak a little bit of memory. If the second call fails we'll leak a bit more. This happens when we return from the function and the local variable 'line6midi' goes out of scope. Signed-off-by: Jesper Juhl <jj@chaosbits.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Showing 1 changed file with 7 additions and 2 deletions Side-by-side Diff
drivers/staging/line6/midi.c
... | ... | @@ -391,12 +391,17 @@ |
391 | 391 | return -ENOMEM; |
392 | 392 | |
393 | 393 | err = line6_midibuf_init(&line6midi->midibuf_in, MIDI_BUFFER_SIZE, 0); |
394 | - if (err < 0) | |
394 | + if (err < 0) { | |
395 | + kfree(line6midi); | |
395 | 396 | return err; |
397 | + } | |
396 | 398 | |
397 | 399 | err = line6_midibuf_init(&line6midi->midibuf_out, MIDI_BUFFER_SIZE, 1); |
398 | - if (err < 0) | |
400 | + if (err < 0) { | |
401 | + kfree(line6midi->midibuf_in.buf); | |
402 | + kfree(line6midi); | |
399 | 403 | return err; |
404 | + } | |
400 | 405 | |
401 | 406 | line6midi->line6 = line6; |
402 | 407 | line6midi->midi_mask_transmit = 1; |