From: Greg Kroah-Hartman Date: Wed, 3 Oct 2012 19:55:51 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.0.45~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3dca6d45266ecd196a69cb3fcd678731bfb8b11;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: usb-ftdi_sio-add-tiao-usb-multi-protocol-adapter-tumpa-support.patch usb-gadget-dummy_hcd-fixup-error-probe-path.patch usb-host-xhci-fix-null-pointer-dereferencing-with-71c731a-for-non-x86-systems.patch usb-option-blacklist-qmi-interface-on-zte-mf683.patch usb-qcaux-add-pantech-vendor-class-match.patch --- diff --git a/queue-3.4/series b/queue-3.4/series index 638faf5497b..fc798edb3aa 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -2,3 +2,8 @@ vfs-dcache-fix-deadlock-in-tree-traversal.patch dm-handle-requests-beyond-end-of-device-instead-of-using-bug_on.patch dm-table-clear-add_random-unless-all-devices-have-it-set.patch dm-verity-fix-overflow-check.patch +usb-gadget-dummy_hcd-fixup-error-probe-path.patch +usb-option-blacklist-qmi-interface-on-zte-mf683.patch +usb-ftdi_sio-add-tiao-usb-multi-protocol-adapter-tumpa-support.patch +usb-qcaux-add-pantech-vendor-class-match.patch +usb-host-xhci-fix-null-pointer-dereferencing-with-71c731a-for-non-x86-systems.patch diff --git a/queue-3.4/usb-ftdi_sio-add-tiao-usb-multi-protocol-adapter-tumpa-support.patch b/queue-3.4/usb-ftdi_sio-add-tiao-usb-multi-protocol-adapter-tumpa-support.patch new file mode 100644 index 00000000000..086353a9fa6 --- /dev/null +++ b/queue-3.4/usb-ftdi_sio-add-tiao-usb-multi-protocol-adapter-tumpa-support.patch @@ -0,0 +1,54 @@ +From 54575b05af36959dfb6a49a3e9ca0c2b456b7126 Mon Sep 17 00:00:00 2001 +From: Antonio Ospite +Date: Sun, 23 Sep 2012 09:57:25 +0200 +Subject: USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support + +From: Antonio Ospite + +commit 54575b05af36959dfb6a49a3e9ca0c2b456b7126 upstream. + +TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) is an FTDI FT2232H +based device which provides an easily accessible JTAG, SPI, I2C, serial +breakout. + +http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html +http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual + +FTDI FT2232H provides two serial channels (A and B), but on the TUMPA +channel A is dedicated to JTAG/SPI while channel B can be used for +UART/RS-232: use the ftdi_jtag_quirk to expose only channel B as +a usb-serial interface to userspace. + +Signed-off-by: Antonio Ospite +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 2 ++ + drivers/usb/serial/ftdi_sio_ids.h | 5 +++++ + 2 files changed, 7 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -584,6 +584,8 @@ static struct usb_device_id id_table_com + { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_TAVIR_STK500_PID) }, ++ { USB_DEVICE(FTDI_VID, FTDI_TIAO_UMPA_PID), ++ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + /* + * ELV devices: + */ +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -517,6 +517,11 @@ + */ + #define FTDI_TAVIR_STK500_PID 0xFA33 /* STK500 AVR programmer */ + ++/* ++ * TIAO product ids (FTDI_VID) ++ * http://www.tiaowiki.com/w/Main_Page ++ */ ++#define FTDI_TIAO_UMPA_PID 0x8a98 /* TIAO/DIYGADGET USB Multi-Protocol Adapter */ + + + /********************************/ diff --git a/queue-3.4/usb-gadget-dummy_hcd-fixup-error-probe-path.patch b/queue-3.4/usb-gadget-dummy_hcd-fixup-error-probe-path.patch new file mode 100644 index 00000000000..17f2c317848 --- /dev/null +++ b/queue-3.4/usb-gadget-dummy_hcd-fixup-error-probe-path.patch @@ -0,0 +1,50 @@ +From 1b68a4ca2d038addb7314211d122fb6d7002b38b Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Sun, 19 Aug 2012 21:54:58 +0200 +Subject: usb: gadget: dummy_hcd: fixup error probe path + +From: Sebastian Andrzej Siewior + +commit 1b68a4ca2d038addb7314211d122fb6d7002b38b upstream. + +If USB2 host controller probes fine but USB3 does not then we don't +remove the USB controller properly and lock up the system while the HUB +code will try to enumerate the USB2 controller and access memory which +is no longer available in case the dummy_hcd was compiled as a module. + +This is a problem since 448b6eb1 ("USB: Make sure to fetch the BOS desc +for roothubs.) if used in USB3 mode because dummy does not provide this +descriptor and explodes later. + +Signed-off-by: Sebastian Andrzej Siewior +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/dummy_hcd.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/usb/gadget/dummy_hcd.c ++++ b/drivers/usb/gadget/dummy_hcd.c +@@ -2505,10 +2505,8 @@ static int dummy_hcd_probe(struct platfo + hs_hcd->has_tt = 1; + + retval = usb_add_hcd(hs_hcd, 0, 0); +- if (retval != 0) { +- usb_put_hcd(hs_hcd); +- return retval; +- } ++ if (retval) ++ goto put_usb2_hcd; + + if (mod_data.is_super_speed) { + ss_hcd = usb_create_shared_hcd(&dummy_hcd, &pdev->dev, +@@ -2527,6 +2525,8 @@ static int dummy_hcd_probe(struct platfo + put_usb3_hcd: + usb_put_hcd(ss_hcd); + dealloc_usb2_hcd: ++ usb_remove_hcd(hs_hcd); ++put_usb2_hcd: + usb_put_hcd(hs_hcd); + the_controller.hs_hcd = the_controller.ss_hcd = NULL; + return retval; diff --git a/queue-3.4/usb-host-xhci-fix-null-pointer-dereferencing-with-71c731a-for-non-x86-systems.patch b/queue-3.4/usb-host-xhci-fix-null-pointer-dereferencing-with-71c731a-for-non-x86-systems.patch new file mode 100644 index 00000000000..0e63f88deab --- /dev/null +++ b/queue-3.4/usb-host-xhci-fix-null-pointer-dereferencing-with-71c731a-for-non-x86-systems.patch @@ -0,0 +1,42 @@ +From 457a73d346187c2cc5d599072f38676f18f130e0 Mon Sep 17 00:00:00 2001 +From: Vivek Gautam +Date: Sat, 22 Sep 2012 18:11:19 +0530 +Subject: usb: host: xhci: Fix Null pointer dereferencing with 71c731a for non-x86 systems + +From: Vivek Gautam + +commit 457a73d346187c2cc5d599072f38676f18f130e0 upstream. + +In 71c731a: usb: host: xhci: Fix Compliance Mode on SN65LVPE502CP Hardware +when extracting DMI strings (vendor or product_name) to mark them as quirk +we may get NULL pointer in case of non-x86 systems which won't define +CONFIG_DMI. Hence susbsequent strstr() calls crash while driver probing. + +So, returning 'false' here in case we get a NULL vendor or product_name. + +This is tested with ARM (exynos) system. + +This patch should be backported to stable kernels as old as 3.6, that +contain the commit 71c731a296f1b08a3724bd1b514b64f1bda87a23 "usb: host: +xhci: Fix Compliance Mode on SN65LVPE502CP Hardware" + +Signed-off-by: Vivek Gautam +Signed-off-by: Sarah Sharp +Reported-by: Sebastian Gottschall (DD-WRT) +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -470,6 +470,8 @@ static bool compliance_mode_recovery_tim + + dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME); + dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR); ++ if (!dmi_product_name || !dmi_sys_vendor) ++ return false; + + if (!(strstr(dmi_sys_vendor, "Hewlett-Packard"))) + return false; diff --git a/queue-3.4/usb-option-blacklist-qmi-interface-on-zte-mf683.patch b/queue-3.4/usb-option-blacklist-qmi-interface-on-zte-mf683.patch new file mode 100644 index 00000000000..b05ab740403 --- /dev/null +++ b/queue-3.4/usb-option-blacklist-qmi-interface-on-zte-mf683.patch @@ -0,0 +1,31 @@ +From 160c9425ac52cb30502be2d9c5e848cec91bb115 Mon Sep 17 00:00:00 2001 +From: Bjørn Mork +Date: Wed, 19 Sep 2012 22:02:12 +0200 +Subject: USB: option: blacklist QMI interface on ZTE MF683 + +From: Bjørn Mork + +commit 160c9425ac52cb30502be2d9c5e848cec91bb115 upstream. + +Interface #5 on ZTE MF683 is a QMI/wwan interface. + +Signed-off-by: Bjørn Mork +Cc: Shawn J. Goff +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -870,7 +870,8 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) }, +- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff), ++ .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0159, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) }, diff --git a/queue-3.4/usb-qcaux-add-pantech-vendor-class-match.patch b/queue-3.4/usb-qcaux-add-pantech-vendor-class-match.patch new file mode 100644 index 00000000000..cf784dcdcbc --- /dev/null +++ b/queue-3.4/usb-qcaux-add-pantech-vendor-class-match.patch @@ -0,0 +1,49 @@ +From c638eb2872b3af079501e7ee44cbb8a5cce9b4b5 Mon Sep 17 00:00:00 2001 +From: Bjørn Mork +Date: Wed, 19 Sep 2012 22:02:03 +0200 +Subject: USB: qcaux: add Pantech vendor class match + +From: Bjørn Mork + +commit c638eb2872b3af079501e7ee44cbb8a5cce9b4b5 upstream. + +The three Pantech devices UML190 (106c:3716), UML290 (106c:3718) and +P4200 (106c:3721) all use the same subclasses to identify vendor +specific functions. Replace the existing device specific entries +with generic vendor matching, adding support for the P4200. + +Signed-off-by: Bjørn Mork +Cc: Thomas Schäfer +Acked-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/qcaux.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +--- a/drivers/usb/serial/qcaux.c ++++ b/drivers/usb/serial/qcaux.c +@@ -36,8 +36,6 @@ + #define UTSTARCOM_PRODUCT_UM175_V1 0x3712 + #define UTSTARCOM_PRODUCT_UM175_V2 0x3714 + #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715 +-#define PANTECH_PRODUCT_UML190_VZW 0x3716 +-#define PANTECH_PRODUCT_UML290_VZW 0x3718 + + /* CMOTECH devices */ + #define CMOTECH_VENDOR_ID 0x16d8 +@@ -68,11 +66,9 @@ static struct usb_device_id id_table[] = + { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) }, +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xff, 0xff) }, +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xfe, 0xff) }, +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfd, 0xff) }, /* NMEA */ +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfe, 0xff) }, /* WMC */ +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, /* DIAG */ ++ { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfd, 0xff) }, /* NMEA */ ++ { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfe, 0xff) }, /* WMC */ ++ { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xff, 0xff) }, /* DIAG */ + { }, + }; + MODULE_DEVICE_TABLE(usb, id_table);