videobuf_streamoff(&dev->cap);
                res_free(dev, fh, RESOURCE_VIDEO);
                videobuf_mmap_free(&dev->cap);
+               INIT_LIST_HEAD(&dev->cap.stream);
        }
        if (dev->cap.read_buf) {
                buffer_release(&dev->cap, dev->cap.read_buf);
                videobuf_stop(&dev->vbi);
                res_free(dev, fh, RESOURCE_VBI);
                videobuf_mmap_free(&dev->vbi);
+               INIT_LIST_HEAD(&dev->vbi.stream);
        }
 
        /* ts-capture will not work in planar mode, so turn it off Hac: 04.05*/
                                        enum v4l2_buf_type type)
 {
        struct saa7134_dev *dev = video_drvdata(file);
-       int err;
        int res = saa7134_resource(file);
 
        if (res != RESOURCE_EMPRESS)
                pm_qos_remove_request(&dev->qos_request);
 
-       err = videobuf_streamoff(saa7134_queue(file));
-       if (err < 0)
-               return err;
-       res_free(dev, priv, res);
-       return 0;
+       return videobuf_streamoff(saa7134_queue(file));
 }
 EXPORT_SYMBOL_GPL(saa7134_streamoff);