Commit 982d6ab50115025c63f4b9f7175614008c41d449

Authored by Jesper Juhl
Committed by Greg Kroah-Hartman
1 parent 6f37aca827

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;