Re: [PATCH 1/2] media: uvcvideo: Fix NULL deref on events for uninitialized controls

From: Ricardo Ribalda

Date: Mon Sep 07 2026 - 03:29:01 EST


Hi Wei

On Mon, 7 Sept 2026 at 08:34, Wei Jie Law <98lawweijie@xxxxxxxxx> wrote:
>
> A null-ptr-deref exists in v6.12.105 and upstream. KASAN crash log:
>
> KASAN: null-ptr-deref in range [0x0000000000000080-0x0000000000000087]
> Workqueue: events uvc_ctrl_status_event_work
> RIP: 0010:uvc_ctrl_status_event+0x105/0x280
> uvc_ctrl_status_event_work+0x82/0x240
> process_one_work+0x66f/0x10b0

Could you provide more info on how you reproduced the error?

>
> XU controls are initialized lazily, on the first UVCIOC_CTRL_MAP or
> UVCIOC_CTRL_QUERY. Until then ctrl->info is all zeroes, so
> info.mappings is not a valid list head, list_empty() returns false, and
> uvc_ctrl_status_event() walks it from a NULL next pointer.
>
> Fixes: e5225c820c05 ("media: uvcvideo: Send a control event when a Control Change interrupt arrives")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Wei Jie Law <98lawweijie@xxxxxxxxx>
Reviewed-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>
> Assisted-by: Claude:claude-opus-5
> ---
> drivers/media/usb/uvc/uvc_ctrl.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
> index 3ca108b83f1d..21802f9b1b61 100644
> --- a/drivers/media/usb/uvc/uvc_ctrl.c
> +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> @@ -2209,7 +2209,12 @@ bool uvc_ctrl_status_event_async(struct urb *urb, struct uvc_video_chain *chain,
> struct uvc_device *dev = chain->dev;
> struct uvc_ctrl_work *w = &dev->async_ctrl;
>
> - if (list_empty(&ctrl->info.mappings))
> + /*
> + * An uninitialized control has a zeroed info struct, so its
> + * mappings list head is not a list: list_empty() returns false
> + * and the walk dereferences NULL.
> + */
nit: I would not add the comment.
> + if (!ctrl->initialized || list_empty(&ctrl->info.mappings))
> return false;
>
> w->data = data;
> --
> 2.43.0
>
>


--
Ricardo Ribalda