Merge git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs
[firefly-linux-kernel-4.4.55.git] / drivers / media / common / saa7146_video.c
index becbaadb3b7748eb616ec18e997bc767c68e3312..b8b2c551a1e2d07aae91c983103c29fb52820080 100644 (file)
@@ -558,9 +558,11 @@ static int vidioc_s_fbuf(struct file *file, void *fh, struct v4l2_framebuffer *f
        /* ok, accept it */
        vv->ov_fb = *fb;
        vv->ov_fmt = fmt;
-       if (0 == vv->ov_fb.fmt.bytesperline)
-               vv->ov_fb.fmt.bytesperline =
-                       vv->ov_fb.fmt.width * fmt->depth / 8;
+
+       if (vv->ov_fb.fmt.bytesperline < vv->ov_fb.fmt.width) {
+               vv->ov_fb.fmt.bytesperline = vv->ov_fb.fmt.width * fmt->depth / 8;
+               DEB_D(("setting bytesperline to %d\n", vv->ov_fb.fmt.bytesperline));
+       }
 
        mutex_unlock(&dev->lock);
        return 0;
@@ -1333,9 +1335,9 @@ static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb)
 
        DEB_CAP(("vbuf:%p\n",vb));
 
-       release_all_pagetables(dev, buf);
-
        saa7146_dma_free(dev,q,buf);
+
+       release_all_pagetables(dev, buf);
 }
 
 static struct videobuf_queue_ops video_qops = {