Commit a67df6d1 authored by Oliver Neukum's avatar Oliver Neukum Committed by Greg Kroah-Hartman
Browse files

uapi: cdc.h: cleanly provide for more interfaces and countries



The spec requires at least one interface respectively country.
It allows multiple ones. This needs to be clearly said in the UAPI.
This is subject to sanity checking in cdc_parse_cdc_header(), thus
we can trust the length.

Signed-off-by: default avatarOliver Neukum <oneukum@suse.com>
Link: https://patch.msgid.link/20251111134641.4118827-1-oneukum@suse.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8d3c283e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1475,7 +1475,7 @@ static int acm_probe(struct usb_interface *intf,
		if (!acm->country_codes)
			goto skip_countries;
		acm->country_code_size = cfd->bLength - 4;
		memcpy(acm->country_codes, (u8 *)&cfd->wCountyCode0,
		memcpy(acm->country_codes, cfd->wCountryCodes,
							cfd->bLength - 4);
		acm->country_rel_date = cfd->iCountryCodeRelDate;

+8 −4
Original line number Diff line number Diff line
@@ -104,8 +104,10 @@ struct usb_cdc_union_desc {
	__u8	bDescriptorSubType;

	__u8	bMasterInterface0;
	union {
		__u8	bSlaveInterface0;
	/* ... and there could be other slave interfaces */
		__DECLARE_FLEX_ARRAY(__u8, bSlaveInterfaces);
	};
} __attribute__ ((packed));

/* "Country Selection Functional Descriptor" from CDC spec 5.2.3.9 */
@@ -115,8 +117,10 @@ struct usb_cdc_country_functional_desc {
	__u8	bDescriptorSubType;

	__u8	iCountryCodeRelDate;
	__le16	wCountyCode0;
	/* ... and there can be a lot of country codes */
	union {
		__le16	wCountryCode0;
		__DECLARE_FLEX_ARRAY(__le16, wCountryCodes);
	};
} __attribute__ ((packed));

/* "Network Channel Terminal Functional Descriptor" from CDC spec 5.2.3.11 */