aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/gpu/drm/udl/udl_main.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2025-04-10 12:59:04 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2025-04-14 10:19:20 +0200
commitf4fce9ea8473ab8f91c0aa0855b9d51313b8000e (patch)
tree92eff32e0eaeaf13f724249d3839fa2ff387b0bc /drivers/gpu/drm/udl/udl_main.c
parentdrm/udl: Return error if vendor descriptor is too short (diff)
downloadwireguard-linux-f4fce9ea8473ab8f91c0aa0855b9d51313b8000e.tar.xz
wireguard-linux-f4fce9ea8473ab8f91c0aa0855b9d51313b8000e.zip
drm/udl: Treat vendor descriptor as u8
The vendor descriptor is an array of unsigned bytes. It is raw data that is not to be modified. Declare it as 'const u8'. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Link: https://lore.kernel.org/r/20250410105948.25463-8-tzimmermann@suse.de
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/udl/udl_main.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index 58d6065589d3..d3a04bcb65d2 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -28,19 +28,18 @@ static struct urb *udl_get_urb_locked(struct udl_device *udl, long timeout);
static int udl_parse_vendor_descriptor(struct udl_device *udl)
{
struct usb_device *udev = udl_to_usb_device(udl);
- char *desc;
- char *buf;
- char *desc_end;
+ void *buf;
int ret;
unsigned int len;
+ const u8 *desc;
+ const u8 *desc_end;
buf = kzalloc(MAX_VENDOR_DESCRIPTOR_SIZE, GFP_KERNEL);
if (!buf)
return false;
- desc = buf;
ret = usb_get_descriptor(udev, 0x5f, /* vendor specific */
- 0, desc, MAX_VENDOR_DESCRIPTOR_SIZE);
+ 0, buf, MAX_VENDOR_DESCRIPTOR_SIZE);
if (ret < 0)
goto unrecognized;
len = ret;
@@ -48,6 +47,9 @@ static int udl_parse_vendor_descriptor(struct udl_device *udl)
if (len < 5)
goto unrecognized;
+ desc = buf;
+ desc_end = desc + len;
+
DRM_INFO("vendor descriptor length: %u data:%11ph\n", len, desc);
if ((desc[0] != len) || /* descriptor length */
@@ -56,9 +58,7 @@ static int udl_parse_vendor_descriptor(struct udl_device *udl)
(desc[3] != 0x00) ||
(desc[4] != len - 2)) /* length after type */
goto unrecognized;
-
- desc_end = desc + len;
- desc += 5; /* the fixed header we've already parsed */
+ desc += 5;
while (desc < desc_end) {
u8 length;