diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-07 11:48:15 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-24 20:21:42 -0500 |
commit | 403dff4e2c94f275e24fd85f40b2732ffec268a1 (patch) | |
tree | 0fca85c289bfb39fa05f085b5a9655684ee57e19 | |
parent | d908f8478a8d18e66c80a12adb27764920c1f1ca (diff) |
USB: cdc-acm: check for valid interfaces
We need to check that we have both a valid data and control inteface for both
types of headers (union and not union.)
References: https://bugzilla.kernel.org/show_bug.cgi?id=83551
Reported-by: Simon Schubert <2+kernel@0x2c.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 6c6a5c4cc68c..546a17e8ad5b 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -1195,10 +1195,11 @@ next_desc: | |||
1195 | } else { | 1195 | } else { |
1196 | control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); | 1196 | control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); |
1197 | data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); | 1197 | data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); |
1198 | if (!control_interface || !data_interface) { | 1198 | } |
1199 | dev_dbg(&intf->dev, "no interfaces\n"); | 1199 | |
1200 | return -ENODEV; | 1200 | if (!control_interface || !data_interface) { |
1201 | } | 1201 | dev_dbg(&intf->dev, "no interfaces\n"); |
1202 | return -ENODEV; | ||
1202 | } | 1203 | } |
1203 | 1204 | ||
1204 | if (data_interface_num != call_interface_num) | 1205 | if (data_interface_num != call_interface_num) |