Messages in this thread | | | Subject | Re: [PATCH] sound: Fix memory leak on error in snd_compr_set_params() | From | Vinod Koul <> | Date | Tue, 24 Jan 2012 14:46:14 +0530 |
| |
On Mon, 2012-01-23 at 21:02 +0100, Jesper Juhl wrote: > If copy_from_user() does not return 0 we'll leak the memory we > allocated for 'params' when that variable goes out of scope. > > Also a small CodingStyle cleanup: Use braces on both branches of > if/else when one branch needs it. > > Signed-off-by: Jesper Juhl <jj@chaosbits.net> Thanks for the fix Acked-by: Vinod Koul <vinod.koul@linux.intel.com> > --- > sound/core/compress_offload.c | 13 ++++++++----- > 1 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c > index dac3633..a68aed7 100644 > --- a/sound/core/compress_offload.c > +++ b/sound/core/compress_offload.c > @@ -441,19 +441,22 @@ snd_compr_set_params(struct snd_compr_stream *stream, unsigned long arg) > params = kmalloc(sizeof(*params), GFP_KERNEL); > if (!params) > return -ENOMEM; > - if (copy_from_user(params, (void __user *)arg, sizeof(*params))) > - return -EFAULT; > + if (copy_from_user(params, (void __user *)arg, sizeof(*params))) { > + retval = -EFAULT; > + goto out; > + } > retval = snd_compr_allocate_buffer(stream, params); > if (retval) { > - kfree(params); > - return -ENOMEM; > + retval = -ENOMEM; > + goto out; > } > retval = stream->ops->set_params(stream, params); > if (retval) > goto out; > stream->runtime->state = SNDRV_PCM_STATE_SETUP; > - } else > + } else { > return -EPERM; > + } > out: > kfree(params); > return retval; > -- > 1.7.8.4 > >
-- ~Vinod
| |