}
                        vb->planes[plane].dbuf_mapped = 1;
                }
+       } else {
+               for (plane = 0; plane < vb->num_planes; ++plane)
+                       dma_buf_put(planes[plane].dbuf);
+       }
 
-               /*
-                * Now that everything is in order, copy relevant information
-                * provided by userspace.
-                */
-               for (plane = 0; plane < vb->num_planes; ++plane) {
-                       vb->planes[plane].bytesused = planes[plane].bytesused;
-                       vb->planes[plane].length = planes[plane].length;
-                       vb->planes[plane].m.fd = planes[plane].m.fd;
-                       vb->planes[plane].data_offset = planes[plane].data_offset;
-               }
+       /*
+        * Now that everything is in order, copy relevant information
+        * provided by userspace.
+        */
+       for (plane = 0; plane < vb->num_planes; ++plane) {
+               vb->planes[plane].bytesused = planes[plane].bytesused;
+               vb->planes[plane].length = planes[plane].length;
+               vb->planes[plane].m.fd = planes[plane].m.fd;
+               vb->planes[plane].data_offset = planes[plane].data_offset;
+       }
 
+       if (reacquired) {
                /*
                 * Call driver-specific initialization on the newly acquired buffer,
                 * if provided.
                        dprintk(q, 1, "buffer initialization failed\n");
                        goto err_put_vb2_buf;
                }
-       } else {
-               for (plane = 0; plane < vb->num_planes; ++plane)
-                       dma_buf_put(planes[plane].dbuf);
        }
 
        ret = call_vb_qop(vb, buf_prepare, vb);