Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df349239 authored by Hamad Kadmany's avatar Hamad Kadmany
Browse files

media: dvb: Fix buffer size check



For filters configured with output to DVR device,
the buffer size to check against is the DVR output
buffer rather than the filter buffer.

Change-Id: Ia9051e8778e1a8346358b3cbaf6a9178fe232679
Signed-off-by: default avatarHamad Kadmany <hkadmany@codeaurora.org>
parent 5a282630
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -56,10 +56,10 @@ static inline int dvb_dmxdev_verify_buffer_size(u32 size, u32 max_size,
		return size <= max_size;
}

static int dvb_filter_verify_buffer_size(struct dmxdev_filter *filter,
	size_t size)
static int dvb_filter_verify_buffer_size(struct dmxdev_filter *filter)
{
	struct dmx_caps caps;
	size_t size = filter->buffer.size;

	/*
	 * For backward compatibility, if no demux capabilities can
@@ -81,6 +81,9 @@ static int dvb_filter_verify_buffer_size(struct dmxdev_filter *filter,
				caps.pes.max_size,
				caps.pes.size_alignment);

		size = (filter->params.pes.output == DMX_OUT_TS_TAP) ?
			filter->dev->dvr_buffer.size : size;

		if (filter->params.pes.output == DMX_OUT_TSDEMUX_TAP ||
			filter->params.pes.output == DMX_OUT_TS_TAP) {
			if (filter->dmx_tsp_format == DMX_TSP_FORMAT_188)
@@ -3379,7 +3382,7 @@ static int dvb_dmxdev_filter_start(struct dmxdev_filter *filter)
	if (filter->state >= DMXDEV_STATE_GO)
		dvb_dmxdev_filter_stop(filter);

	if (!dvb_filter_verify_buffer_size(filter, filter->buffer.size))
	if (!dvb_filter_verify_buffer_size(filter))
		return -EINVAL;

	if (!filter->buffer.data) {