kthread_run returns an error pointer, but elsewhere in the code
dev->kthread_vid_cap/out is checked against NULL.
If kthread_run returns an error, then set the pointer to NULL.
I chose this method over changing all kthread_vid_cap/out tests
elsewhere since this is more robust.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reported-by: syzbot+53d5b2df0d9744411e2e@syzkaller.appspotmail.com
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
                        "%s-vid-cap", dev->v4l2_dev.name);
 
        if (IS_ERR(dev->kthread_vid_cap)) {
+               int err = PTR_ERR(dev->kthread_vid_cap);
+
+               dev->kthread_vid_cap = NULL;
                v4l2_err(&dev->v4l2_dev, "kernel_thread() failed\n");
-               return PTR_ERR(dev->kthread_vid_cap);
+               return err;
        }
        *pstreaming = true;
        vivid_grab_controls(dev, true);
 
                        "%s-vid-out", dev->v4l2_dev.name);
 
        if (IS_ERR(dev->kthread_vid_out)) {
+               int err = PTR_ERR(dev->kthread_vid_out);
+
+               dev->kthread_vid_out = NULL;
                v4l2_err(&dev->v4l2_dev, "kernel_thread() failed\n");
-               return PTR_ERR(dev->kthread_vid_out);
+               return err;
        }
        *pstreaming = true;
        vivid_grab_controls(dev, true);