ret = dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2,
buffer2_len);
}
- if (ret < 0)
+ if (ret < 0) {
+ dvb_ringbuffer_flush(&dmxdevfilter->buffer);
dmxdevfilter->buffer.error = ret;
+ }
if (dmxdevfilter->params.sec.flags & DMX_ONESHOT)
dmxdevfilter->state = DMXDEV_STATE_DONE;
spin_unlock(&dmxdevfilter->dev->lock);
ret = dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len);
if (ret == buffer1_len)
ret = dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len);
- if (ret < 0)
+ if (ret < 0) {
+ dvb_ringbuffer_flush(buffer);
buffer->error = ret;
+ }
spin_unlock(&dmxdevfilter->dev->lock);
wake_up(&buffer->queue);
return 0;