return 0;
 }
 
+/**
+ * __buffer_in_use() - return true if the buffer is in use and
+ * the queue cannot be freed (by the means of REQBUFS(0)) call
+ */
+static bool __buffer_in_use(struct vb2_queue *q, struct vb2_buffer *vb)
+{
+       unsigned int plane;
+       for (plane = 0; plane < vb->num_planes; ++plane) {
+               /*
+                * If num_users() has not been provided, call_memop
+                * will return 0, apparently nobody cares about this
+                * case anyway. If num_users() returns more than 1,
+                * we are not the only user of the plane's memory.
+                */
+               if (call_memop(q, plane, num_users,
+                               vb->planes[plane].mem_priv) > 1)
+                       return true;
+       }
+       return false;
+}
+
+/**
+ * __buffers_in_use() - return true if any buffers on the queue are in use and
+ * the queue cannot be freed (by the means of REQBUFS(0)) call
+ */
+static bool __buffers_in_use(struct vb2_queue *q)
+{
+       unsigned int buffer;
+       for (buffer = 0; buffer < q->num_buffers; ++buffer) {
+               if (__buffer_in_use(q, q->bufs[buffer]))
+                       return true;
+       }
+       return false;
+}
+
 /**
  * __fill_v4l2_buffer() - fill in a struct v4l2_buffer with information to be
  * returned to userspace
                break;
        }
 
-       if (vb->num_planes_mapped == vb->num_planes)
+       if (__buffer_in_use(q, vb))
                b->flags |= V4L2_BUF_FLAG_MAPPED;
 
        return ret;
        return 0;
 }
 
-/**
- * __buffers_in_use() - return true if any buffers on the queue are in use and
- * the queue cannot be freed (by the means of REQBUFS(0)) call
- */
-static bool __buffers_in_use(struct vb2_queue *q)
-{
-       unsigned int buffer, plane;
-       struct vb2_buffer *vb;
-
-       for (buffer = 0; buffer < q->num_buffers; ++buffer) {
-               vb = q->bufs[buffer];
-               for (plane = 0; plane < vb->num_planes; ++plane) {
-                       /*
-                        * If num_users() has not been provided, call_memop
-                        * will return 0, apparently nobody cares about this
-                        * case anyway. If num_users() returns more than 1,
-                        * we are not the only user of the plane's memory.
-                        */
-                       if (call_memop(q, plane, num_users,
-                                       vb->planes[plane].mem_priv) > 1)
-                               return true;
-               }
-       }
-
-       return false;
-}
-
 /**
  * vb2_reqbufs() - Initiate streaming
  * @q:         videobuf2 queue
        if (ret)
                return ret;
 
-       vb_plane->mapped = 1;
-       vb->num_planes_mapped++;
-
        dprintk(3, "Buffer %d, plane %d successfully mapped\n", buffer, plane);
        return 0;
 }
 
 
 struct vb2_plane {
        void                    *mem_priv;
-       int                     mapped:1;
 };
 
 /**
  * @done_entry:                entry on the list that stores all buffers ready to
  *                     be dequeued to userspace
  * @planes:            private per-plane information; do not change
- * @num_planes_mapped: number of mapped planes; do not change
  */
 struct vb2_buffer {
        struct v4l2_buffer      v4l2_buf;
        struct list_head        done_entry;
 
        struct vb2_plane        planes[VIDEO_MAX_PLANES];
-       unsigned int            num_planes_mapped;
 };
 
 /**