On 29.03.23 14:28, Hans Verkuil wrote: > If the fcc is 0 (indicating an unknown GUID format), then fill in the > description field in ENUM_FMT. Otherwise the V4L2 core will WARN. > > Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> > Fixes: 50459f103edf ("media: uvcvideo: Remove format descriptions") Thx for working on this. Would be good to have Reported-by and Link tags for any reports about the issue; I'm aware of the following two, maybe there were more: https://bugzilla.kernel.org/show_bug.cgi?id=217252 https://bugzilla.redhat.com/show_bug.cgi?id=2180107 And a Cc: <stable@xxxxxxxxxxxxxxx> # 5.15.x would likely be good as well, as the culprit was backported. But I write for a different reason: how urgent is this fix? Is this "just" fixing a kernel warning, or do users notice this as some apps crash? The bugzilla.redhat.com ticket's subject indicates it's the latter; and I think I saw someone else mentioning that this leads to crashes, but maybe I'm mixing things up. Because if this fixes a crash, it afaics would be good to get this fixed rather sooner than later in mainline, so that it can be fixed in stable as well. Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat) -- Everything you wanna know about Linux kernel regression tracking: https://linux-regtracking.leemhuis.info/about/#tldr If I did something stupid, please tell me, as explained on that page. > --- > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index 7aefa76a42b3..2f1ced1212cd 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -256,6 +256,9 @@ static int uvc_parse_format(struct uvc_device *dev, > } else { > dev_info(&streaming->intf->dev, > "Unknown video format %pUl\n", &buffer[5]); > + snprintf(format->name, sizeof(format->name), "%pUl\n", > + &buffer[5]); > + > format->fcc = 0; > } > > diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c > index 35453f81c1d9..fc6f9e7d8506 100644 > --- a/drivers/media/usb/uvc/uvc_v4l2.c > +++ b/drivers/media/usb/uvc/uvc_v4l2.c > @@ -713,6 +713,10 @@ static int uvc_ioctl_enum_fmt(struct uvc_streaming *stream, > if (format->flags & UVC_FMT_FLAG_COMPRESSED) > fmt->flags |= V4L2_FMT_FLAG_COMPRESSED; > fmt->pixelformat = format->fcc; > + if (format->name[0]) > + strscpy(fmt->description, format->name, > + sizeof(fmt->description)); > + > return 0; > } > > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h > index 9a596c8d894a..22656755a801 100644 > --- a/drivers/media/usb/uvc/uvcvideo.h > +++ b/drivers/media/usb/uvc/uvcvideo.h > @@ -264,6 +264,8 @@ struct uvc_format { > u32 fcc; > u32 flags; > > + char name[32]; > + > unsigned int nframes; > struct uvc_frame *frame; > }; > > >