Messages in this thread | | | Date | Thu, 24 Mar 2022 15:52:21 +0200 | From | Laurent Pinchart <> | Subject | Re: [PATCH] media: uvc_video: fix bit overflow in uvc_probe_video |
| |
Hi Hangyu,
Thank you for the patch.
On Thu, Mar 24, 2022 at 05:13:08PM +0800, Hangyu Hua wrote: > probe->dwMaxPayloadTransferSize is a 32bit value, but bandwidth is 16bit. This > may lead to a bit overflow. > > Signed-off-by: Hangyu Hua <hbh25y@gmail.com> > --- > drivers/media/usb/uvc/uvc_video.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c > index 1b4cc934109e..cc4878373aa7 100644 > --- a/drivers/media/usb/uvc/uvc_video.c > +++ b/drivers/media/usb/uvc/uvc_video.c > @@ -383,7 +383,7 @@ int uvc_probe_video(struct uvc_streaming *stream, > struct uvc_streaming_control *probe) > { > struct uvc_streaming_control probe_min, probe_max; > - u16 bandwidth; > + u32 bandwidth; > unsigned int i; > int ret; > > @@ -422,7 +422,7 @@ int uvc_probe_video(struct uvc_streaming *stream, > break; > > bandwidth = probe->dwMaxPayloadTransferSize; > - if (bandwidth <= stream->maxpsize) > + if (bandwidth <= (u32)stream->maxpsize)
The cast to u32 isn't needed, it's implicit.
This could actually be written
if (probe->dwMaxPayloadTransferSize <= stream->maxpsize)
The bandwidth local variable can be dropped. Could you submit a v2 with this change ?
> break; > > if (stream->dev->quirks & UVC_QUIRK_PROBE_MINMAX) {
-- Regards,
Laurent Pinchart
| |