return -EINVAL;
if (!num_subbuf || (num_subbuf & (num_subbuf - 1)))
return -EINVAL;
+ /*
+ * Overwrite mode buffers require at least 2 subbuffers per
+ * buffer.
+ */
+ if (config->mode == RING_BUFFER_OVERWRITE && num_subbuf < 2)
+ return -EINVAL;
ret = subbuffer_id_check_index(config, num_subbuf);
if (ret)
+ (offset & ~PAGE_MASK),
src, pagecpy) != 0;
if (ret > 0) {
- offset += (pagecpy - ret);
- len -= (pagecpy - ret);
+ /* Copy failed. */
_lib_ring_buffer_memset(bufb, offset, 0, len, 0);
break; /* stop copy */
}