From: Greg Kroah-Hartman Date: Wed, 14 Jan 2015 01:34:03 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.10.65~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=72371bd3664d22136246099f2b175e05f2d6d3dd;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: usb-cdc-acm-check-for-valid-interfaces.patch --- diff --git a/queue-3.10/series b/queue-3.10/series index 473ff86e64b..17870af0a49 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -25,3 +25,4 @@ driver-core-fix-unbalanced-device-reference-in-drivers_probe.patch alsa-usb-audio-extend-kef-x300a-fu-10-tweak-to-arcam-rpac.patch alsa-hda-using-uninitialized-data.patch alsa-hda-fix-wrong-gpio_dir-gpio_mask-hint-setups-for-idt-stac-codecs.patch +usb-cdc-acm-check-for-valid-interfaces.patch diff --git a/queue-3.10/usb-cdc-acm-check-for-valid-interfaces.patch b/queue-3.10/usb-cdc-acm-check-for-valid-interfaces.patch new file mode 100644 index 00000000000..fd598507cff --- /dev/null +++ b/queue-3.10/usb-cdc-acm-check-for-valid-interfaces.patch @@ -0,0 +1,38 @@ +From 403dff4e2c94f275e24fd85f40b2732ffec268a1 Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Fri, 7 Nov 2014 08:48:15 -0800 +Subject: USB: cdc-acm: check for valid interfaces + +From: Greg Kroah-Hartman + +commit 403dff4e2c94f275e24fd85f40b2732ffec268a1 upstream. + +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> +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/class/cdc-acm.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -1087,10 +1087,11 @@ next_desc: + } else { + control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); + data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); +- if (!control_interface || !data_interface) { +- dev_dbg(&intf->dev, "no interfaces\n"); +- return -ENODEV; +- } ++ } ++ ++ if (!control_interface || !data_interface) { ++ dev_dbg(&intf->dev, "no interfaces\n"); ++ return -ENODEV; + } + + if (data_interface_num != call_interface_num)