mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 11:06:03 +02:00
media: meson: vdec: fix NULL pointer deref in vdec_try_fmt_common
When VIDIOC_TRY_FMT is called with an unsupported pixel format on the
OUTPUT queue, vdec_try_fmt_common() falls back to V4L2_PIX_FMT_MPEG2.
However, if a distro has locally patched MPEG2 support out (as it has
been broken for some time) the platform format table does not contain
MPEG2 so find_format() returns NULL and the subsequent dereference of
fmt_out->max_width triggers a NULL pointer dereference.
Fix this by falling back to the first format in the platform's format
array instead of hardcoding V4L2_PIX_FMT_MPEG2. This is always valid
since every platform defines at least one format.
Fixes: 3e7f51bd96 ("media: meson: add v4l2 m2m video decoder driver")
Cc: stable@vger.kernel.org
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
7504c24636
commit
20aa934ace
|
|
@ -504,8 +504,8 @@ vdec_try_fmt_common(struct amvdec_session *sess, u32 size,
|
|||
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
|
||||
fmt_out = find_format(fmts, size, pixmp->pixelformat);
|
||||
if (!fmt_out) {
|
||||
pixmp->pixelformat = V4L2_PIX_FMT_MPEG2;
|
||||
fmt_out = find_format(fmts, size, pixmp->pixelformat);
|
||||
pixmp->pixelformat = fmts[0].pixfmt;
|
||||
fmt_out = &fmts[0];
|
||||
}
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user