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 <tzimmerm...@suse.de> Reviewed-by: Patrik Jakobsson <patrik.r.jakobs...@gmail.com> --- drivers/gpu/drm/udl/udl_main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c index 58d6065589d3a..d3a04bcb65d25 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; -- 2.49.0