mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
usb: gadget: uvc: configfs: ensure guid to be valid before set
When setting the guid via configfs it is possible to test if its value is one of the kernel supported ones by calling uvc_format_by_guid on it. If the result is NULL, we know the guid is unsupported and can be ignored. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Link: https://lore.kernel.org/r/20240221-uvc-gadget-configfs-guid-v1-1-f0678ca62ebb@pengutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7a700d8f24
commit
f7a7f80ccc
|
|
@ -13,6 +13,7 @@
|
|||
#include "uvc_configfs.h"
|
||||
|
||||
#include <linux/sort.h>
|
||||
#include <linux/usb/uvc.h>
|
||||
#include <linux/usb/video.h>
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
@ -2260,6 +2261,8 @@ static ssize_t uvcg_uncompressed_guid_format_store(struct config_item *item,
|
|||
struct f_uvc_opts *opts;
|
||||
struct config_item *opts_item;
|
||||
struct mutex *su_mutex = &ch->fmt.group.cg_subsys->su_mutex;
|
||||
const struct uvc_format_desc *format;
|
||||
u8 tmpguidFormat[sizeof(ch->desc.guidFormat)];
|
||||
int ret;
|
||||
|
||||
mutex_lock(su_mutex); /* for navigating configfs hierarchy */
|
||||
|
|
@ -2273,7 +2276,16 @@ static ssize_t uvcg_uncompressed_guid_format_store(struct config_item *item,
|
|||
goto end;
|
||||
}
|
||||
|
||||
memcpy(ch->desc.guidFormat, page,
|
||||
memcpy(tmpguidFormat, page,
|
||||
min(sizeof(tmpguidFormat), len));
|
||||
|
||||
format = uvc_format_by_guid(tmpguidFormat);
|
||||
if (!format) {
|
||||
ret = -EINVAL;
|
||||
goto end;
|
||||
}
|
||||
|
||||
memcpy(ch->desc.guidFormat, tmpguidFormat,
|
||||
min(sizeof(ch->desc.guidFormat), len));
|
||||
ret = sizeof(ch->desc.guidFormat);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user