media: vimc: streamer: fix memory leak in vimc subdevs if kthread_run fails
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Mon, 13 Jan 2020 18:59:33 +0000 (19:59 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 24 Feb 2020 15:16:20 +0000 (16:16 +0100)
In case kthread_run fails, the vimc subdevices
should be notified that streaming stopped so they can
release the memory for the streaming. Also, kthread should be
set to NULL.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/vimc/vimc-streamer.c

index cd6b554..43e494d 100644 (file)
@@ -207,8 +207,13 @@ int vimc_streamer_s_stream(struct vimc_stream *stream,
                stream->kthread = kthread_run(vimc_streamer_thread, stream,
                                              "vimc-streamer thread");
 
-               if (IS_ERR(stream->kthread))
-                       return PTR_ERR(stream->kthread);
+               if (IS_ERR(stream->kthread)) {
+                       ret = PTR_ERR(stream->kthread);
+                       dev_err(ved->dev, "kthread_run failed with %d\n", ret);
+                       vimc_streamer_pipeline_terminate(stream);
+                       stream->kthread = NULL;
+                       return ret;
+               }
 
        } else {
                if (!stream->kthread)