rk: revert to v3.10
[firefly-linux-kernel-4.4.55.git] / drivers / media / dvb-core / dmxdev.c
index 0b4616b8719594560a70a1dfb977a206de5eba4b..a1a3a5159d71f1ffc3ab244232bf68b6877d5f50 100644 (file)
@@ -377,8 +377,10 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len,
                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);
@@ -414,8 +416,10 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len,
        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;