summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaosheng Cui <cuigaosheng1@huawei.com>2024-10-09 16:28:02 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-12-09 10:41:00 +0100
commit891b5790bee8fc6ddba17874dd87a646128d0b99 (patch)
tree0b1b632867991b4784588b61e9d277d6eb549e71
parent6f238d62018157e2239e2f094a7236057e82b0cd (diff)
media: platform: allegro-dvt: Fix possible memory leak in allocate_buffers_internal()
commit 0f514068fbc5d4d189c817adc7c4e32cffdc2e47 upstream. The buffer in the loop should be released under the exception path, otherwise there may be a memory leak here. To mitigate this, free the buffer when allegro_alloc_buffer fails. Fixes: f20387dfd065 ("media: allegro: add Allegro DVT video IP core driver") Cc: <stable@vger.kernel.org> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/media/platform/allegro-dvt/allegro-core.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/media/platform/allegro-dvt/allegro-core.c b/drivers/media/platform/allegro-dvt/allegro-core.c
index 73606cee586e..88c36eb6174a 100644
--- a/drivers/media/platform/allegro-dvt/allegro-core.c
+++ b/drivers/media/platform/allegro-dvt/allegro-core.c
@@ -1509,8 +1509,10 @@ static int allocate_buffers_internal(struct allegro_channel *channel,
INIT_LIST_HEAD(&buffer->head);
err = allegro_alloc_buffer(dev, buffer, size);
- if (err)
+ if (err) {
+ kfree(buffer);
goto err;
+ }
list_add(&buffer->head, list);
}