| From 7e40e0bb778907b2441bff68d73c3eb6b6cd319f Mon Sep 17 00:00:00 2001 |
| From: Ludwig Disterhof <ludwig@disterhof.eu> |
| Date: Mon, 28 Apr 2025 20:16:50 +0200 |
| Subject: media: usbtv: Lock resolution while streaming |
| |
| From: Ludwig Disterhof <ludwig@disterhof.eu> |
| |
| commit 7e40e0bb778907b2441bff68d73c3eb6b6cd319f upstream. |
| |
| When an program is streaming (ffplay) and another program (qv4l2) |
| changes the TV standard from NTSC to PAL, the kernel crashes due to trying |
| to copy to unmapped memory. |
| |
| Changing from NTSC to PAL increases the resolution in the usbtv struct, |
| but the video plane buffer isn't adjusted, so it overflows. |
| |
| Fixes: 0e0fe3958fdd13d ("[media] usbtv: Add support for PAL video source") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Ludwig Disterhof <ludwig@disterhof.eu> |
| Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> |
| [hverkuil: call vb2_is_busy instead of vb2_is_streaming] |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/media/usb/usbtv/usbtv-video.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/media/usb/usbtv/usbtv-video.c |
| +++ b/drivers/media/usb/usbtv/usbtv-video.c |
| @@ -73,6 +73,10 @@ static int usbtv_configure_for_norm(stru |
| } |
| |
| if (params) { |
| + if (vb2_is_busy(&usbtv->vb2q) && |
| + (usbtv->width != params->cap_width || |
| + usbtv->height != params->cap_height)) |
| + return -EBUSY; |
| usbtv->width = params->cap_width; |
| usbtv->height = params->cap_height; |
| usbtv->n_chunks = usbtv->width * usbtv->height |